iptables est un firewall de Linux. La configuration est vaste car en matière de réseau il y a différents types de protocole. Par exemple si vous pingez une adresse IP c’est le protocole ICMP qui est en jeu. nftables est censé remplacer iptables.
Contenu
Installation de iptables
apt install iptables // connaitre la version de iptables iptables --version
Concepts clé d’iptables
- Tables, les 4 tables filter, nat, mangle,raw
- Chains INPUT OUTPUT, FORWARD
- Policies comportement par défaut d’une chaine (ACCEPT or DROP)
- Rules règles appliquées au réseau
Lister et voir les règles
Pour voir les règles tapez la commande suivante :
iptables -L Pour lister les règles avec leur numéro : iptables -L --line-numbers
La politique par défaut c’est quoi?
Imaginez une clause switch case, le cas par défaut est celui qui n’est couvert par aucune règle.
Comment définir une politique par défaut?
avec le flag -P iptables -P <chaine> <cible> iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Le flag -P ne crée pas de nouvelle règle.
Exemple de politique par défaut
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT
Exemple de règles
Ajouter une règle d’interdiction pour les ping (protocole ICMP)
#Tapez la commande suivante pour ajouter une règle à iptables iptables -I INPUT -p ICMP --icmp-type 8 -j DROP
Bloquer les demandes SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP
Supprimer un règle
//Pour supprimer les règles : supprime la règle 1 iptables -D INPUT 1
Création de règles
Autoriser SSH
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Autoriser HTTP et HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Autoriser le ping (ICMP)
iptables -A INPUT -p icmp -j ACCEPT
Autoriser le traffic local (loopback)
iptables -A INPUT -i lo -j ACCEPT
Refuser une IP spécifique
iptables -A INPUT -s 192.168.1.100 -j DROP
Limitation brute force
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP
Exemple de configuration typique d’un serveur
# Vider les règles existantes iptables -F iptables -X # Politique par défaut iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # Autoriser loopback iptables -A INPUT -i lo -j ACCEPT # Autoriser les connexions établies iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Autoriser SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Autoriser HTTP / HTTPS iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Autoriser ping iptables -A INPUT -p icmp -j ACCEPT // on sauvegarde les règles iptables-save > /etc/iptables/rules.v4
C’est quoi le loopback?
C’est l’interface réseau de votre ordinateur, appelé lo (lettre l et lettre o)