Skip to content
An open terminal on a matte monitor, showing only dark, non-legible interface elements, with shallow depth of field

Fonctionnement pare feu iptables ufw : règles et sécurité Linux

Sommaire

À RETENIR

  • Un pare-feu Linux filtre les paquets via Netfilter, dans le noyau, selon des chaînes et des règles ordonnées.
  • UFW simplifie la configuration courante, tandis qu’iptables reste une interface historique et nftables le moteur moderne.
  • Avant toute politique restrictive, autorisez SSH sur le port 22 ou le port réellement utilisé par votre serveur.
  • UFW et iptables peuvent afficher des règles différentes, car UFW ajoute sa propre couche de gestion.

La distribution utilisée et le backend réellement actif changent les commandes à privilégier.

Comprendre le fonctionnement pare feu iptables ufw sous Linux

Le pare-feu Linux examine les paquets réseau lorsqu’ils passent par les points de filtrage du noyau. Il compare chaque paquet à des règles qui portent notamment sur l’adresse IP, le protocole, le port, l’interface et l’état de la connexion.

Cette fonction relève de Netfilter, un framework intégré au noyau Linux. Pour mieux comprendre ce lien entre espace utilisateur et noyau, consultez notre article sur le fonctionnement du noyau Linux.

Quel traitement reçoivent les trafics entrant, sortant et transféré ?

Le trafic entrant vise un service local, comme SSH ou un serveur web. Le trafic sortant part de la machine vers un autre hôte, tandis que le trafic transféré traverse la machine qui joue le rôle de routeur.

Une station personnelle filtre surtout INPUT et OUTPUT. Un serveur faisant transiter des paquets doit aussi traiter FORWARD et activer le transfert IP, ce qui élargit fortement sa surface de configuration.

Comment fonctionnent le filtrage par paquets, les règles et leur ordre ?

Une règle décrit une condition et une cible. Si un paquet correspond, la cible peut l’accepter, le supprimer, le rejeter, le journaliser ou le modifier. Les règles sont généralement évaluées de haut en bas, et la première décision applicable peut interrompre la chaîne.

Une règle trop générale placée avant une règle plus précise rend cette dernière inutile. Affichez toujours les règles avec leurs compteurs de paquets pour vérifier ce qui est réellement utilisé.

À quoi servent les connexions établies et conntrack ?

conntrack suit l’état des flux, par exemple NEW, ESTABLISHED, RELATED et INVALID. Une règle autorisant les connexions établies permet au trafic de réponse d’un accès sortant de revenir sans ouvrir largement les ports entrants.

Cette logique ne remplace pas l’authentification du service. Elle limite seulement les paquets acceptés par le pare-feu et ne protège pas un service vulnérable déjà exposé.

iptables, nftables et UFW : quelles différences ?

Outil Rôle Usage adapté Limite principale
iptables Interface historique de Netfilter Compatibilité et règles détaillées Syntaxe fragmentée, IPv4 et IPv6 séparés
nftables Interface moderne de Netfilter Nouvelles configurations Linux Prise en main moins immédiate
UFW Interface simplifiée Serveur ou poste Linux courant Moins de contrôle direct
firewalld Gestionnaire par zones Environnements dynamiques Couche supplémentaire à comprendre

Que reste-t-il d’iptables, l’interface historique ?

iptables organise les règles dans des tables et des chaînes. Vous pouvez filtrer avec des critères précis, mais vous devez souvent gérer séparément IPv4 avec iptables et IPv6 avec ip6tables.

Sur plusieurs distributions récentes, la commande iptables peut utiliser une couche de compatibilité appelée iptables-nft. Dans ce cas, une commande qui ressemble à iptables est traduite vers nftables, ce qui rend l’identification du backend indispensable.

Pourquoi nftables est-il le moteur moderne de Linux ?

