Université Cadi Ayyad.
Département d'Informatique. FSSM
Sécurité des systèmes et logiciels.
Firwalling et NAT sous Linux.
Atelier N°.5
Afficher votre firewall et interpréter les différents champs.
Flusher votre firewall.
1. Opérations sur une seule chaîne et sur la table filter:
Interdire tout paquet entrant
iptables –A INPUT –j DROP
Effacer la règle
iptables –t filter –D INPUT 1
1.1 Paramètre protocole
Interdire le protocole icmp
iptables –A INPUT -p icmp –j DROP
Effacer la règle
iptables –t filter –D INPUT 1 // numéro de la régle
1.2. Paramètre source
Interdire le protocole icmp provenant de localhost
Iptables –A INPUT –p icmp -s lo –j DROP
Effacer la règle
iptables –D INPUT 1
1.3. Chaîne OUTPUT paramètre destination
Interdire tout paquet à destination de localhost
Iptables –A OUTPUT –d lo –j DROP
Effacer la règle
1.4. Paramètre inversion
Interdire un paquet s'il ne provient pas de localhost
Iptable –A INPUT –s ! lo –j DROP
Effacer la règle
1.5. Paramètre interface d'entrée
Interdire tout paquet entrant par eth0
Iptable –A INPUT –i eth0 –j DROP
Effacer la règle
1.6. Paramètre interface de sortie
Interdire tout paquet sortant par eth0
Iptable –A OUTPUT –o eth0 –j DROP
Effacer la règle
Pr. M. A. EL KIRAM
1.7. Paramètre destination port
Interdire tout paquet à destination du port ftp
Iptables –A INPUT –p tcp -–dport 21 –j DROP
Effacer la règle
1.8. Paramètre source port
Interdire tout paquet sortant par eth0 dont le numéro de port source est inférieur à 1024
Iptable –A OUTPUT –o eth0 –p tcp –sport :1023 –J DROP
Iptable –A OUTPUT –o eth0 –p udp –sport :1023 –J DROP
Tester une connexion ftp
Effacer la règle et retester une connexion ftp
Iptable –D OUTPUT 1
1.9. Paramètre flag TCP
Interdire toute tentative d'initialisation de connexion TCP provenant de eth0
Iptables –A INPUT –i eth0 -p tcp –syn –sport :1023 –j DROP
Effacer la règle
1.10. Paramètre flag icmp
Interdire tout paquet entrant correspondant à un ping
Iptables –A INPUT -p icmp --icmp-type echo-request –j DROP
Effacer la règle
Interdire toute réponse à un ping
Iptables –A OUTPUT -p icmp --icmp-type echo-reply –j DROP
Effacer la règle
1.11 Parmètre de transit
Autoriser le transit des paquets provenant de l’adresse [Link] vers la machine [Link].
Iptable -A FORWARD –s [Link] –d [Link] –j ACCEPT
Autoriser le transit des paquets qui arrivent par l’interface eth1, dont l’adresse source est une
adresse du réseau [Link] et dont l’adresse de destination est une adresse du réseau
[Link] et dont le port de destination est le port 23
Iptable -A FORWARD -i eth0 –s [Link] /24 –d [Link] –p tcp --dport 23 –j
ACCEPT
1.12. Paramètre extension:
1.12.1. Extension mac
(attention on ne peut utiliser l'extension mac que sur les tables INPUT et PREROUTING)
Interdire tout paquet entrant par eth0 dont l'adresse mac n'est pas celle du voisin
Iptable –A INPUT –i eth0 –m mac –mac-source ! 00:00:00:11:AA:EE –j DROP
Effacer la règle
1.12.2. Extension limit
Positionner la police par défaut à DROP pour la chaîne INPUT
Iptable -P INPUT DROP
Ecrire une règle qui laisse passer 5 tentatives de connexion TCP puis qui n'en laisse passer plus
que 2 par minute
Pr. M. A. EL KIRAM
Iptables –A INPUT –p tcp –syn –m limit –limit-burst 5 –limit 2/minute –j ACCEPT
Faire de même avec les pings
Iptables –A INPUT –p icmp –icmp-type ping –m limit –limit-burst 5 –limit 2/minute –j
ACCEPT
Effacer la règle
1.13. Le suivi de connexion (ip_conntrack)
Positionnez les règles par défaut à DROP pour les chaînes INPUT, OUTPUT, FORWARD
Iptable –P INPUT DROP
Iptable –P OUTPUT DROP
Iptable –P FORWARD DROP
Autoriser tout paquet relatif à une connexion déjà établi ou en rapport avec une connexion déjà
établi en entrée
Iptable –A INPUT –m state –state ESTABLISHED,RELATED –j ACCEPT
Interdire tout paquet relatif à une connexion de type INVALID
Iptable –A INPUT –m state –state INVALID –j ACCEPT
Autoriser toutes les connexions qui sortent du LAN vers le net
Autoriser tout paquet créant une nouvelle connexion en sortie à destination du port 80
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
Que faut il modifier ici pour que l'on puisse naviguer sur le net ?
Effacer la règle
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
2. Le NAT :
[Pour cette partie nous travaillerons sur des machines ayant au minimum 2 interfaces réseau]
Modification de champ IP/TCP
Chaîne PREROUTING,POSTROUTING
Cible SNAT, DNAT, MASQUERADE
Effectuer une translation d’adresse pour tout ce qui traverse la passerelle en sortant par ppp0
iptables -t nat -A POSTROUTING –o ppp0 –j MASQUERADE
Restreindre la nat à une plage d’adresse
iptables -t nat -A POSTROUTING -s [Link]/24 –o ppp0 –j MASQUERADE
Positionnez les règles par défaut à DROP pour les chaînes INPUT, OUTPUT, FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
Pr. M. A. EL KIRAM
Créer une règle qui modifie tout paquet qui arrive via l'interface eth1 à destination du port 2222
afin que ce paquet ai dans son champ IP DST l'adresse [Link] et dans son champ TCP
DPORT 22
iptables -t nat -A PREROUTING –i eth1 -p tcp --dport 2222 -j DNAT --to-destination
[Link]:22
Que faut il faire pour que la translation fonctionne effectivement ? (dans un sens comme dans
l'autre)
iptables -A FORWARD -s [Link] -j ACCEPT
iptables -A FORWARD -d [Link] -j ACCEPT
Créer une règle qui altère le champ IP SRC de tout paquet sortant via l'interface eth1, en
remplaçant la valeur de ce champ par l'adresse IP de cette interface(eth1)
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source [Link]
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Autoriser tout trafic provenant de eth0 à être forwardé par notre machine
Iptabe –A FORWARD –i eth0 –j ACCEPT
Autoriser tout trafic de statuts ESTABLISHED,RELATED à être forwardé par notre machine
Iptable –A FORWARD –m state –state ESTABLISHED,RELATED –j ACCEPT
Pr. M. A. EL KIRAM