Comment configurer un pare-feu avec UFW sur Debian 11

Introduction

UFW, ou Uncomplicated Firewall, est une interface de gestion de pare-feu simplifiée qui masque la complexité des technologies de filtrage de paquets de niveau inférieur telles que iptables et nftables. Si vous cherchez à sécuriser votre réseau et que vous n’êtes pas sûr de quel outil utiliser, UFW peut être le bon choix pour vous.

Ce tutoriel vous montrera comment configurer un pare-feu avec UFW sur Debian 11.

Prérequis

Pour suivre ce tutoriel, vous aurez besoin d’un serveur Debian 11 avec un utilisateur non-root disposant de privilèges sudo, que vous pouvez configurer en suivant l’étape 1 à 3 du tutoriel Configuration initiale du serveur avec Debian 11.

Étape 1 – Installation de UFW

Debian n’installe pas UFW par défaut. Si vous avez suivi l’intégralité du tutoriel Configuration Initiale du Serveur, vous aurez installé et activé UFW. Sinon, installez-le maintenant en utilisant apt:

  1. sudo apt install ufw

Vous configurerez UFW et l’activerez dans les étapes suivantes.

Étape 2 — Utilisation d’IPv6 avec UFW (Optionnel)

Ce tutoriel est écrit en gardant à l’esprit IPv4, mais fonctionnera également pour IPv6 si vous l’activez. Si votre serveur Debian a IPv6 activé, vous voudrez vous assurer que UFW est configuré pour prendre en charge IPv6. Cela garantira que UFW gérera les règles de pare-feu pour IPv6 en plus d’IPv4. Pour configurer cela, ouvrez le fichier de configuration UFW /etc/default/ufw avec nano ou votre éditeur préféré:

  1. sudo nano /etc/default/ufw

Localisez IPV6 dans le fichier et assurez-vous que la valeur est yes:

/etc/default/ufw excerpt
IPV6=yes

Enregistrez et fermez le fichier. Si vous utilisez nano, appuyez sur CTRL+X, puis sur Y, puis sur ENTRÉE pour enregistrer et quitter le fichier.

Maintenant, lorsque UFW est activé, il sera configuré pour écrire à la fois des règles de pare-feu IPv4 et IPv6. Avant d’activer UFW, cependant, vous voudrez vous assurer que votre pare-feu est configuré pour vous permettre de vous connecter via SSH. Commencez par définir les politiques par défaut.

Étape 3 — Configuration des politiques par défaut

Si vous débutez tout juste avec votre pare-feu, les premières règles à définir sont vos politiques par défaut. Ces règles gèrent le trafic qui ne correspond pas explicitement à d’autres règles. Par défaut, UFW est configuré pour refuser toutes les connexions entrantes et autoriser toutes les connexions sortantes. Cela signifie que toute personne essayant d’accéder à votre serveur ne pourrait pas se connecter, tandis que toute application à l’intérieur du serveur pourrait atteindre le monde extérieur.

Remettez vos règles UFW aux paramètres par défaut afin de vous assurer que vous pourrez suivre ce tutoriel. Pour définir les valeurs par défaut utilisées par UFW, utilisez ces commandes:

  1. sudo ufw default deny incoming
  2. sudo ufw default allow outgoing

Vous recevrez une sortie similaire à celle-ci:

Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly) Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

Ces commandes définissent les valeurs par défaut pour refuser les connexions entrantes et autoriser les connexions sortantes. Ces paramètres de pare-feu seuls pourraient suffire pour un ordinateur personnel, mais les serveurs ont généralement besoin de répondre aux demandes entrantes des utilisateurs externes. Vous commencerez ce processus à l’étape suivante.

Étape 4 — Autorisation des connexions SSH

Vous ne pouvez pas encore activer votre pare-feu UFW, car cela refuserait toutes les connexions entrantes, y compris vos tentatives d’accès à votre serveur. Cela signifie que vous devrez créer des règles qui autorisent explicitement les connexions entrantes légitimes – telles que les connexions SSH ou HTTP, par exemple – si vous voulez que votre serveur réponde à ces types de requêtes. Si vous utilisez un serveur cloud, vous voudrez probablement autoriser les connexions SSH entrantes afin de pouvoir vous connecter à votre serveur et le gérer.

Pour configurer votre serveur afin d’autoriser les connexions SSH entrantes, utilisez cette commande :

  1. sudo ufw allow ssh

Cela créera des règles de pare-feu qui permettront toutes les connexions sur le port 22, qui est le port sur lequel le démon SSH écoute par défaut. UFW sait quel port est lié à allow ssh car il est répertorié en tant que service dans le fichier /etc/services.

Cependant, vous pouvez réellement écrire la règle équivalente en spécifiant le port plutôt que le nom du service. Par exemple, cette commande produit le même résultat que celle ci-dessus :

  1. sudo ufw allow 22

Si vous avez configuré votre démon SSH pour utiliser un port différent, vous devrez spécifier le port approprié. Par exemple, si votre serveur SSH écoute sur le port 2222, vous pouvez utiliser cette même commande mais remplacer 22 par 2222.

Maintenant que votre pare-feu est configuré pour autoriser les connexions SSH entrantes, vous pouvez l’activer.

Étape 5 – Activation de UFW

Pour activer UFW, utilisez cette commande :

  1. sudo ufw enable

Vous recevrez un avertissement indiquant que la commande peut perturber les connexions SSH existantes. Vous avez déjà configuré une règle de pare-feu qui autorise les connexions SSH, donc vous pouvez continuer sans problème. Répondez à l’invite avec y et appuyez sur ENTRÉE.

Le pare-feu est maintenant actif. Pour voir les règles que vous avez définies, exécutez cette commande :

  1. sudo ufw status verbose

Le reste de ce tutoriel explique comment utiliser UFW plus en détail, y compris comment autoriser et refuser différents types de connexions.

Étape 6 — Autoriser d’autres connexions

À ce stade, vous devriez autoriser toutes les autres connexions nécessaires au bon fonctionnement de votre serveur. Les connexions à autoriser dépendent de vos besoins spécifiques. Vous savez déjà comment rédiger des règles qui autorisent les connexions en fonction d’un nom de service ou d’un port ; vous l’avez fait pour SSH sur le port 22.

Vous pouvez faire de même pour HTTP sur le port 80, qui est utilisé par les serveurs web non chiffrés. Pour autoriser ce type de trafic, vous saisiriez :

  1. sudo ufw allow http

Vous pouvez également le faire pour HTTPS sur le port 443, utilisé par les serveurs web chiffrés. Pour autoriser ce type de trafic, vous saisiriez :

  1. sudo ufw allow https

Dans les deux scénarios, spécifier les ports fonctionnerait également, HTTP étant sur le port 80 et HTTPS sur le port 443. Par exemple :

  1. sudo ufw allow 80

Il existe cependant d’autres façons d’autoriser les connexions, en dehors de la spécification d’un port ou d’un service connu. Cela sera discuté dans la suite.

Plages de ports spécifiques

Vous pouvez spécifier des plages de ports avec UFW. Par exemple, certaines applications utilisent plusieurs ports au lieu d’un seul port.

Par exemple, pour autoriser les connexions X11, qui utilisent les ports 6000 à 6007, utilisez ces commandes :

  1. sudo ufw allow 6000:6007/tcp
  2. sudo ufw allow 6000:6007/udp

Lorsque vous spécifiez des plages de ports avec UFW, vous devez spécifier le protocole (tcp ou udp) auquel les règles doivent s’appliquer. Cela n’a pas été mentionné auparavant car ne pas spécifier le protocole autorise automatiquement les deux protocoles, ce qui est OK dans la plupart des cas.

Adresses IP spécifiques

Lorsque vous travaillez avec UFW, vous pouvez également spécifier des adresses IP. Par exemple, si vous souhaitez autoriser les connexions depuis une adresse IP spécifique, telle qu’une adresse IP de travail ou de domicile 203.0.113.4, vous devez spécifier from suivi de l’adresse IP :

  1. sudo ufw allow from 203.0.113.4

Vous pouvez également spécifier un port spécifique auquel l’adresse IP est autorisée à se connecter en ajoutant to any port suivi du numéro de port. Par exemple, si vous souhaitez autoriser 203.0.113.4 à se connecter au port 22 (SSH), utilisez cette commande :

  1. sudo ufw allow from 203.0.113.4 to any port 22

Sous-réseaux

Si vous souhaitez autoriser un sous-réseau d’adresses IP, vous pouvez le faire en utilisant la notation CIDR pour spécifier un masque de réseau. Par exemple, si vous voulez autoriser toutes les adresses IP allant de 203.0.113.1 à 203.0.113.254, vous pouvez utiliser cette commande :

  1. sudo ufw allow from 203.0.113.0/24

De même, vous pouvez également spécifier le port de destination auquel le sous-réseau 203.0.113.0/24 est autorisé à se connecter. Encore une fois, en utilisant le port 22 (SSH) comme exemple :

  1. sudo ufw allow from 203.0.113.0/24 to any port 22

Connexions à une Interface Réseau Spécifique

Si vous souhaitez créer une règle de pare-feu qui s’applique uniquement à une interface réseau spécifique, vous pouvez le faire en spécifiant allow in on, suivi du nom de l’interface réseau.

Il sera utile de rechercher vos interfaces réseau avant de continuer. Pour ce faire, utilisez cette commande :

  1. ip addr
Output
. . . 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

La sortie en surbrillance indique les noms des interfaces réseau. Elles ont généralement des noms comme eth0 ou enp3s2.

Si votre serveur possède une interface réseau publique nommée eth0, par exemple, vous pourriez autoriser le trafic HTTP vers celle-ci avec cette commande :

  1. sudo ufw allow in on eth0 to any port 80

Cela permettrait à votre serveur de recevoir des requêtes HTTP depuis Internet.

Ou, si vous souhaitez qu’un serveur de base de données MySQL (port 3306) écoute les connexions sur l’interface réseau privée eth1, vous pourriez utiliser cette commande:

  1. sudo ufw allow in on eth1 to any port 3306

Cela permettrait à d’autres serveurs de votre réseau privé de se connecter à votre base de données MySQL.

Étape 7 — Refus des connexions

Si vous n’avez pas modifié la politique par défaut pour les connexions entrantes, UFW est configuré pour refuser toutes les connexions entrantes. En général, cela simplifie le processus de création d’une politique de pare-feu sécurisée en vous obligeant à créer des règles autorisant explicitement des ports et des adresses IP spécifiques.

Parfois, vous voudrez refuser des connexions spécifiques en fonction de l’adresse IP source ou du sous-réseau, cependant, peut-être parce que vous savez que votre serveur est attaqué de là. De plus, si vous souhaitez modifier votre politique entrante par défaut en autoriser (ce qui n’est pas recommandé), vous devriez créer des règles de refus pour les services ou adresses IP pour lesquels vous ne souhaitez pas autoriser les connexions.

Pour écrire des règles de refus, vous pouvez utiliser les commandes décrites ci-dessus, en remplaçant autoriser par refuser.

Par exemple, pour refuser les connexions HTTP, vous pourriez utiliser cette commande:

  1. sudo ufw deny http

Ou si vous voulez refuser toutes les connexions provenant de 203.0.113.4, vous pourriez utiliser cette commande:

  1. sudo ufw deny from 203.0.113.4

Maintenant, vous pouvez apprendre comment implémenter des règles de suppression.

Étape 8 — Suppression des règles

Savoir comment supprimer des règles de pare-feu est aussi important que savoir comment les créer. Il existe deux façons de spécifier quelles règles supprimer : par le numéro de règle ou par la règle elle-même. C’est similaire à la manière dont les règles ont été spécifiées lors de leur création.

Par Numéro de Règle

Si vous utilisez le numéro de règle pour supprimer des règles de pare-feu, la première chose à faire est d’obtenir une liste de vos règles de pare-feu. La commande UFW status dispose de l’option numbered, qui affiche les numéros à côté de chaque règle :

  1. sudo ufw status numbered
Output
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

Si vous décidez de supprimer la règle 2, qui autorise les connexions HTTP sur le port 80, vous pouvez le spécifier dans la commande UFW delete suivante :

  1. sudo ufw delete 2

Cela affichera une invite de confirmation, à laquelle vous pouvez répondre par o/n. En tapant o, la règle 2 sera alors supprimée. Notez que si vous avez IPv6 activé, vous voudrez également supprimer la règle IPv6 correspondante.

Par Règle Réelle

L’alternative aux numéros de règle consiste à spécifier la règle réelle à supprimer. Par exemple, si vous souhaitez supprimer la règle allow http, vous pouvez l’écrire comme ceci :

  1. sudo ufw delete allow http

Vous pouvez également spécifier la règle avec allow 80 au lieu du nom du service :

  1. sudo ufw delete allow 80

Cette méthode supprimera à la fois les règles IPv4 et IPv6, si elles existent.

Étape 9 — Vérification de l’état et des règles de l’UFW

À tout moment, vous pouvez vérifier l’état de l’UFW avec cette commande :

  1. sudo ufw status verbose

Si l’UFW est désactivé, ce qui est la valeur par défaut, la sortie sera la suivante :

Output
Status: inactive

Si l’UFW est actif, ce qui devrait être le cas si vous avez suivi l’étape 3, la sortie indiquera qu’il est actif et listera toutes les règles que vous avez définies. Par exemple, si le pare-feu est configuré pour autoriser les connexions SSH (port 22) de n’importe où, la sortie pourrait inclure quelque chose comme ceci :

Output
Status: active To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

Utilisez la commande status si vous voulez vérifier comment l’UFW a configuré le pare-feu.

Étape 10 — Désactivation ou réinitialisation de l’UFW (facultatif)

Si vous décidez de ne pas utiliser l’UFW, vous pouvez le désactiver avec cette commande :

  1. sudo ufw disable

Toutes les règles que vous avez créées avec UFW ne seront plus actives. Vous pouvez toujours exécuter sudo ufw enable si vous avez besoin de l’activer plus tard.

Si vous avez déjà configuré des règles UFW, mais que vous décidez de recommencer, vous pouvez utiliser la commande de réinitialisation:

  1. sudo ufw reset

Cela désactivera UFW et supprimera toutes les règles que vous avez précédemment définies. Gardez à l’esprit que les politiques par défaut ne changeront pas pour revenir à leurs paramètres d’origine si vous les avez modifiées à un moment donné. Cela devrait vous donner un nouveau départ avec UFW.

Conclusion

Votre pare-feu est maintenant configuré pour permettre (au moins) les connexions SSH. Assurez-vous de permettre toutes les autres connexions entrantes dont votre serveur a besoin, tout en limitant également les connexions inutiles. Cela garantira que votre serveur est à la fois fonctionnel et sécurisé.

Pour en savoir plus sur les configurations UFW courantes, consultez ce tutoriel sur Les bases d’UFW : Règles et Commandes de Pare-feu Courantes.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian