GuiguiAbloc

Tag: iptables

Gestion des adresses Ip dynamiques avec Iptables

par guiguiabloc le 19 déc, 2008, sous linux, réseau, sécurité

Pour être honnête avec vous, j’avais pensé intitulé ce billet « Ouvrez, ouvrez la cage aux oiseaux… ».

Mais après avoir osé « PKI, PKI, oh ! PKI, PKI, ah! » sur l’air de « Rosalie », je me se suis dit que vous alliez sûrement vous poser de sérieuses questions sur ma santé mentale et surtout sur mes goûts musicaux :mrgreen: (bien que je n’ai rien de personnel contre Carlos et Pierre Perret)

Bref, donc le but de ce billet est de résoudre un problème fréquent.

Vous avez un beau serveur dédié Linux (ou un pote vous en prête un) et vous contrôler bien entendu dessus les accès réseau via Iptables.

D’ailleurs, vous utilisez peut-être même un superbe script déjà tout fait dans le genre de KHARON (comment cela je fais de la pub ???)

Vous disposez a votre domicile d’une adresse IP dynamique et bien entendu, pour fixer cela en dur dans Iptables, bah c’est la cata…

Vous jonglez donc avec Fail2ban et/ou des règles du style :


Iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60
--hitcount 4 -j DROP

Voici donc une petite bidouille bien proprette pour insérer votre ip dynamique dans iptables (oublier les résolutions DNS en règles Iptables, cela ne marche pas…) et autoriser l’accès en SSH depuis votre ip dynamique.

Je suppose bien évidemment que vous utilisez déja un service comme DYNDNS ou une entrée de type DYNHOST chez OVH par exemple (ou autre hein, je suis pas sectaire).

Bref, un service permettant d’avoir un nom d’hôte pour votre ip dynamique et qui est mis à jour à intervalle régulier.

Tout d’abord, il faut créer une chaine que nous appelerons « mon_ip_maison » par exemple et l’insérer au début de la chaine INPUT d’iptables.

A rajouter donc dans votre script Iptables ou à la main comme ceci :

iptables -N mon_ip_maison
iptables -I INPUT 1 -j mon_ip_maison

Reste à écrire le joli script de mise à jour que j’appellerais ici : Wesh_Gros_C_est_moi.sh

(euh vous pouvez changer le nom hein…)

#!/bin/bash
#
# variables generales
dyndns=guiguiabloc.dyndns.com
ipfile=/root/ipfile
 
# Recuperation de l'ip
IP=`/usr/bin/dig +short $dyndns | /usr/bin/tail -n 1`
if [ "${#IP}" = "0" ]; then
    echo "Echec de la recuperation de l'ip"
    exit
fi
 
ANCIENNEIP=""
if [ -a $ipfile ]; then
    ANCIENNEIP=`cat $ipfile`
fi
 
# on enregistrer la nouvelle ip
echo $IP>$ipfile
 
echo "Mise a jour d'iptables"
if [ "${#ANCIENNEIP}" != "0" ]; then
    echo "Suppression de l'ancienne règle ($ANCIENNEIP)"
    /sbin/iptables -D mon_ip_maison -s $ANCIENNEIP/32 --dport 22 -j ACCEPT
fi
echo "Insertion de la nouvelle règle ($IP)"
/sbin/iptables -A mon_ip_maison -s $IP/32 --dport 22 -j ACCEPT

Ne reste qu’a le lancer toutes les 10 minutes via la crontab :

*/10 * * * * /root/Wesh_Gros_C_est_moi.sh   2>&1

Magique :-D

Vous trouverez le script de Dave Horner ICI

2 Commentairess :, , plus...

Vous cherchez quelque chose ?

Utilisez le formulaire ci-dessous:

Vous ne trouvez pas ce que vous voulez ? Laisser un Commentaire sur un Billet !

Special Copinage!

Quelques sites amis ou recommandés...