Accueil > Réseau, Sécurité > Comment configurer IPTables sur un serveur Linux

Comment configurer IPTables sur un serveur Linux

25/09/2026 Categories: Réseau, Sécurité Tags: , ,

Source: youstable

Pour configurer IPTables sur un serveur Linux, définissez des politiques par défaut, autorisez le trafic essentiel (SSHAutorisez les connexions HTTP/HTTPS, puis bloquez toutes les autres. Enregistrez et conservez ces règles avec iptables-save ou iptables-persistent (Debian/Ubuntu) ou iptables-services (RHEL/Alma/Rocky). Testez depuis une seconde session pour éviter les blocages et consultez les journaux d’erreurs pour faciliter le dépannage.

Configurer IPTables sur un serveur Linux est une compétence essentielle pour un hébergement sécurisé en 2026. Ce guide vous accompagne pas à pas : fonctionnement d’IPTables, configuration sécurisée, règles courantes, NAT/redirection de ports, persistance des paramètres après redémarrage et dépannage. Que vous utilisiez un VPS, un serveur dédié ou une instance cloud, vous découvrirez une méthode de configuration de pare-feu adaptée à la production.

Qu’est-ce qu’IPTables et comment ça fonctionne ?

IPTables est le pare-feu espace utilisateur Linux qui interagit avec Netfilter au niveau du noyau. Il analyse les paquets à l’aide de tables (filtrage, NAT, masquage) et de chaînes (entrée, sortie, transfert, préroutage, postroutage) en appliquant des règles qui correspondent à des critères et déterminent les actions à entreprendre (accepter, bloquer, rejeter). En 2026, de nombreuses distributions Linux utilisaient nftables en interne, mais la compatibilité avec iptables-nft restait largement disponible.

Aperçu rapide : Flux de règles de bonnes pratiques

  • Définir les politiques par défaut sur DROP.
  • Autoriser le trafic de bouclage et le trafic établi/connexe.
  • Autoriser SSH (avec des limites de débit) et les ports de service requis (par exemple, 80/443).
  • Autoriser éventuellement le protocole ICMP (ping) avec des limites.
  • Augmentez la fréquence des chutes de journalisation à un rythme raisonnable pour une meilleure visibilité.
  • Respectez les règles et testez-les minutieusement.

Prérequis et liste de vérification de sécurité

  • Accès root ou sudo sur votre serveur Linux.
  • Deux sessions sont ouvertes (par exemple, SSH + console) pour éviter le verrouillage.
  • IP de votre managemachine à ment (à mettre sur liste blanche si nécessaire).
  • Disponibilité des forfaits :
    • Debian/Ubuntu : iptables, iptables-persistent ou netfilter-persistent
    • RHEL/Alma/Rocky : iptables, iptables-services (optionnel), firewalld (si vous préférez un outil de plus haut niveau)
  • Sachez si vous utilisez iptables-legacy ou iptables-nft :
    • Debian/Ubuntu : update-alternatives –config iptables
    • RHEL 8/9 : iptables est par défaut une surcouche de nftables ; les commandes fonctionnent toujours sauf si vous supprimez la compatibilité.

Configuration étape par étape d’IPTables (2026)

1) Examinez les règles actuelles et sauvegardez-les

Code
sudo iptables -L -n -v
sudo iptables-save > ~/iptables.backup.$(date +%F-%H%M).v4
# For IPv6 if in use:
sudo ip6tables -L -n -v
sudo ip6tables-save > ~/ip6tables.backup.$(date +%F-%H%M).v6

Faites toujours une sauvegarde. En cas de problème, vous pourrez restaurer rapidement vos données à l’aide d’iptables-restore.

2) Abandonner les anciennes règles (facultatif, avec prudence)

Code
# Clear rules and user-defined chains
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X

# Reset default policies to ACCEPT temporarily while building rules
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Laissez les options par défaut OUVERTES pendant que vous ajoutez les règles d’autorisation. Vous les passerez en mode REFUSER après avoir autorisé les accès critiques.

