Configuration UFW

J’ai déjà rédigé un tutoriel sur l’installation et la configuration d’IPTables, un outil puissant mais parfois complexe pour gérer les règles de pare-feu sous Linux. Aujourd’hui, je vais vous présenter un outil plus simple et accessible, appelé UFW (Uncomplicated Firewall). Le pare-feu est un élément essentiel pour protéger un système contre les menaces extérieures en régulant le trafic réseau et en bloquant ou autorisant les connexions selon des règles spécifiques.
Dans ce guide, nous allons apprendre à installer, configurer et utiliser UFW sur Debian 12, tout en le comparant à Ubuntu. Vous verrez que la configuration d’un pare-feu sécurisé peut se faire rapidement avec UFW, tout en offrant suffisamment de flexibilité pour les utilisateurs plus avancés. Dans la première partie du guide, je vais expliquer comment configurer UFW, et par la suite, je fournirai quelques exemples de configuration.

Installation d’UFW

Sur Debian et Ubuntu, UFW est disponible dans les dépôts officiels. Voici comment l’installe:
Ouvrez un terminal et exécutez les commandes suivantes :

sudo apt update
sudo apt install ufw

Vérification de l’installation

Après l’installation, vous pouvez vérifier le statut d’UFW avec cette commande :

sudo ufw status

Si UFW n’est pas activé, le statut sera inactive. C’est normal après l’installation. Avant d’activer le pare-feu, nous allons ajouter une première règle pour SSH.

Configuration d’UFW

2.1 Ajouter des règles pour SSH
Si vous gérez votre serveur à distance, il est impératif d’autoriser les connexions SSH avant d’activer UFW, pour éviter de perdre l’accès à votre serveur. Voici comment autoriser SSH (port 22) :

sudo ufw allow ssh

Ou pour spécifier le protocole :

sudo ufw allow 22/tcp

Si vous avez modifié le port SSH pour utiliser le port 222 (par exemple), vous pouvez l’autoriser avec cette commande :

sudo ufw allow 222/tcp

2.2 Permettre le trafic web (HTTP et HTTPS)
Pour un serveur web, vous devrez autoriser les ports HTTP (80) et HTTPS (443). Voici les commandes pour les autoriser :

sudo ufw allow http
sudo ufw allow https

Ou en spécifiant les ports directement :

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

2.3 Bloquer un port spécifique
Si vous souhaitez bloquer un port particulier, par exemple le port 25 utilisé pour le courrier électronique SMTP, utilisez la commande suivante :

 

sudo ufw deny 25/tcp

 Activation et désactivation d’UFW

3.1 Activer UFW

Après avoir ajouté les règles nécessaires, activez UFW avec la commande suivante :

sudo ufw enable

Cette commande active UFW et applique les règles par défaut, qui bloquent toutes les connexions entrantes et autorisent toutes les connexions sortantes. Ne faites pas cela avant d’ajouter SSH, sinon vous risquez de perdre l’accès distant à votre serveur. Si cela arrive, vous devrez vous connecter physiquement à votre serveur !

3.2 Désactiver UFW
Si vous avez besoin de désactiver temporairement UFW, utilisez cette commande :

sudo ufw disable

Gestion des règles

4.1 Politique par défaut
Avant d’ajouter des règles spécifiques, il est recommandé de définir une politique par défaut. Par exemple, pour bloquer toutes les connexions entrantes et autoriser toutes les connexions sortantes, utilisez ces commandes :

sudo ufw default deny incoming
sudo ufw default allow outgoing

4.2 Voir l’état et les règles actives
Vous pouvez vérifier l’état actuel de votre pare-feu et voir quelles règles sont en place avec cette commande :

sudo ufw status

Pour obtenir plus de détails :

sudo ufw status verbose

4.3 Supprimer une règle
Si vous avez ajouté une règle par erreur ou que vous souhaitez la supprimer, utilisez la syntaxe suivante :

sudo ufw delete allow 80/tcp

4.4 Limiter les connexions (règles limit)
Pour éviter les attaques par force brute, vous pouvez limiter les connexions à un service comme SSH. Par exemple, pour limiter les connexions SSH à six tentatives en 30 secondes, utilisez la commande suivante :

sudo ufw limit ssh/tcp

Cette règle ajoute une protection contre les attaques répétées. Si une adresse IP tente de se connecter plus de six fois dans une fenêtre de 30 secondes, les connexions supplémentaires seront temporairement bloquées. Notez que la limite de 30 secondes est une valeur par défaut d’UFW, et elle ne peut pas être modifiée sans configurer directement les règles via iptables.

4.5 Restreindre l’accès à une adresse IP spécifique
Si vous voulez autoriser uniquement une adresse IP spécifique à accéder à votre serveur via SSH, utilisez cette commande :

