05/12/2025

Commandes et Système

Guide pratique UFW : comment configurer un pare-feu local sous Debian 13 ?

I. Présentation

Dans ce tutoriel, nous allons voir comment configurer un pare-feu local de façon très simple sur un serveur Debian 13 par l'intermédiaire de UFW.

Si vous avez un serveur sous Debian 13 et que vous recherchez une façon simple de configurer un pare-feu local pour gérer les flux entrants et sortants, faites comme moi, utilisez le paquet ufw. Même le nom qui se cache derrière ufw nous indique que ça va être facile : Uncomplicated Firewall, soit le pare-feu simple ou le pare-feu non compliqué, si vous préférez.

Accessible directement depuis le Terminal et associé au jeu de commandes ufw, cet outil est une interface pour IPtables qui va permettre de gérer le framework Netfilter avec des commandes très simples, comme nous le verrons au travers de ce tutoriel où je vais vous indiquer l'essentiel des commandes. Les commandes IPtables, ce n'est pas toujours simple, mais la gestion avec ufw est relativement simple : vous verrez par vous-même dans la suite de ce tutoriel.

II. Installer Ufw sur Debian 13

Commençons par installer ufw sur Debian. Que ce soit sur Debian 13 ou une version antérieure, la manipulation est identique.

sudo apt-get update
sudo apt-get install ufw

J'imagine que vous réalisez cette installation à partir d'une connexion SSH. Veillez à avoir un accès console sur le serveur au cas où les choses dégénèrent : une mauvaise règle et vous pourriez vous couper l'accès à votre serveur !

Nous devons activer ufw pour qu'il soit actif, car pour le moment il ne sert pas à grand-chose. Si on l'active maintenant, la connexion SSH active restera active, mais si elle coupe, nous ne pourrons plus nous connecter en SSH, car le flux n'est pas ouvert. Nous allons effectuer la configuration de base avant d'activer le pare-feu.

Par défaut, nous allons refuser toutes les connexions entrantes (incoming) :

sudo ufw default deny incoming

> Default incoming policy changed to 'deny'

À l'inverse, on autorisera toutes les connexions sortantes (outgoing - vous pouvez modifier ce comportement, bien entendu).

sudo ufw default allow outgoing

> Default outgoing policy changed to 'allow'

Ensuite, nous allons autoriser le SSH :

sudo ufw allow ssh

À chaque fois que vous effectuez une modification, et sous réserve qu'elle soit acceptée, vous obtenez un retour comme celui-ci dans la console :

Rules updated
Rules updated (v6)

Cette sortie signifie que la règle s'applique aux accès IPv4 et IPv6, vis-à-vis des adresses IP configurées sur la machine locale.

Note : la prise en charge de l'IPv6 par UFW est gérée dans le fichier /etc/default/ufw au sein duquel il y a la directive IPV6=yes.

La commande évoquée précédemment fonctionne, mais elle sera utile uniquement si vous utilisez le SSH avec le port par défaut (22), ce qui normalement n'est pas le cas. Pour autoriser un port personnalisé et correspondant à votre accès SSH, utilisez plutôt cette syntaxe (exemple avec le port 2222) :

sudo ufw allow 2222/tcp

Désormais, nous pouvons activer le pare-feu puisque la règle pour le SSH est en place. Disons que nous avons notre anti-lockout. 😉

sudo ufw enable

> Firewall is active and enabled on system startup

Si un avertissement apparaît (ce sera le cas si vous manipulez à distance via SSH), validez avec y puis Entrée. Nous pouvons constater que le pare-feu est actif et activé automatiquement au démarrage.

Le pare-feu étant lancé, nous pouvons lister les règles existantes :

sudo ufw status numbered

Une autre commande possible, avec un affichage un peu différent :

sudo ufw status

Voilà pour l'installation. Voyons maintenant d'autres commandes utiles.

III. Pare-feu ufw : commandes utiles

Pour que vous puissiez bien prendre en main ufw, je vais vous donner quelques exemples de commandes utiles. Ensuite, à vous d'adapter selon vos besoins.

A. Autoriser une adresse IP ou un sous-réseau

Nous venons de créer une règle pour autoriser le port associé au service SSH de notre machine. Comment faire pour autoriser un port, mais uniquement selon une adresse IP source particulière ou un sous-réseau ?

Autoriser uniquement le sous-réseau 10.10.10.0/24 à se connecter sur le port 2222 :

sudo ufw allow from 10.10.10.0/24 to any port 2222

Autoriser uniquement la machine 10.10.10.1 à se connecter sur le port 2222 :

sudo ufw allow from 10.10.10.1 to any port 2222

Afin de spécifier TCP ou UDP, il faut ajouter la directive proto, par exemple :

sudo ufw allow proto tcp from 10.10.10.0/24 to any port 22

B. Autoriser une plage de ports

Pour autoriser une plage de ports au sein d'une règle, il suffit de spécifier la plage sous la forme <port de début>:<port de fin>. Par exemple, du port 8080 au port 8081 en TCP :

ufw allow 8080:8081/tcp

C. Supprimer une règle ufw

Pour supprimer une règle, il faut être vigilant. Je vais vous expliquer pourquoi. Tout d'abord, il faut lister les règles :

sudo ufw status numbered

Ensuite, pour supprimer la règle, il faut préciser son ID (premier chiffre au début de chaque ligne). Par exemple, pour supprimer la ligne 2 :

sudo ufw delete 2

Vous devez valider l'opération de suppression : y puis Entrée.

Si vous souhaitez supprimer une autre règle, vous devez lister de nouveau les règles pour récupérer le numéro de ligne ! Tout simplement parce que le numéro de ligne (ou ID) change ! Si l'on supprime la règle 2, et bien la règle avec l'ID 3 devient la règle avec l'ID 2. Du coup, si l'on se base sur la sortie précédente, on risque de se tromper de règle !

D. Bloquer une adresse IP

Si pour une raison ou pour une autre vous avez besoin de bloquer une adresse IP, utilisez la syntaxe suivante :

sudo ufw deny from 192.168.100.10

E. Bloquer un port en sortie

Par défaut, nous autorisons tout le trafic en sortie, mais cela ne veut pas dire que l'on ne peut pas bloquer certains ports. Par exemple, pour empêcher notre serveur d'envoyer des e-mails via le port 25 (SMTP), nous pouvons bloquer ce port en sortie :

sudo ufw deny out 25

F. Les applications ufw

UFW est livré avec un ensemble de filtres applicatifs que vous pouvez lister avec la commande suivante :

sudo ufw app list

Ces filtres sont associés à des fichiers de configuration définis dans le dossier suivant :

/etc/ufw/applications.d/

Ce fichier contient quelques informations comme les ports associés à l'application. Par exemple, le fichier /etc/ufw/applications.d/ufw-fileserver fait référence aux accès à des partages de fichiers, notamment avec le protocole SMB (CIFS). Voici le contenu de ce fichier :

[CIFS]
title=SMB/CIFS server
description=SMB/CIFS server
ports=137,138/udp|139,445/tcp

[NFS]
title=NFS server
description=NFS and portmap server. Will also need access to mountd, statd and possibly others
ports=2049,111/tcp|2049,111/udp

[svnserve]
title=Subversion server
description=Subversion server for access to Subversion repositories.
ports=3690/tcp

Si nous activons le profil nommé CIFS (valeur entre crochets), cela va automatiquement englober les ports suivants : 137,138/udp et 139,445/tcp. Pour activer un profil et donc autoriser les flux associés, nous pouvons utiliser cette syntaxe :

sudo ufw allow <nom du profil>
sudo ufw allow CIFS

IV. Conclusion

Nous venons de voir comment mettre en place un pare-feu local sous Debian 13, de manière simple avec Ufw. Je souhaitais terminer cet article par quelques précisions sur les différents fichiers lus par ufw.

Tout d'abord, sachez que nos règles personnalisées sont ajoutées au fichier suivant : /etc/ufw/user.rules. Le fichier /etc/ufw/before.rules contient les règles évaluées avant les commandes Ufw que l'on a définies et le fichier /etc/ufw/after.rules contient les règles évaluées après nos règles. Ces fichiers sont pour l'IPv4, il y a aussi d'autres fichiers nommés before6.rules et after6.rules pour l'IPv6. Par exemple, pour bloquer le ping il faut passer en DROP au lieu de ACCEPT les 4 lignes ICMP du fichier before.rules pour modifier le comportement par défaut.

Enfin, pour les adeptes de l'interface graphique sous Linux, sachez que le paquet gufw est un utilitaire qui permet de gérer les règles de pare-feu en mode graphique. Si la gestion du pare-feu sous Debian est un sujet qui vous intéresse, je vous recommande de lire notre cours complet sur Nftables.

FAQ

Qu’est-ce que UFW ?

UFW (Uncomplicated Firewall) est une interface simplifiée de netfilter / iptables permettant de gérer un pare-feu local via des commandes lisibles et facilement compréhensibles.

UFW fonctionne-t-il avec IPv6 ?

Oui. Il faut s’assurer que le paramètre IPV6=yes dans /etc/default/ufw pour que les règles s’appliquent aussi sur IPv6.

Comment autoriser HTTPS sur un port personnalisé avec UFW ?

Voici un exemple avec le HTTPS sur le port 8843 : sudo ufw allow 8443/tcp. Il y a aussi le profil WWW Secure pour activer les connexions 443/TCP et le profil WWW Full pour autoriser à la fois HTTP et HTTPS via 80/TCP et 443/TCP.

Comment activer et configurer les logs de UFW ?

Vous pouvez activer la journalisation de UFW avec la commande suivante : sudo ufw logging on. Le fichier journal de UFW est le suivant : /var/log/ufw.log.

Il est à noter qu'il y a plusieurs niveaux de logs. Par défaut, le niveau low est sélectionné. Vous pouvez le voir via la commande suivante : sudo ufw status verbose. Pour changer le niveau de log, utilisez cette commande : sudo ufw logging <niveau de log> (full, par exemple). Mais, vous pouvez aussi utiliser le niveau de base et ajouter des règles par service ou port, comme ceci : sudo ufw allow log 2222/tcp.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

6 commentaires sur “Guide pratique UFW : comment configurer un pare-feu local sous Debian 13 ?

  • Bonjour,

    Une règle qui me sert bien pour ipv6 :

    sudo ufw allow in from any to 2b11:e0b:7e:4960::1:2 proto tcp port http

    Répondre
  • Bonjour

    Je me pose la question suivante: ce n’est pas un peu curieux de continuer à configurer iptables alors que nftables est désormais conseillé (et utilisé par défaut) ?
    Y aurait-il des raisons qui m’échappent?

    Répondre
    • Bonjour,

      iptables et un « outil » au même titre que nftables. Les deux servent à configurer le framework Netfilter intégré au noyau Linux. Sur Debian buster par exemple, les commandes iptables sont toujours utilisables, mais c’est bien nftables qui est à la manœuvre, les commandes « iptables » étant devenu des alias.
      Par exemple sur mon Debian 11, après avoir configuré ufw, si je tape la commande « nft list table filter », je retrouve bien mes configs ufw.

      Répondre
  • bonsoir, sur mon debian 11.3.0: la commande ufw enable ou meme ufw allow ne fonctionne pas

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.