Firewall
lundi 17 mai 2004, par
Configurer un pare-feu sous Linux à l’aide de l’excellent outil WEBMIN.
voir : WEBMIN : Généralités
Installer le paquetage iptables.
urpmi iptables
Configuration avec webmin/Réseau/Linux Firewall

Netfilter dans la pile IP :

IPTABLES est configurable à l’aide de trois tables :
Table FILTER (filtrage)
Table NAT (Translations d’adresses / Masquage)
Table MANGLE (marquage des paquets)
Pour notre Firewall, nous utiliserons la table FILTER (on la sélectionne puis on clique sur showing iptables)

Les filtres sont traités dans l’ordre.
ACCEPT : Paquet accepté
DROP : Paquet jeté (poubelle)
LOG : Enregistrement sur /var/log/messages
USERSPACE : Espace utilisateur (requiert module IP_QUEUE) exploité par exemple par fireflier (pare-feu applicatif)
REJECT : renvoi d’un paquet de rejet (dans certains cas de figure uniquement ex : ICMP)
RETURN, REDIRECT, MASQUERADE, ....
Configuration avec Webmin :
Pour les cibles qui ne sont pas directement sélectionnables dans l’interface de Webmin (autre que ACCEPT, DROP, USERSPACE), on sélectionne Run chain puis on rajoute le nom de la cible (par exemple LOG) à droite dans la zone de texte.
Interfaces (ppp0 pour liaison modem, eth0 pour première interface ethernet, lo pour local...)
ports (ex : 53=DNS)
Protocoles (UDP, TCP, ICMP, ...)
Adresses IP (source/destination)
Configuration avec Webmin :
Interfaces, adresses et choix du protocole à filtrer :
On peux spécifier un masque de la manière suivante :
127.0.0.0/255.0.0.0 (réseau 127.0.0.0 avec un masque à 255.0.0.0).
Filtres TCP et UDP :
On peux spécifier plusieurs ports en les séparants par une virgule. Il est possible aussi de définir une plage de port (port range).
Filtres ICMP :

De plus, Netfilter est capable de faire un suivi de connexions. Il y a 3 états :
NEW Nouvelle connexion
ESTABLISHED Connexion établie
RELATED Connexion ayant une relation avec une connexion existante
INVALID ne répond à aucun des 3 états précédents
Configuration avec Webmin :

Pour chaques options désirées, on a le choix entre :
Ignored (On ignore cette option)
Equals (Egal)
Does not equals (Non égal)
Exemple :
Nous voulons accepter tous les pings (protocole ICMP) sauf ceux venant d’internet :
If protocol is ICMP and input interface is not ppp0 and ICMP type is echo-request -> ACCEPT
Ce qui se traduit par : Si l’interface d’entrée est différente de ppp0 (internet) ET Le protocole est ICMP ET le type de paquet ICMP est demande d’echo (ping) ALORS ON ACCEPTE LE PAQUET.
Pour le suivi de connexions, vérifiez que les modules ip_conntrack, ip_conntrack_ftp (pour le ftp) et ip_conntrack_irc (pour l’IRC) soient chargés :
[root@villou villou]# lsmod|grep conntrack
ip_conntrack_ftp 72116 0
ip_conntrack 32432 4 ipt_MASQUERADE,ipt_state,iptable_nat,ip_conntrack_ftp
sinon, chargez les modules :
[root@villou villou]# modprobe ip_conntrack_ftp
Pour qu’ils soient chargés à chaque démarrage, il faut rajouter les modules manquants dans le fichier :
/etc/modules pour un noyau 2.4
/etc/modprobe.preload pour un noyau 2.6
Pour chaques tables, définir une action par défaut (si aucun critère ne s’applique). Je vous conseille de mettre cette règle à DROP (poubelle)
Paquets entrant (d’une interface vers processus locaux) :

Paquets en transit (d’une interface vers une autre interface = passerelle) :
![]()
Paquets sortant (processus locaux vers une interface) :

Possibilité de créer ses propres cibles, par exemple on veut enregistrer les paquets suspects dans un journal (log) puis les jeter (drop) :
On créé une cible que nous appelerons par exemple LOG_DROP qui aura comme cible LOG puis DROP. On utilise pour cela add a new chain named :
![]()
Les "LOG" sont enregistrés dans /var/log/messages.
Vous pouvez utiliser la commande suivante dans une console (en tant que root) pour visualiser les "logs" au fil de l’eau :
tail -f /var/log/messages
Service : /etc/init.d/iptables {start|stop|restart|condrestart|status|panic|save}
Fichier de configuration : /etc/sysconfig/iptables
Articles connexes :
article 24
Visiter l’excellent site de Christian Caleca pour des informations très complètes sur IPTABLES : http://christian.caleca.free.fr
16/05/2004