Lire aussi:  How to Setup Reverse SSH Tunnel on Linux
Code
# Allow loopback
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

# Allow established/related
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

Cela préserve les connexions existantes et évite les ruptures pendant la période de modification.

4) Autoriser SSH avec protection de base

Code
# Optional: restrict SSH to your IP
# sudo iptables -A INPUT -p tcp -s YOUR.IP.ADDR.HERE --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# Or allow SSH from anywhere with rate-limit
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 10/min --limit-burst 20 -j ACCEPT

L’utilisation d’une limite de débit permet de ralentir les attaques par force brute. À combiner avec l’authentification par clé et fail2ban pour une protection renforcée.

5) Autoriser les ports Web et d’application

Code
# HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT

# Add more services as needed, e.g., MySQL (local only), SMTP, etc.
# sudo iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -m conntrack --ctstate NEW -j ACCEPT

Exposez uniquement les informations nécessaires. Pour les bases de données, autorisez uniquement l’hôte local ou les sous-réseaux d’application connus.

6) Facultatif : Autoriser ICMP (Ping) en toute sécurité

Code
# Allow limited ping to aid monitoring
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/second -j ACCEPT

La commande ping facilite le diagnostic. Si votre politique l’interdit, ignorez cette étape.

7) Enregistrez et supprimez le reste

Code
# Log (rate-limited) then drop
sudo iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPT DROP: " --log-level 7
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
# Typically OUTPUT stays ACCEPT for servers initiating outbound traffic
sudo iptables -P OUTPUT ACCEPT

Configurez d’abord la journalisation, puis les règles de suppression. Consultez /var/log/syslog ou /var/log/messages selon votre distribution.

Règles et exemples courants d’IPTables

Ajouter une adresse IP ou un sous-réseau de confiance à la liste blanche

Code
# Allow all from a trusted office IP
sudo iptables -A INPUT -s 203.0.113.10 -j ACCEPT

# Allow a subnet (CIDR)
sudo iptables -A INPUT -s 203.0.113.0/24 -j ACCEPT

Bloquer une adresse IP malveillante

Code
sudo iptables -A INPUT -s 198.51.100.22 -j DROP

Limiter le nombre de nouvelles connexions à un port

Code
# Example: throttle HTTP floods of new TCP connections
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m limit --limit 50/second --limit-burst 200 -j ACCEPT

Supprimer les paquets invalides

Code
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

NAT et redirection de ports (DNAT/SNAT)

Si votre serveur fait office de passerelle ou de proxy inverse, vous aurez peut-être besoin de règles NAT. Commencez par activer le transfert IP :

Code
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
# Persist by editing /etc/sysctl.conf and setting:
# net.ipv4.ip_forward = 1
sudo sysctl -p

Redirection du port 80 vers le serveur dorsal 10.0.0.10:8080

Code
# DNAT inbound requests hitting eth0
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 
 -j DNAT --to-destination 10.0.0.10:8080

# Allow forwarding to backend
sudo iptables -A FORWARD -p tcp -d 10.0.0.10 --dport 8080 
 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

# SNAT/MASQUERADE so replies return via this gateway (dynamic public IP)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Sur les serveurs dotés d’adresses IP publiques statiques, privilégiez le SNAT avec l’option `–to-source VOTRE.IP.PUBLIQUE` pour des performances et une clarté optimales.

Lire aussi:  How to secure an Ubuntu 16.04 LTS server - Part 1 The Basics

Persistance des règles IPTables après redémarrage

Debian / Ubuntu

Code
sudo apt update
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
# Alternatively:
# sudo sh -c 'iptables-save > /etc/iptables/rules.v4'
# sudo sh -c 'ip6tables-save > /etc/iptables/rules.v6'

RHEL/AlmaLinux/Rocky (8/9)