nftables fournit une syntaxe unifiée et gère IPv4 et IPv6 avec la famille inet. Il facilite aussi les ensembles d’adresses ou de ports, utiles quand une règle doit couvrir de nombreuses valeurs.

Le choix ne dépend pas seulement de la modernité de l’outil. Une configuration existante, un gestionnaire de distribution ou un script d’administration peut imposer une méthode précise.

Quand UFW est-il une interface suffisante ?

UFW, pour Uncomplicated Firewall, transforme des besoins courants en commandes lisibles comme ufw allow 22/tcp. Il convient bien à une machine dont vous devez contrôler quelques services sans écrire directement toute la syntaxe Netfilter.

UFW n’est pas un moteur indépendant. Il génère et charge des règles sous-jacentes, dont la représentation peut varier selon la version d’UFW et le backend de la distribution.

Comment fonctionnent les chaînes, tables et points de filtrage ?

À quoi servent INPUT, OUTPUT et FORWARD ?

INPUT concerne les paquets destinés à la machine. OUTPUT concerne les paquets générés localement, et FORWARD concerne les paquets qui traversent la machine sans lui être destinés.

Sur un serveur web, vous autorisez généralement INPUT pour HTTP et HTTPS. Sur une passerelle, vous devez aussi définir précisément FORWARD, les interfaces concernées et les règles de retour.

Quand utiliser PREROUTING, POSTROUTING et la table NAT ?

PREROUTING intervient avant la décision de routage et peut servir à modifier la destination. POSTROUTING intervient après cette décision et sert notamment à modifier l’adresse source avant la sortie.

La table NAT sert à la traduction d’adresses et de ports, pas au filtrage principal. Une règle DNAT qui redirige un port ne suffit pas toujours, car le trafic doit également être autorisé dans FORWARD.

Quelle différence entre ACCEPT, DROP et REJECT ?

ACCEPT laisse passer le paquet. DROP le supprime sans réponse, tandis que REJECT renvoie une erreur lorsque le protocole le permet.

DROP réduit les informations retournées mais peut ralentir les clients qui attendent un délai d’expiration. REJECT facilite le diagnostic, au prix d’une réponse explicite. Choisissez selon le service et votre besoin de dépannage.

Comment vérifier le pare-feu et son backend actif ?

  • UFW : sudo ufw status verbose
  • iptables : sudo iptables -L -n -v et sudo ip6tables -L -n -v
  • nftables : sudo nft list ruleset
  • Processus et services actifs : sudo systemctl status ufw nftables firewalld

Comment vérifier l’état d’UFW ?

sudo ufw status verbose affiche l’état, les politiques par défaut et les règles visibles par UFW. La réponse inactive signifie que les règles UFW ne sont pas actives, pas que tout filtrage du noyau est absent.

Comment afficher les règles iptables ?

Utilisez sudo iptables -S pour une représentation proche des commandes de création et sudo iptables -L -n -v pour voir les compteurs. Vérifiez aussi ip6tables, car autoriser IPv4 ne protège pas automatiquement IPv6.

Comment afficher les règles nftables ?

sudo nft list ruleset montre le jeu de règles chargé dans le noyau. Si cette sortie contient des tables et chaînes alors qu’UFW semble inactif, un autre outil gère probablement le filtrage.

Comment configurer un pare-feu avec UFW ?

Comment définir une politique restrictive ?

Commencez par définir le comportement entrant et sortant, puis ajoutez les exceptions nécessaires : sudo ufw default deny incoming et sudo ufw default allow outgoing. Une politique sortante restrictive demande un inventaire plus précis des mises à jour, DNS, NTP et services utilisés.

Comment autoriser SSH avant d’activer UFW ?

Depuis une session distante, exécutez d’abord sudo ufw allow 22/tcp, ou remplacez 22 par le port SSH configuré. Ensuite seulement, lancez sudo ufw enable et vérifiez avec sudo ufw status numbered.

