TP réseau firewall Linux TD Linux réseau parefeu Exercice firewall Linux

L’objectif de ce TP est de comprendre comment mettre en place un routeur pare-feu (firewall) entre un réseau privé et un réseau public (Internet) à l’aide des règles de filtrage disponibles dans le noyau Linux avec iptables.   


Les éléments nécessaires : aliasing + masquerading + iptables

L’aliasing d’adresses IP 

- But : simuler plusieurs interfaces réseau en donnant plusieurs adresses IP à la même interface physique
- La machine qui sera routeur n’a qu’une carte réseau mais doit posséder 2 adresses IP
- Il est possible sous Linux de définir plusieurs alias pour une interface :
         •  exemple pour eth0 les alias s’appelleront eth0:0, eth0:1, eth0:2, …
- Toutes les commandes standards peuvent s’utiliser sur les alias

Exemple : 

ifconfig eth0:0 192.168.40.1 netmask 255.255.255.0 up


Le camouflage IP (IP Masquerading)

Les paquets venant de réseaux privés (tels que définis dans la RFC 1918, c’est-à-dire 10.*.*.*,
172.16.*.* ou 192.168.*.*) ne sont pas routables (les routeurs sont configurés dans ce sens). 

Mais grâce à une spécificité du noyau Linux, le camouflage ou masquage (masquerading), activé sur un hôte qui va jouer le rôle de passerelle, toutes  les machines du réseau privé pourront accéder de manière invisible à Internet. La passerelle apparaîtra comme étant le seul système utilisant la connexion Internet. 

Le  camouflage réécrit les paquets lorsqu’ils passent par la passerelle, ce qui fait  qu’ils semblent toujours provenir de la passerelle elle-même. Il réécrit ensuite les réponses afin qu’elles semblent venir du destinataire originel.

Pour plus d’informations sur l’IP masquerading, vous pouvez consulter :
http://www.e-infomax.com/ipmasq

Le filtrage des paquets

Le programme iptables sert à manipuler les règles de filtrage de paquets au niveau du noyau Linux.
Il permet de configurer un pare-feu. iptables peut aussi être utilisé pour contrôler le camouflage (ce sera le cas pour ce TP).

Le noyau dispose de listes de règles appelées des  chaînes. Les règles  sont analysées les unes à la suite des autres dans l’ordre de leur écriture. Dès qu'une règle peut s’appliquer à un paquet, elle est déclenchée, et la suite de la chaîne est ignorée.

Les chaînes sont regroupées dans des tables. Il existe trois tables : 

•  Table NAT (Network Address Translation) : elle est utilisée pour la translation d’adresse ou la
translation de port. Deux types de chaînes s’appliquent à cette table :
-  PREROUTING 
-  POSTROUTING 

•  Table FILTER : c’est la table par défaut. Elle contient toutes les règles de filtrage. Trois types de chaînes s’appliquent à cette table :
-  INPUT 
-  OUTPUT 
-  FORWARD

•  Table  MANGLE : c'est la table qui contient les règles pour la modification de paquets. 
Elle est peu utilisée et ne fera pas l’objet du TP.


 

Un paquet rentrera toujours dans la machine via la  chaîne PREROUTING et sortira toujours de la machine via la chaîne POSTROUTING.  

Si le paquet doit être routé, il passera dans la chaîne FORWARD. Les chaînes INPUT et OUTPUT quant à elle serviront respectivement à placer des règles pour les paquets destinés au et émis par le firewall lui-même.

Chaque chaîne peut fonctionner selon trois politiques différentes :

 - ACCEPT : tous les paquets sont acceptés. 
 - DROP : les paquets sont refusés sans notification à l'émetteur des paquets. 
 - REJECT : les paquets sont refusés mais avec notification à l'émetteur des paquets.

A l'aide des règles affectables à chaque chaîne, il est possible d'autoriser, de restreindre ou d'interdire l'accès à différents services réseaux, et ainsi modifier la politique de filtrage des paquets de chaque chaîne.  

En fait, le filtrage de paquet fonctionne en analysant les entêtes des paquets. Si les données contenues dans l'entête d'un paquet correspondent à une règle alors la règle est appliquée (acceptation ou refus du paquet), sinon la règle suivante est examinée jusqu’à ce que toutes les règles de la liste affectée à chaque chaîne soient testées.

Pour plus de détails sur  iptables, consultez la documentation disponible (man iptables,
http://netfilter.samba.org).

Commandes utiles

- Configuration des adresses IP des interfaces par la commande ifconfig
Chaque interface est identifiée par un nom :
  • eth0 : première carte Ethernet
  • lo : loopback ou interface de bouclage

Liste des interfaces réseau configurées :  ifconfig 

Pour configurer une interface réseau :
ifconfig interface adresse_IP netmask masque_de_réseau up

Exemple :  

ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up

Configuration de la table de routage : la commande route

Affichage de la table de routage :  route -n

Pour ajouter une entrée de réseau à la table de routage :
route add -net adresse_réseau_IP netmask masque_de_réseau dev interface

Exemples : 

route add -net 127.0.0.0 netmask 255.0.0.0 dev lo
route add -net 192.168.10.0 netmask 255.255.255.0 dev eth0:0

Pour ajouter un routeur par défaut à la table de routage :
route add default gw adresse_IP_routeur


Exemple :  

route add default gw 192.168.10.1

- Configuration des règles de filtrage : iptables

Les opérations servant à gérer les chaînes entières (les 3 chaînes intégrées  INPUT,  OUTPUT et FORWARD ne peuvent pas être effacées) :



Les moyens pour manipuler les règles à l’intérieur d’une chaîne :



Les adresses IP source (option –s ou --source) et destination (option –d ou --destination) peuvent être spécifiées : 

•  en utilisant le nom complet, comme prevert.upmf-grenoble.fr
•  en utilisant l’adresse IP, comme 195.221.42.159
•  en indiquant un groupe d’adresse IP, comme 195.221.42.0/255.255.255.0 (c’est-à-dire toutes les adresses du réseau 195.221.42.0) ou en notation condensé 195.221.42.0/24
•  en désignant n’importe quelle machine : 0.0.0.0/0 ou 0/0

L’état  du paquet peut être spécifié en utilisant
l’option --state : 
•  ESTABLISHED : paquet associé à une 
connexion déjà établie 
•  NEW : paquet demandant une nouvelle                                   
connexion
•  INVALID: paquet associé à une connexion
inconnue
•  RELATED : nouvelle connexion mais liée,
idéal pour les connexions FTP


Le  protocole peut être spécifié en utilisant l’option  -p ou  --protocol. Ce peut être un nom parmi ICMP, TCP ou UDP (en majuscule ou minuscule) ou le nombre correspondant au protocole (respectivement 1, 6 et 17 cf /etc/protocols).

Lorsque TCP ou UDP est spécifié, un argument supplémentaire indique le  port  source (option --sport  ou  --source-port) ou le  port  destination (option  --dport  ou --destination-port). Il peut s’agir  

•  d’un seul port, comme --sport 80
•  de plusieurs ports (nécessite l’option  –m multiport), comme  –m multiport –-dport 137,139
•  d’un intervalle (inclusif) de ports indiqué par le caractère “:”, comme –-sport 1024:65535

La négation est spécifiée en utilisant le caractère “!”.

Pour les options restantes, consultez le manuel (man iptables).

------------------------------------------------------------------------------------------

>> Suivant : Mise en place de règles de filtrage d'un Firewall (Pare-feu) Sous Linux

                 
                           

Article plus récent Article plus ancien

Leave a Reply