sudo ufw allow from 123.123.123.123 to any port 22

Remplacez l’adresse 123.123.123.123 par votre propre adresse IP. Cela permettra uniquement à cette adresse IP de se connecter via SSH.

4.6 Autoriser un sous-réseau entier
Pour autoriser un sous-réseau entier à accéder à un service comme SSH, utilisez cette commande :

sudo ufw allow from 192.168.1.0/24 to any port 22

Exemples de configuration

5.1 Serveur web avec SSH
Si vous avez un serveur web et que vous souhaitez autoriser uniquement les connexions SSH, HTTP, et HTTPS, voici un exemple de configuration :

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

5.2 Serveur de fichiers
Si vous configurez un serveur de fichiers avec Samba (port 445) sur le réseau 192.168.1.0/24, vous pouvez configurer UFW ainsi :

sudo ufw default deny incoming
sudo ufw allow from 192.168.1.0/24 to any port 445 proto tcp
sudo ufw allow ssh
sudo ufw enable

Cette configuration :

  • Bloque toutes les connexions entrantes par défaut.
  • Autorise les connexions Samba depuis le réseau local (192.168.1.0/24) en utilisant le protocole TCP sur le port 445.
  • Autorise les connexions SSH.

Si vous utilisez un autre réseau, n’oubliez pas de remplacer l’adresse IP 192.168.1.0/24 par celle de votre propre réseau local.

5.3 Serveur de base de données
Si vous avez un serveur de base de données comme MySQL ou MariaDB, vous pouvez restreindre l’accès à une machine spécifique. Voici comment configurer UFW :

sudo ufw default deny incoming
sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp
sudo ufw allow ssh
sudo ufw enable

192.168.1.100 est l’adresse IP de la machine autorisée à se connecter à la base de données.
Le port 3306 est utilisé par MySQL/MariaDB.
SSH est également autorisé pour la gestion à distance.

5.4 Serveur de messagerie (Postfix)
Pour un serveur de messagerie utilisant Postfix, vous aurez besoin d’autoriser le trafic entrant sur les ports 25 (SMTP), 587 (submission), et 993 (IMAP sécurisé). Voici une configuration typique pour un serveur de messagerie qui accepte les connexions depuis n’importe où :

sudo ufw default deny incoming
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 993/tcp
sudo ufw allow ssh
sudo ufw enable

Cette configuration autorise :

  • SMTP sur le port 25 pour la réception des emails.
  • Submission sur le port 587 pour les utilisateurs authentifiés envoyant des emails.
  • IMAP sécurisé sur le port 993 pour la récupération des emails via un client de messagerie.

5.5 Serveur FTP sécurisé (FTPS)
Pour un serveur FTPS, qui est FTP sécurisé via TLS, vous devez autoriser les ports 21 (FTP), 990 (FTPS), et une plage de ports passifs utilisée pour les connexions de données. Voici un exemple de configuration :

sudo ufw default deny incoming
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw allow ssh
sudo ufw enable

Cette configuration :

  • Autorise le port 21 pour les commandes FTP.
  • Autorise le port 990 pour les connexions FTPS.
  • Ouvre une plage de ports 40000 à 50000 pour les connexions passives FTP.

 

Différences entre Debian et Ubuntu

Debian 12
Sur Debian 12, UFW n’est pas activé par défaut. Vous devez l’installer et l’activer manuellement comme décrit plus haut. Cependant, la configuration est identique à Ubuntu en ce qui concerne les commandes et la gestion des règles.
Ubuntu
Sur Ubuntu, UFW est généralement installé mais pas activé par défaut. Toutefois, pour les versions serveur, il peut être activé après l’installation. Vous utiliserez les mêmes commandes que sur Debian pour gérer UFW, car l’outil fonctionne de manière identique sur les deux systèmes.

UFW est un outil simple mais puissant pour gérer un pare-feu sous Linux. Il offre une alternative plus accessible à IPTables tout en fournissant suffisamment de flexibilité pour la plupart des scénarios de sécurité. Que vous configuriez un serveur web, un serveur de fichiers ou un environnement plus complexe, UFW vous permet de rapidement mettre en place des règles de sécurité robustes.

Famille Red Hat (RHEL, CentOS, Fedora)

Dans les distributions de la famille Red Hat, comme RHEL, CentOS, ou Fedora, UFW n’est pas installé ni utilisé par défaut. Ces distributions utilisent principalement Firewalld comme outil de gestion du pare-feu.

Avec les exemples et les explications fournies dans cet article, vous devriez maintenant être capable d’utiliser UFW pour sécuriser vos systèmes Debian 12 et Ubuntu, en fonction de vos besoins spécifiques.

Bonne chance !