đź•’ : 3 h maximum
- Utilisation d’iptables le firewall de Linux qui permet de gĂ©rer et protĂ©ger une machine
ufw s’appuie sur iptables pour faire le firewall sous linux
Sur Linux, la vĂ©ritable capacitĂ© de pare-feu vient du sous-système netfilter intĂ©grĂ© au noyau. iptables est l’outil en ligne de commande qui dialogue directement avec netfilter, tandis que UFW (Uncomplicated Firewall) a Ă©tĂ© conçu pour faciliter la configuration d’iptables avec des commandes plus simples.
Dans ce tp on va s’intéresser à iptables .
Il faut récupèrer la salle du tp précèdent.
Avec m1 à m3 réseau R0 et m4 à m6 réseau R1
Nous disposons de m7 qui Ă iptables d’installĂ© , le firewall linux !
Le protocole de ping « icmp » sous contrôle
m7 ou il y a iptables va bloquer les requêtes icmp et les rétablir .
on testera le ping de m7 depuis m1, m2 Ă m6
Pour interdire icmp (ping)
iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
on peut vĂ©rifier les rĂ©gles iptables avec l’option -L
root@m7:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT icmp -- anywhere anywhere icmp echo-request reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@m7:~# iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
root@m7:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT icmp -- anywhere anywhere icmp echo-request reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Pour enlever la règle (Delete) , autoriser le ping
iptables -D INPUT -p icmp --icmp-type echo-request -j REJECT
root@m7:~# iptables -D INPUT -p icmp --icmp-type echo-request -j REJECT
root@m7:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@m7:~#
Pourquoi interdire le protocole icmp sur une machine (en cybersécurité)
iptables possède des règles, OUTPUT (SORTIE), INPUT (ENTREE) et FORWARD (a travers)
root@m7:~# iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
root@m7:~# iptables -L OUTPUT
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@m7:~# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT icmp -- anywhere anywhere icmp echo-request reject-with icmp-port-unreachable
root@m7:~# iptables -L FORWARD
Chain FORWARD (policy ACCEPT)
target prot opt source destination
root@m7:~#
on voit ici qu’une règle en entrĂ©e concernant icmp est rejetĂ©e !
ssh vers m7
Nous allons nous connecter sur m7 depuis m1 Ă m6, on va se concentrer sur m1
machine m7
sur la machine m7 vérifier que le service sshd est bien activé ! (serveur ssh)
root@m7:~# systemctl status ssh
â—Ź ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2026-03-30 11:09:33 CEST; 1h 23min ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 506 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 509 (sshd)
Tasks: 1 (limit: 1115)
Memory: 6.6M
CPU: 779ms
CGroup: /system.slice/ssh.service
└─509 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
on voit ici que c’est ok !

machine m1 ou mx !
les machines m1 Ă m6 sont de simple cliente et doit disposer de ssh client , le cas de m6 ci-dessous

# on utilise la fonction whereis
whereis ssh # et on vois que le client ssh est bien disponible
bloquons m6
root@m7:~# iptables -A INPUT -s 192.168.1.6 -p tcp --dport 22 -j DROP
root@m7:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT icmp -- anywhere anywhere icmp echo-request reject-with icmp-port-unreachable
DROP tcp -- 192.168.1.6 anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@m7:~#
pour supprimer cette règle:
iptables -D INPUT -s 192.168.1.6 -p tcp --dport 22 -j DROP
une autre possibilitĂ© d’enlever les règles par ligne
iptables -L INPUT --line-numbers -n # en déduire le numéro de ligne
iptables -D INPUT <numéro> # supprimer la règle
Faire un test et proposer des exemples
Bloquer une ip
iptables -A INPUT -s 192.168.1.6 -j DROP
Autoriser internet sur tous les postes (nat)
Pour permettre le partage internet il faut activer le bit de net.ipv4.ip_forward=1
sysctl -w net.ipv4.ip_forward=1
pour le rendre définitif à chaque reboot
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
ou dé-commenter la ligne du fichier /etc/sysctl.conf

iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
tester et valider votre partage
Autoriser le partage internet que sur R0
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o enp0s3 -j MASQUERADE
Autoriser le partage internet que sur R1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o enp0s3 -j MASQUERADE
Vérifier les règles , et supprimer la règle autorisant R0 à accéder à internet.
root@m7:~# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o enp0s3 -j MASQUERADE # R0 pas R1
root@m7:~# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1 84 MASQUERADE all -- * enp0s3 192.168.0.0/24 0.0.0.0/0
root@m7:~# iptables -t nat -D POSTROUTING 1
root@m7:~# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
root@m7:~#
Bloquer sur le réseau local une adresse MAC
iptables -A INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP
Tester de bloquer la mac adresse de la machine m2
Sauvegarder les règles iptables
Sous Debian il est plus simple d’utiliser iptables-persistent :
# Debian / Ubuntu
apt update
apt install iptables-persistent
quand on veut mettre à jour les règles qui sont activées sur la machine il existe la commande : netfilter-persistent save
netfilter-persistent save
Quelques scripts pour aller plus vite et faire des tests
mettre net.ipv4.ip_forward=1
sysctl -w net.ipv4.ip_forward=1
partage internet pour tout le réseau local
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
partage internet pour R0 seulement
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o enp0s3 -j MASQUERADE
partage internet pour R1 seulement
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o enp0s3 -j MASQUERADE
liste des POSTROUTING nat
iptables -t nat -L POSTROUTING -n --line-numbers
effacer la ligne 1 postrouting
iptables -t nat -D POSTROUTING 1
La machine m7 à la fin est opérationnelle :

Le bit net.ipV4_ip_forward est toujours Ă 1 (passerelle)
Et le partage nat d’internet est bien rĂ©alisĂ© .
