Comprendre et configurer iptables sous Linux

Credit : Illustration backtotheweb.fr

Comprendre et configurer iptables sous Linux

Dylan D. — Agent Support Technique Serveur Securite 593 mots 3 min

Comprendre et configurer iptables sous Linux

Bon, on va pas se mentir, c'est un sujet qui revient souvent.

iptables est le pare-feu integre au noyau Linux. Il permet de filtrer le trafic reseau entrant, sortant et traverse grace a un systeme de chains (chaines) et de rules (regles). Meme si nftables le remplace progressivement, iptables reste omnipresent en production.

Les trois chains principales

iptables s'organise autour de tables, dont la plus utilisee est filter avec ses trois chains :

Commandes de base

Lister les regles actuelles :

sudo iptables -L -v -n --line-numbers

Vider toutes les regles :

sudo iptables -F
sudo iptables -X

Definir une politique par defaut

Bonne pratique : tout bloquer par defaut, puis autoriser ce qui est necessaire.

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

Autoriser le trafic essentiel

Autoriser le loopback et les connexions etablies :

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Ouvrir SSH (port 22), HTTP (80) et HTTPS (443) :

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Limiter les connexions (anti brute-force)

Limiter les tentatives SSH a 3 par minute par IP :

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

Bloquer une IP specifique

sudo iptables -A INPUT -s 203.0.113.50 -j DROP

NAT et redirection de port

La table nat permet de faire du masquerading ou de la redirection :

# Activer le forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# Masquerade pour le sous-reseau local
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Rediriger le port 8080 vers un serveur interne
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

Sauvegarder et restaurer les regles

Les regles iptables sont perdues au redemarrage. Il faut les persister :

# Sauvegarder
sudo iptables-save > /etc/iptables/rules.v4

# Restaurer
sudo iptables-restore < /etc/iptables/rules.v4

Sur Debian/Ubuntu, installez iptables-persistent pour une restauration automatique :

sudo apt install iptables-persistent
sudo netfilter-persistent save

Journaliser le trafic bloque

Avant la regle DROP finale, ajoutez une regle de log :

sudo iptables -A INPUT -j LOG --log-prefix "IPT-DROP: " --log-level 4
sudo iptables -A INPUT -j DROP

Les logs apparaitront dans /var/log/kern.log ou via journalctl -k.

Script complet de pare-feu

#!/bin/bash
iptables -F && iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -j LOG --log-prefix "IPT-DROP: "
iptables -A INPUT -j DROP
iptables-save > /etc/iptables/rules.v4

iptables reste un outil puissant pour securiser votre serveur. Maitrisez-le avant de passer a nftables ou a des solutions comme CrowdSec.

# Articles similaires

// newsletter

Cet article vous a aide ? Recevez les prochains par email.