Ces services utilisent nftables en interne. Si vous souhaitez absolument conserver les règles iptables, installez iptables-services (ceci n’est pas toujours recommandé si firewalld gère nftables).

Code
sudo dnf install -y iptables-services
sudo systemctl enable --now iptables
sudo sh -c 'iptables-save > /etc/sysconfig/iptables'
sudo systemctl restart iptables

Alternativement, manage Règles de pare-feu avec firewalld ou nftables natifs pour une compatibilité à long terme, notamment sur les versions plus récentes.

Test et dépannage

  • Afficher les règles sous forme de commande : iptables -S
  • Vérifier les compteurs : iptables -L -n -v
  • Vérifier les services d’écoute : ss -tulpn
  • Analyse depuis un autre hôte (avec précaution) : nmap -Pn -p 22,80,443 votre.adresse.ip
  • Consultez les journaux : journalctl -f ou tail -f /var/log/syslog
  • Restaurer la sauvegarde si nécessaire :
    Code
    sudo iptables-restore < ~/iptables.backup.DATE.v4

Comparaison des tables IPTables, UFW, firewalld et nftables (2026)

  • IPTables : outil classique et précis ; courbe d’apprentissage abrupte ; toujours pris en charge via iptables-nft sur les noyaux modernes.
  • UFW : interface utilisateur conviviale (Ubuntu) ; idéal pour les pare-feu hôtes simples.
  • firewalld : démon dynamique avec zones ; par défaut sur RHEL/Fedora ; politiques multi-interfaces simplifiées.
  • nftables : remplacement moderne ; unifié IPv4/IPv6; une syntaxe plus simple et de meilleures performances.

Pour les nouveaux déploiements sur les distributions les plus récentes, nftables ou firewalld sont des solutions pérennes. Si vos procédures et vos équipes utilisent IPTables de manière standardisée, la couche de compatibilité restera fiable jusqu’en 2026.

Lire aussi:  Preventing brute force attacks using iptables recent matching

Meilleures pratiques pour les serveurs de production

  • Ajoutez toujours des règles d’autorisation pour SSH et manageavant de définir les politiques DROP.
  • Utilisez les fenêtres de changement et gardez une session console ouverte (ou un accès hors bande via votre panneau d’hébergement).
  • Appliquer le principe du moindre privilège : n’exposer que les ports et sous-réseaux nécessaires.
  • Combiner avec fail2ban et une authentification forte (SSH clés, MFA sur les panneaux de commande).
  • Documentez votre ensemble de règles ; utilisez des commentaires avec -m commentaire –comment « objectif ».
  • Gérez les versions de vos règles et automatisez-les avec Ansible ou des scripts shell.
  • Consultez les journaux pour détecter les baisses inhabituelles ; adaptez les limites de débit à votre profil de trafic.

Quand envisager l’aide d’un pare-feu géré

Si vous préférez ne pas avoir à surveiller la syntaxe du pare-feu, YouStable’s managed VPS et serveurs dédiés Nous pouvons inclure des profils de pare-feu renforcés, une protection contre les attaques DDoS et une assistance 24h/24 et 7j/7. Nous vous aidons à choisir la solution la plus adaptée (IPTables, firewalld ou nftables) et à garantir sa conformité avec votre infrastructure et vos SLA.

Exemple complet : Règles minimales et sécurisées pour serveur Web (IPv4)

Code
# Flush and set permissive defaults while building
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Allow loopback and established/related
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# SSH with rate-limit
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 10/min --limit-burst 20 -j ACCEPT

# Web traffic
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT

# Optional: limited ping
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/second -j ACCEPT

# Drop invalid and log drops
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPT DROP: " --log-level 7

# Lock it down
iptables -P INPUT DROP

# Save (Debian/Ubuntu)
# netfilter-persistent save
# Or
# iptables-save > /etc/iptables/rules.v4
Categories: Réseau, Sécurité Tags: , ,
Les commentaires sont fermés.