Configurer le firewall Linux iptables

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.

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)

Retour en haut