M1 MIAGE - Réseaux et Protocoles - FireWall et Filtrage
Auteur(s):
Sébastien CHOPLIN
Avant tout, lisez les explications situées à cette URL:
http://www.commentcamarche.net/protect/firewall.php3
Exercice 1: Questions
- Quelle(s) couche(s) du modèle TCP/IP est(sont) concernée(s) par le filtrage
de port ?
- Si on met en place un filtre empêchant l'établissement de
socket vers l'extérieur sur le port 80, qu'est ce qu'on ne pourra plus
faire ?
- Si on met en place un filtre empêchant l'établissement de
socket entrant sur le port 80, qu'est ce qu'on ne pourra plus
faire ?
Exercice 2: iptable
Infos récupérées sur http://lea-linux.org/reseau/iptables.html.
IpTables est une application permettant de mettre en place un firewall
sous GNU/Linux. IpTables permet de faire du firewalling stateful (à
états), de la translation de port et d'adresse, du filtrage au niveau
2 et beaucoup d'autres choses que nous n'allons pas aborder comme le
"Mangle" ou modification des paquets à la volée.
IpTables s'utilise en ligne de commande, en utilisant plusieurs
tables (NAT,FILTER,MANGLE), nous n'allons nous intéresser qu'à la
table FILTER.
Cette table contient toutes les règles de filtrage, il existe 3 types
de chaînes:
- FORWARD pour les paquets passant par la station (lorsqu'elle joue
le rôle de routeur),
- INPUT pour les paquets entrant,
- OUTPUT pour les paquets sortants.
Les actions disponibles sont: ACCEPT, REJECT, LOG ....
NB: Les règles sont appliquées dans l'ordre, par défaut
la table FILTER est vide et donc accepte tout.
Syntaxe globale:
iptables -A nom_de_la_chaine -p protocole ... -j action (ACCEPT/REJECT/LOG)
Exemple: rejeter les connexion sur le port 80 vers l'extérieur
iptables -A OUTPUT -p tcp --dport 80 -j REJECT
Remarque: --dport concerne le port destination, on peut aussi utiliser
--sport pour utiliser le port source
Exemple: Filtrage IP: garder en mémoire (log) chaque accès à la station depuis la machine
d'IP 10.42.42.42:
iptables -A INPUT --source 10.42.42.42 -j LOG
On peut voir ces accès en tapant la commande
dmesg
Exemple: Filtrage d'adresse MAC: interdiction à l'adresse
42.42.AA.42.42.AA d'avoir une communication entrante vers notre station:
iptables -A INPUT -m mac --mac-source 42:42:AA:42:42:AA -j REJECT
Pour vide une chaîne:
iptables -F INPUT (ou OUTPUT ou FORWARD)
(-F pour "flush")
Pour liste une chaîne:
iptables -L INPUT (ou OUTPUT ou FORWARD)
Pour plus d'infos sur iptables: entre
autres: le
HOW-TO en français
- Démarrez le serveur web apache sur votre station avec la
commande
apachectl start
-
Mettez en place une règle empêchant (action REJECT) votre voisin de droite d'accéder à
votre port 80.
-
Mettez en place une règle mémorisant (action LOG) les connexions de
votre voisin de droite sur le port 80.
-
Listez les chaînes. Vérifiez avec vos voisins que les règles sont
bien appliquées.
- Regardez les derniers
messages de connexion (dans le cas de l'action LOG) sur votre machine avec la
commande:
dmesg
- Vider toutes les chaînes.
- Interdisez toutes les communications entrantes, sur tous les
protocoles. Que ce passe-t-il si l'un de vos camarades "ping" votre
station ?
- Mettez en place des règles pour que seul le protocole utilisé par
ping soit autorisé (attention à l'ordre des règles, elles sont
appliquées de haut en bas par rapport à l'affichage de iptables -L)