Gardez une console locale ou un accès de secours pendant le changement. Une erreur de port, d’adresse source ou d’interface peut couper votre accès administrateur.

Comment ouvrir les ports d’un serveur web ou d’un service ?

Pour un serveur web classique, utilisez sudo ufw allow 80/tcp et sudo ufw allow 443/tcp. Préférez une règle limitée à une adresse source pour les interfaces d’administration, plutôt qu’une ouverture mondiale.

Comment autoriser une IP, un réseau ou une interface spécifique ?

Une règle comme sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp limite SSH au réseau local. Vous pouvez aussi préciser une interface avec in on eth0, mais vérifiez son nom avec ip link.

Comment configurer un pare-feu avec iptables ?

Comment autoriser ou bloquer un port ?

Pour autoriser SSH en entrée, utilisez sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT. Pour bloquer un port, remplacez la cible par DROP, mais placez la règle avant une autorisation plus générale qui l’accepterait.

Comment autoriser les connexions déjà établies ?

Ajoutez une règle d’état au début de la chaîne : sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT. Elle autorise les paquets appartenant à des connexions déjà acceptées et réduit le besoin d’ouvrir des ports de retour.

Comment limiter l’accès à une adresse IP ou un sous-réseau ?

Pour n’autoriser SSH qu’à un réseau donné, ajoutez -s 192.168.1.0/24 à la règle. Contrôlez le masque avec soin : /24 couvre généralement 256 adresses, tandis qu’une adresse unique utilise souvent /32.

Comment enregistrer et restaurer les règles ?

Sur Debian et Ubuntu, sudo iptables-save | sudo tee /etc/iptables/rules.v4 exporte IPv4, mais la restauration au démarrage dépend du paquet et du service installés. Testez une restauration après redémarrage dans une machine de test avant de modifier un serveur distant.

Comment configurer un pare-feu avec nftables ?

Comment créer une table et une chaîne de filtrage ?

Une base minimale utilise sudo nft add table inet filter, puis une chaîne d’entrée : sudo nft 'add chain inet filter input { type filter hook input priority 0; policy drop; }'. La famille inet permet de traiter IPv4 et IPv6 dans le même ensemble.

Comment définir une politique par défaut et ajouter des règles ?

Ajoutez d’abord les exceptions indispensables, par exemple sudo nft add rule inet filter input ct state established,related accept puis une règle SSH limitée. Une politique drop sans règle de retour ni accès d’administration peut vous verrouiller hors du serveur.

Comment rendre la configuration persistante ?

La persistance dépend de la distribution. Enregistrez le jeu avec sudo nft list ruleset > /etc/nftables.conf, puis activez le service nftables si votre système l’utilise. Vérifiez après redémarrage que les règles chargées correspondent bien au fichier.

UFW et iptables : quelles règles sont réellement appliquées ?

Commande Ce qu’elle montre Limite
ufw status Règles gérées par UFW Ne montre pas tous les détails générés
iptables -L Chaînes iptables IPv4 Peut afficher une couche de compatibilité nftables
ip6tables -L Chaînes iptables IPv6 À vérifier séparément
nft list ruleset Jeu nftables chargé Plus verbeux, mais plus complet

Ne mélangez pas plusieurs gestionnaires sans méthode. UFW, firewalld, scripts iptables et nftables peuvent produire des règles concurrentes difficiles à maintenir.

Comment gérer le NAT, le routage et la redirection de ports ?

Comment autoriser le forwarding entre interfaces ?

Une machine routeuse doit autoriser FORWARD et activer net.ipv4.ip_forward=1. Ajoutez des règles qui limitent les interfaces source et destination, puis testez le trafic dans les deux directions.

Comment mettre en place un masquerading ?

Le masquerading traduit les adresses privées vers l’adresse de sortie, par exemple avec sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE. Cette règle ne remplace pas les autorisations de forwarding ni une configuration correcte du routage.

Comment rediriger un port vers un service interne ?

