Firewall Netfilter de Linux
Configuration de Netfilter
2) Configuration de Netfilter : cas général
Ce chapitre ne décrit pas le fonctionnement des différentes règles de Iptables (voir les annexes) mais expose les différentes fonctionnalités utilisées au travers de Iptables pour notre projet.
Configuration d’une passerelle:
Une passerelle est un périphérique connecté à plusieurs réseaux TCP/IP physiques, capable de router. Un firewall doit avoir cette fonction de passerelle tout en étant capable de router les paquets.
Sur Linux, il faut préciser au système l’activation du routage de paquets ; par défaut cette option est désactivée.
Il y a 2 méthodes pour activer la fonctionnalité de passerelle (forwarding en anglais) IP:
- Lancer un cat /proc/sys/net/ipv4/conf/all/forwarding. Si la commande renvoie 1, le forwarding est activé, sinon faire un echo 1 > /proc/sys/net/ipv4/conf/all/forwarding. Cette solution est volatile puisqu'elle n'est plus prise en compte après un redémarrage.
- Ouvrir le fichier /etc/sysctl.conf et vérifier que la variable net.ipv4.ip_forward est positionnée sur 1. La modification du fichier permet une prise en compte permanente.
Pour configurer le routage, linux dispose de la commande route. Par exemple :
#Cette commande ajoute la route par défaut
route add default gw x.x.x.x
#Ajoute une route
route add y.y.y.y eth0
|
Politique de filtrage:
En firewalling, il existe 2 politiques :
1) Tout ce qui n’est pas explicitement autorisé est interdit. (Politique restrictive)
2) Tout ce qui n’est pas explicitement interdit est autorisé. (Politique permissive)
|
En général, on applique la politique restrictive :
#Politique par defaut (restrictive)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
|
La politique par défaut s’applique comme la dernière règle en vigueur ; ainsi on peut, grâce aux règles qui précèdent, ne faire passer que les paquets explicitement autorisés.
Remarque :
L’opérateur DROP supprime le paquet sans préavis. On peut le remplacer par l’opérateur REJECT qui envoie un paquet ICMP host-unreachable pour prévenir l’expéditeur. Le problème est que le fait d’utiliser des icmp peut rendre le système sensible à des attaques de type smurf (l’attaquant utilise en rebond notre firewall en lui envoyant un grand nombre de paquets avec l’adresse source de la cible par spoofing, et donc notre firewall va répondre à chacun des paquets ce qui provoquera à coup sûr un Deny of Service imparable sur la cible).
Découpage des flux:
Une chaîne est un ensemble de règles. Iptables peut alors identifier des paquets qui correspondent à certains critères, et les détourner vers la chaîne appropriée.
#Exemple d’utilisation
#Creation de la chaine
iptables –N LOGDROP
#Description de la chaîne
iptables -A LOGDROP -j LOG --log-prefix "Paquets DROP FW DCMAT :"
iptables -A LOGDROP -j DROP
#Jumps des flux
iptables –A INPUT –j LOGDROP
iptables –A OUTPUT –j LOGDROP
iptables –A FORWARD –j LOGDROP
|
Prenons le cas d’un simple firewall à 2 interfaces : LAN, WAN. On peut identifier les flux tel que:
Dans cet exemple nous distinguons 12 flux TCP/UDP. Si l’on considère que les 2 flux ETH1 et ETH2 sont les mêmes, il reste 8 flux à gérer pour FW :
- LAN2WAN (se lit LAN à WAN en anglais)
- WAN2LAN
- LAN2FW
- WAN2FW
- FW2LAN
- FW2WAN
- WAN2WAN
- LAN2LAN
Le flux FW2FW sera traité avec l’interface lo.
Le fichier de configuration de netfilter avec la gestion des flux LAN/WAN/FW est à la page suivante.
Remarque : Un firewall possédant une zone démilitarisée a une gestion similaire. Par contre, le nombre de chaînes à paramétrer sera beaucoup plus important.
Fichiers de configuration du firewall de test du LAN 192.168.0.0/16 :
#Regles du firewall de test DCMAT
#variables
intlan="eth0"
intwan="eth1"
reslan="192.168.0.0/16"
adfwlan="192.168.x.x/32"
adfwwan="y.y.y.y/32"
any="0.0.0.0/0"
#Vidage des filtres par defaut et des chaines utilisateurs
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
#Definition de la politique de securite (restrictive)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Pour acceder au firewall
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#Creation des chaines
iptables -N LAN2WAN
iptables -N WAN2LAN
iptables -N LAN2FW
iptables -N WAN2FW
iptables –N FW2LAN
iptables –N FW2WAN
iptables -N WAN2WAN
iptables -N LAN2LAN
#Jumps des flux
iptables -A FORWARD -s $reslan -d ! $reslan -i $intlan -o $intwan -j LAN2WAN
iptables -A FORWARD –s ! $reslan -d $reslan -i $intwan -o $intlan -j WAN2LAN
iptables -A INPUT -s $reslan -i $intlan -j LAN2FW
iptables -A INPUT –s ! $reslan -i $intwan -j WAN2FW
iptables -A OUTPUT -d $reslan -o $intwan -j FW2LAN
iptables -A OUTPUT -d ! $reslan -o $intlan -j FW2WAN
iptables -A FORWARD –s ! $reslan -d ! $reslan -i $intwan -o $intwan -j WAN2WAN
iptables -A FORWARD –s $reslan -d $reslan -i $intlan -o $intlan -j LAN2LAN
#Gestion des flux
iptables -A LAN2WAN -j ACCEPT
iptables -A WAN2LAN -j ACCEPT
iptables –A LAN2FW -j ACCEPT
iptables –A WAN2FW -j ACCEPT
iptables –A FW2LAN -j ACCEPT
iptables –A FW2WAN -j ACCEPT
iptables -A LAN2LAN –j ACCEPT
iptables –A WAN2WAN - DROP
|
Pour les flux ICMP, on peut les traiter avec des chaînes particulières :
###########################################################################
#Regles de gestion du protocole ICMP
###########################################################################
#Acceptation du protocole ICMP
iptables -A ICMP-ACC -p icmp -j ACCEPT
###########################################################################
#Filtrage du protocole ICMP
#echo-reply
iptables -A ICMP-FIL -p icmp --icmp-type 0 -j LOGDROP
#destination-unreachable
iptables -A ICMP-FIL -p icmp --icmp-type 3 -j ACCEPT
#source-quench
iptables -A ICMP-FIL -p icmp --icmp-type 4 -j ACCEPT
#echo-request
iptables -A ICMP-FIL -p icmp --icmp-type 8 -j LOGDROP
#Time-exceed
iptables -A ICMP-FIL -p icmp --icmp-type 11 -j ACCEPT
#Parameter-problem
iptables -A ICMP-FIL -p icmp --icmp-type 12 -j ACCEPT
|
Il est nécessaire de conserver en partie le protocole ICMP. Ce protocole est utile pour résoudre les éventuels problèmes réseaux. Le chapitre suivant propose une autre solution pour la gestion du protocole ICMP.
|
Précédent - Configuration de Netfilter - Suite
|
|
|