Firewalling et NAT sous LINUX Bouabid Amine Formation TRANSFER 21-25 SEPT 2002
Types de firewall Filtres de paquet: Filtres de contenu: La décision de filtrage basé uniquement sur les valeurs des champs de l’entête IP (adresse source/destination, port source/destination). Exemple : les filtres de linux. Filtres de contenu: la décision de filtrage est basé sur le contenu des informations reçus (le nom d’un site web, le contenu d’une site web, les commandes smtp etc..). Exemple : ISA server de microsoft Filtre hybride: La décision est basé et sur l’entête du paquet IP ,et sur le contenu. Exemple : CheckPoint, Cisco PIX.
Le filtrage des paquets Le filtrage des paquets consiste à capturer les paquets en entrée, analyser juste l’entête de chaque paquet ensuite décider du sort de se paquet. Le filtre peut décider de: Éliminer le paquet (DROP, REJECT). Remettre le paquet à la machine local (ACCEPT). Router le paquet vers une interface de sortie (FORWARD).
Pourquoi Filtrer Contrôle: Sécurité: Contrôler le trafic en destination ou qui est originaire de certaines parties du réseau. Sécurité: Lorsque la machine est l’interface entre le réseau local et Internet, le filtrage permet de sélectionner le trafic entrant et sortant en se basant sur les services (numéro de port) et l’origine du traffic (adresse IP).
Le filtrage sous Linux Le filtrage sous linux est intégré au niveau du noyau sous forme de modules. Les différents programmes de filtrage de linux: IPFWADM: à partir du noyau 1.1.x IPCHAINS: à partir du noyau 2.2.x IPTABLES: à partir du noyau 2.4.x
Comment les paquet traversent les filtres Les paquets traversent 3 point principal qu’on appelle chaîne de filtrage: INPUT (entrée) OUTPUT (sortie) FORWARD (réexpédition). Processus local input output Décision de routage Décision de routage Forward entrée sortie
Les chaînes de filtrage Chaque point dans le schéma correspond à une « chaîne de filtrage » Une chaîne de filtrage est une suite de « règles » de filtrage. Une règle analyse l’entête du paquet et décide s’il doit être remis au processus local, ou s’il doit routé, ou éliminé. Une règle particulière dite règle par défaut, est consulté si aucune règle ne correspond au paquet capturé.
Traitement des paquets reçus Lorsqu’un paquet est reçu, le noyau « regarde » dans l’adresse destination pour déterminer s’il est destinée à la machine local ou une autre machine. Dans le premier cas il sera remis à la chaîne Input. S’il n’est pas filtré les processus l’attendant vont le recevoir. Dans le deuxième cas : si la machine est autorisée à faire du routage il sera remis a la chaîne Forward, sinon le paquet sera éliminé. Au niveau de la chaîne Forward si le paquet est accepté il sera remis a la chaîne output. Enfin un processus local qui veut émettre des paquets, les paquets seront remis a la chaîne output.
Format d’une règle iptables -[ADC] Chain rule-specification action [options] Iptables est le nom de la commande. -A : ajouter une règle. -D : enlever une règle. -C : remplacer un règle. Chain = input|output|forward Spécification de la règle: adresse et port source/destination type de protocole (ip, udp, tcp, icmp) et interface. Action = ACCEPT|REJECT|DENY etc..
Spécifications du filtrage Spécification des adresses source et destination: L’adresse source avec l’option: -s adresse/prefix L’adresse destination avec l’option : -d adresse/prefix. Par exemple: iptables -A INPUT -s 0/0 -j DROP 0/0 désigne toutes les adresses. Iptable –A output –s 192.168.0.0/24 –d 10.0.0.0/8 –j ACCEPT Accepte le trafic qui provient des adresses 192.168.0.0 / 255.255.255.0 vers les adresses 10.0.0.0 / 255.0.0.0
Spécifications du filtrage 2- spécification du numéro de port: Avec les options –s et –d il est possible de spécifier le numéro de port apres l’adresse et son masque Exemple iptables –A –s 192.168.0.0/24 0/0 80 –j ACCEPT Accepte toutes les connexions http a partir du réseau 192.168.0.0/24. 3- Spécification de l’inversion Des options comme –s et –d peuvent avoir leur argument précédé par ! Ce qui signifie prendre l’inverse de la valeur spécifié Exemple Iptables –A –s ! 192.168.0.0/24 0/0 –j REJECT Toutes les adresses différentes de 192.168.0.0/24 sont rejetés par le noyau.
Spécifications du filtrage 4- Spécification du protocole: L’option –p <protocole> permet de définir le protocole donnée: tcp, udp, ip, ou icmp . Exemple: Iptable –A input –p tcp –s 0/0 -j ACCEPT Iptable –A output –p icmp –s 0/0 –j REJECT 5-Spécification d’une interface: Les options –i ou –o pour interface input ou interface en output. Iptable –A input –o eth0 -s 0/0 –j DENY Iptable –A forward –i ppp0 –d 0/0 –j ACCEPT
Le NAT Le NAT pour Network Address Translation. Permet de faire une correspondance entre une adresse IP publique et une adresse privé et inversement. Deux types NAT : statique et dynamique. Le NAT statique permet de faire correspondre une adresse IP publique à une seule adresse privé. Le NAT dynamique permet de faire correspondre une seule adresse publique à plusieurs adresses privé.
Fonctionnement du NAT Le NAT permet de cacher l’existence d’une machine ou d’un ensemble de machines qui ont des adresses privés. Le NAT statique permet d’utiliser une seule adresse publique par adresse privé. Ça sert a protéger un serveur derrière un Firewall. On ne laisse passer que le trafic autorisé. Une requête émise par un serveur NATé passe par le proxy, qui va changer l’adresse source avec l’adresse publique spécifié pour le serveur. Lorsque la réponse arrive de l’extérieur, le proxy effectue le travail inverse et réécrit l’adresse de destination.
Le NAT dynamique Le NAT dynamique permet d’utiliser une seule adresse IP publique pour tout le réseau local. Le serveur utilise les numéro de port pour faire la translation Chaque requête est identifié par une adresse IP et un numéro de port.
Le NAT dynamique: La table du NAT Adresse privé Num Port destination Adresse publique source Num port du NAT Adresse destination 192.168.1.60 80 213.179.170.1 1012 209.73.164.90 192.168.1.2 25 3022 217.12.3.11 192.168.1.3 23 20 207.46.197.113 192.168.1.4 5005 148.87.9.44 192.168.1.5 1234 199.232.41.10 192.168.1.6 21 6500 63.209.80.235 192.168.1.7 110 5000 207.68.172.246
Iptables et NAT PREROUTING FORWARD POSTROUTING INPUT OUTPUT PROCESSUS LOCAL
Iptables et NAT Le Masquerading est un cas particulier du NAT. Le changement des adresses se fait a la sortie de la machine local, d’ou l’utilisation de la chaîne POSTROUTING. Syntaxe : iptables -t nat -A POSTROUTING -o <interface> -j MASQUERADE. Exemple : iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE.