Comment configurer un pare-feu avec UFW sur Debian 10

introduction

UFW, ou Uncomplicated Firewall, est une interface vers + iptables + qui est conçue pour simplifier le processus de configuration d’un pare-feu. Bien que + iptables + soit un outil solide et flexible, il peut être difficile pour les débutants d’apprendre à l’utiliser pour configurer correctement un pare-feu. Si vous souhaitez commencer à sécuriser votre réseau et ne savez pas quel outil utiliser, UFW peut être le bon choix pour vous.

Ce tutoriel vous montrera comment configurer un pare-feu avec UFW sous Debian 10.

Conditions préalables

Pour suivre ce didacticiel, vous aurez besoin d’un serveur Debian 10 avec un utilisateur + sudo + non root, que vous pouvez configurer en suivant les étapes 1 à 3 de la section https://www.digitalocean.com/community/tutorials/. initial-server-setup-with-debian-10 [Tutoriel sur la configuration initiale d’un serveur avec Debian 10].

Étape 1 - Installation de UFW

Debian n’installe pas UFW par défaut. Si vous avez suivi l’intégralité du Initial Server Tutorial Setup, vous aurez installé et activé UFW. Sinon, installez-le maintenant en utilisant + apt +:

sudo apt install ufw

Nous allons configurer UFW et l’activer dans les étapes suivantes.

Étape 2 - Utilisation d’IPv6 avec UFW (facultatif)

Ce tutoriel est conçu pour IPv4, mais fonctionnera pour IPv6 tant que vous l’activez. Si IPv6 est activé sur votre serveur Debian, vous devrez 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 le configurer, ouvrez le fichier de configuration UFW + / etc / default / ufw + avec + nano + ou votre éditeur préféré:

sudo nano /etc/default/ufw

Ensuite, assurez-vous que la valeur de + IPV6 + est + yes +. Ça devrait ressembler à ça:

extrait de / etc / default / ufw

IPV6=

Enregistrez et fermez le fichier. Désormais, lorsque UFW est activé, il sera configuré pour écrire les règles de pare-feu IPv4 et IPv6. Avant d’activer UFW, vous devez toutefois vous assurer que votre pare-feu est configuré pour vous permettre de vous connecter via SSH. Commençons par définir les stratégies par défaut.

Étape 3 - Configuration des stratégies par défaut

Si vous démarrez tout juste avec votre pare-feu, les premières règles à définir sont vos stratégies par défaut. Ces règles gèrent le trafic qui ne correspond explicitement à aucune autre règle. 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’atteindre votre serveur ne pourra pas se connecter, tandis que toute application du serveur pourra atteindre le monde extérieur.

Réglez vos règles UFW sur les valeurs par défaut afin que nous puissions être sûrs de pouvoir suivre ce tutoriel. Pour définir les valeurs par défaut utilisées par UFW, utilisez ces commandes:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Ces commandes définissent les valeurs par défaut pour refuser l’accès et autoriser les connexions sortantes. Ces valeurs par défaut du pare-feu pourraient suffire à un ordinateur personnel, mais les serveurs doivent généralement répondre aux demandes entrantes d’utilisateurs externes. Nous examinerons cela ensuite.

Étape 4 - Autoriser les connexions SSH

Si nous activions maintenant notre pare-feu UFW, il refuserait toutes les connexions entrantes. Cela signifie que nous devrons créer des règles qui autorisent explicitement les connexions entrantes légitimes - connexions SSH ou HTTP, par exemple - si nous voulons que notre serveur réponde à ces types de demandes. Si vous utilisez un serveur cloud, vous souhaiterez probablement autoriser les connexions SSH entrantes afin de pouvoir vous connecter et gérer votre serveur.

Pour configurer votre serveur pour autoriser les connexions SSH entrantes, vous pouvez utiliser cette commande:

sudo ufw allow ssh

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

Cependant, nous pouvons réellement écrire la règle équivalente en spécifiant le port au lieu du nom du service. Par exemple, cette commande produit le même résultat que celui ci-dessus:

sudo ufw allow 22

Si vous avez configuré votre démon SSH pour utiliser un autre port, vous devrez spécifier le port approprié. Par exemple, si votre serveur SSH écoute sur le port + 2222 +, vous pouvez utiliser cette commande pour autoriser les connexions sur ce port:

sudo ufw allow

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

Étape 5 - Activer UFW

Pour activer UFW, utilisez cette commande:

sudo ufw enable

Vous recevrez un avertissement indiquant que la commande peut perturber les connexions SSH existantes. Nous avons déjà mis en place une règle de pare-feu qui autorise les connexions SSH. Il devrait donc être correct de continuer. Répondez à l’invite avec + y + et appuyez sur + ENTER.

Le pare-feu est maintenant actif. Exécutez la commande + sudo ufw status verbose + pour voir les règles que vous avez définies. La suite de ce didacticiel explique comment utiliser UFW de manière plus détaillée, notamment en autorisant et en refusant différents types de connexions.

Étape 6 - Autoriser d’autres connexions

À ce stade, vous devez autoriser toutes les autres connexions dont votre serveur a besoin pour fonctionner correctement. Les connexions que vous devez autoriser dépendent de vos besoins spécifiques. Heureusement, vous savez déjà comment écrire des règles autorisant les connexions basées sur un nom de service ou un port; nous l’avons déjà fait pour SSH sur le port + 22 +. Vous pouvez également le faire pour:

  • HTTP sur le port + 80 +, utilisé par les serveurs Web non chiffrés. Pour autoriser ce type de trafic, vous devez taper + sudo ufw allow http + ou + sudo ufw allow 80 +.

  • HTTPS sur le port + 443 +, qui est utilisé par les serveurs Web chiffrés. Pour autoriser ce type de trafic, vous devez taper + sudo ufw allow https + ou + sudo ufw allow 443 +.

Cependant, il existe d’autres moyens d’autoriser les connexions en dehors de la spécification d’un port ou d’un service connu. Nous en discuterons ensuite.

Gammes 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.

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

sudo ufw allow :/tcp
sudo ufw allow :/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. Nous n’avons pas mentionné cela 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 à partir d’une adresse IP spécifique, telle qu’une adresse IP professionnelle ou personnelle de «+ 203.0.113.4 », vous devez spécifier « de +» puis l’adresse IP:

sudo ufw allow from

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

sudo ufw allow from  to any port

Sous-réseaux

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

sudo ufw allow from /

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. De nouveau, nous allons utiliser le port + 22 + (SSH) comme exemple:

sudo ufw allow from / to any port 22

Connexions à une interface réseau spécifique

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

Vous voudrez peut-être consulter vos interfaces réseau avant de continuer. Pour ce faire, utilisez cette commande:

ip addr
Output2: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: : <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

La sortie en surbrillance indique les noms d’interface réseau. Ils sont généralement nommés quelque chose comme + eth0 + ou + enp3s2 +.

Si votre serveur dispose d’une interface réseau publique appelée + eth0 +, par exemple, vous pouvez autoriser le trafic HTTP avec cette commande:

sudo ufw allow in on  to any port

Cela permettrait à votre serveur de recevoir des requêtes HTTP à partir d’Internet public.

Ou, si vous souhaitez que votre serveur de base de données MySQL (port + 3306 +) écoute les connexions sur l’interface de réseau privé + eth1 +, vous pouvez utiliser cette commande:

sudo ufw allow in on  to any port

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

Étape 7 - Refuser les connexions

Si vous n’avez pas modifié la stratégie par défaut pour les connexions entrantes, UFW est configuré pour refuser toutes les connexions entrantes. En règle générale, cela simplifie le processus de création d’une stratégie 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 peut-être refuser des connexions spécifiques en fonction de l’adresse IP source ou du sous-réseau, peut-être parce que vous savez que votre serveur est attaqué à partir de là. De plus, si vous souhaitez modifier votre stratégie entrante par défaut en * allow * (ce qui n’est pas recommandé), vous devez créer des règles * deny * pour tous les services ou adresses IP pour lesquels vous ne souhaitez pas autoriser de connexions.

Pour écrire des règles * deny *, vous pouvez utiliser les commandes décrites ci-dessus, en remplaçant * allow * par * deny *.

Par exemple, pour refuser des connexions HTTP, vous pouvez utiliser cette commande:

sudo ufw deny http

Ou si vous souhaitez refuser toutes les connexions à partir de + 203.0.113.4 +, vous pouvez utiliser cette commande:

sudo ufw deny from

Voyons maintenant comment supprimer des règles.

Étape 8 - Suppression de règles

Savoir supprimer les règles de pare-feu est tout aussi important que savoir les créer. Il existe deux manières de spécifier les règles à supprimer: soit par le numéro de la règle, soit par la règle elle-même. Ceci est similaire à la façon dont les règles ont été spécifiées lors de leur création. Nous allons commencer par expliquer la méthode * delete by rule number *.

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 a l’option` + numérotée`, qui affiche des nombres à côté de chaque règle:

sudo ufw status numbered
OutputStatus: active

    To                         Action      From
    --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

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

sudo ufw delete

Cela affichera une invite de confirmation, à laquelle vous pourrez répondre avec + y / n +. Taper + y + effacera alors la règle + 2 +. Notez que si vous avez activé IPv6, 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 à supprimer. Par exemple, si vous souhaitez supprimer la règle + autoriser http +, vous pouvez l’écrire comme suit:

sudo ufw delete

Vous pouvez également spécifier la règle avec + allow 80 + à la place du nom du service:

sudo ufw delete

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

Étape 9 - Vérification du statut et des règles UFW

A tout moment, vous pouvez vérifier le statut de UFW avec cette commande:

sudo ufw status verbose

Si UFW est désactivé, ce qui est la valeur par défaut, vous verrez quelque chose comme ceci:

OutputStatus: inactive

Si UFW est actif, ce qui devrait être le cas si vous avez suivi l’étape 3, le résultat indiquera qu’il est actif et répertoriera 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 peut ressembler à ceci:

OutputStatus: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

Utilisez la commande + status + si vous souhaitez vérifier comment UFW a configuré le pare-feu.

Étape 10 - Désactiver ou réinitialiser UFW (facultatif)

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

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 devez l’activer ultérieurement.

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

sudo ufw reset

Cela désactivera UFW et supprimera toutes les règles que vous avez précédemment définies. N’oubliez pas que les stratégies par défaut ne seront pas modifiées selon 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 autoriser (au moins) les connexions SSH. Veillez à autoriser toutes les autres connexions entrantes dont votre serveur a besoin, tout en limitant les connexions inutiles. Cela garantira que votre serveur est à la fois fonctionnel et sécurisé.

Pour en savoir plus sur les configurations UFW les plus courantes, consultez ce didacticiel à l’adresse FW Essentials: règles et commandes de pare-feu communes .