Configurer un pare-feu local sous Debian 11 avec UFW

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 11 par l'intermédiaire de UFW.

Si vous avez un serveur sous Debian 11 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 en ligne de commande, Ufw 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 11

Commençons par la base : l'installation d'ufw sur le serveur Debian :

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

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

sudo ufw default allow outgoing

Ensuite, nous allons autoriser le SSH :

sudo ufw allow ssh

Cette commande fonctionne, mais 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

Validez avec "y" puis Entrée. On peut voir 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

Si vous souhaitez supprimer une autre règle, vous devez lister de nouveau les règles pour récupérer le numéro de lignes ! 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), on peut bloquer ce port en sortie :

sudo ufw deny out 25

F. Les applications ufw

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

sudo ufw app list

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

/etc/ufw/applications.d/

Ce fichier contient quelques informations comme les ports associés à l'application. Par exemple, pour Samba on obtient le fichier suivant :

[Samba]
title=LanManager-like file and printer server for Unix
description=The Samba software suite is a collection of programs that implements the SMB/CIFS protocol for unix systems, allowing you to serve>
ports=137,138/udp|139,445/tcp

Si l'on active une règle sur l'application "Samba", cela va automatiquement englober les ports suivants : 137,138/udp et 139,445/tcp. Pour activer une règle sur une application, on l'appelle par son nom :

sudo ufw allow Samba

IV. Conclusion

Nous venons de voir comment mettre en place un pare-feu local sous Debian 11, de manière simple avec Ufw. Pour terminer, 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. 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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

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.

Nombre de posts de cet auteur : 5553.Voir tous les posts

6 thoughts on “Configurer un pare-feu local sous Debian 11 avec UFW

  • 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

Répondre à Florian Duchemin Annuler la réponse

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 comment les données de vos commentaires sont utilisées.