Une redirection DNAT en PREROUTING envoie un port public vers une adresse privée. Vous devez ensuite autoriser le flux dans FORWARD et vérifier que le service interne écoute sur l’adresse attendue.

Quelles bonnes pratiques de sécurité appliquer ?

  • N’ouvrez que les ports nécessaires et supprimez les règles temporaires après le test.
  • Testez depuis un second terminal avant de fermer une session distante.
  • Contrôlez les flux entrants et sortants, y compris IPv6 et les interfaces virtuelles.
  • Journalisez avec modération, sauvegardez les règles et revoyez-les après chaque changement de service.

Pourquoi n’ouvrir que les ports nécessaires ?

Chaque port accessible expose un service qui doit être mis à jour, configuré et surveillé. Le pare-feu réduit la surface réseau, mais ne corrige pas une permission excessive ou un logiciel vulnérable.

Pour une démarche plus large, associez le filtrage à un durcissement du système Linux et à des comptes administratifs correctement séparés.

Comment tester la configuration avant de fermer une session distante ?

Ouvrez une deuxième connexion SSH, testez le service depuis une autre machine et conservez une console hors bande si elle existe. Préparez une commande d’annulation ou un accès local avant d’appliquer une politique DROP.

Comment contrôler les flux entrants et sortants ?

Examinez les sockets avec ss -lntup et comparez-les aux ports autorisés. Un service en écoute sur toutes les interfaces mérite une règle plus stricte ou une configuration d’écoute limitée.

Comment journaliser et maintenir les règles ?

Activez une journalisation limitée, car des paquets répétitifs peuvent remplir les journaux. Documentez la raison, le propriétaire et la date de chaque exception, puis revérifiez la configuration après une mise à jour de distribution ou de service.

Comment dépanner un blocage réseau ?

  • Vérifiez d’abord le service, son port d’écoute et son adresse locale.
  • Contrôlez l’ordre des règles, la politique par défaut et le compteur de paquets.
  • Consultez les journaux avec journalctl et les messages du pare-feu.
  • Comparez les tests applicatifs avec ss, nc, curl et tcpdump.

Comment vérifier le service et le port en écoute ?

sudo ss -lntup indique le processus lié à chaque socket TCP ou UDP. Si aucun processus n’écoute, modifier le pare-feu ne rétablira pas le service : vérifiez d’abord sa configuration et son état systemd.

Comment contrôler l’ordre et la politique des règles ?

Affichez les règles avec les numéros et les compteurs, puis cherchez une règle DROP ou REJECT placée avant l’autorisation. Examinez aussi les chaînes FORWARD et OUTPUT, souvent oubliées lors d’un routage ou d’une restriction sortante.

Comment consulter les journaux du pare-feu ?

UFW peut journaliser avec sudo ufw logging medium, tandis que les messages système se consultent avec journalctl -k. Désactivez ou réduisez cette journalisation après le diagnostic si elle produit trop de volume.

Comment tester avec ss, nc, curl et tcpdump ?

nc -vz adresse port teste l’ouverture TCP, et curl -v montre les détails d’une connexion HTTP ou HTTPS. sudo tcpdump -ni any port 443 permet de voir si les paquets arrivent, repartent ou restent sans réponse.

Quelles commandes essentielles retenir ?

Objectif Commande Résultat
État UFW sudo ufw status verbose Politique et règles UFW
Règles iptables sudo iptables -L -n -v Chaînes IPv4 et compteurs
Règles nftables sudo nft list ruleset Configuration active complète
Ports en écoute sudo ss -lntup Services et sockets locaux
Capture réseau sudo tcpdump -ni any port 22 Paquets SSH observés

Si vous administrez aussi un serveur personnel exposé sur Internet, complétez le pare-feu par des mesures de sécurité pour l’auto-hébergement. Les noms de services, les chemins de persistance et le backend par défaut peuvent changer avec la distribution : vérifiez-les après chaque migration.