
Un pare-feu est un outil de surveillance et de filtrage du trafic réseau entrant et sortant. Il fonctionne en définissant un ensemble de règles de sécurité qui déterminent s'il faut autoriser ou bloquer un trafic spécifique.
Ubuntu est livré avec un outil de configuration de pare-feu appelé UFW (Uncomplicated Firewall). Il s'agit d'un frontal convivial pour la gestion des règles de pare-feu iptables. Son objectif principal est de faciliter la gestion du pare-feu ou, comme son nom l'indique, de la simplifier.
Cet article décrit comment utiliser l'outil UFW pour configurer et gérer un pare-feu sur Ubuntu 20.04. Un pare-feu correctement configuré est l'un des aspects les plus importants de la sécurité globale du système.
Prérequis #
Seuls root ou les utilisateurs disposant de privilèges sudo peuvent gérer le pare-feu du système. La meilleure pratique consiste à exécuter des tâches administratives en tant qu'utilisateur sudo.
Installer UFW #
UFW fait partie de l'installation standard d'Ubuntu 20.04 et doit être présent sur votre système. Si pour une raison quelconque il n'est pas installé, vous pouvez installer le package en tapant :
sudo apt update
sudo apt install ufw
Vérifier le statut UFW #
UFW est désactivé par défaut. Vous pouvez vérifier l'état du service UFW avec la commande suivante :
sudo ufw status verbose
La sortie indiquera que l'état du pare-feu est inactif :
Status: inactive
Si UFW est activé, la sortie ressemblera à ce qui suit :

Politiques par défaut UFW #
Le comportement par défaut du pare-feu UFW est de bloquer tout le trafic entrant et de transfert et d'autoriser tout le trafic sortant. Cela signifie que toute personne essayant d'accéder à votre serveur ne pourra pas se connecter à moins que vous n'ouvriez spécifiquement le port. Les applications et services exécutés sur votre serveur pourront accéder au monde extérieur.
Les politiques par défaut sont définies dans le /etc/default/ufw
fichier et peut être modifié soit en modifiant manuellement le fichier, soit avec le sudo ufw default <policy> <chain>
commande.
Les stratégies de pare-feu constituent la base de la création de règles plus complexes et définies par l'utilisateur. En règle générale, les stratégies par défaut UFW initiales constituent un bon point de départ.
Profils d'application #
Un profil d'application est un fichier texte au format INI qui décrit le service et contient des règles de pare-feu pour le service. Les profils d'application sont créés dans le /etc/ufw/applications.d
répertoire lors de l'installation du package.
Vous pouvez lister tous les profils d'application disponibles sur votre serveur en tapant :
sudo ufw app list
Selon les packages installés sur votre système, le résultat ressemblera à ce qui suit :
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Pour trouver plus d'informations sur un profil spécifique et les règles incluses, utilisez la commande suivante :
sudo ufw app info 'Nginx Full'
La sortie montre que le profil "Nginx Full" ouvre les ports 80
et 443
.
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
Vous pouvez également créer des profils personnalisés pour vos applications.
Activer UFW #
Si vous vous connectez à votre Ubuntu à partir d'un emplacement distant, avant d'activer le pare-feu UFW, vous devez explicitement autoriser les connexions SSH entrantes. Sinon, vous ne pourrez plus vous connecter à la machine.
Pour configurer votre pare-feu UFW afin d'autoriser les connexions SSH entrantes, saisissez la commande suivante :
sudo ufw allow ssh
Rules updated
Rules updated (v6)
Si SSH s'exécute sur un port non standard, vous devez ouvrir ce port.
Par exemple, si votre démon ssh écoute sur le port 7722
, saisissez la commande suivante pour autoriser les connexions sur ce port :
sudo ufw allow 7722/tcp
Maintenant que le pare-feu est configuré pour autoriser les connexions SSH entrantes, vous pouvez l'activer en tapant :
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Vous serez averti que l'activation du pare-feu peut perturber les connexions ssh existantes, tapez simplement y
et appuyez sur Enter
.
Ouverture des ports #
Selon les applications qui s'exécutent sur le système, vous devrez peut-être également ouvrir d'autres ports. La syntaxe générale pour ouvrir un port est la suivante :
ufw allow port_number/protocol
Vous trouverez ci-dessous quelques façons d'autoriser les connexions HTTP.
La première option consiste à utiliser le nom du service. UFW vérifie le /etc/services
fichier pour le port et le protocole du service spécifié :
sudo ufw allow http
Vous pouvez également spécifier le numéro de port et le protocole :
sudo ufw allow 80/tcp
Lorsqu'aucun protocole n'est donné, UFW crée des règles pour tcp
et udp
.
Une autre option consiste à utiliser le profil d'application; dans ce cas, "Nginx HTTP":
sudo ufw allow 'Nginx HTTP'
UFW prend également en charge une autre syntaxe pour spécifier le protocole à l'aide du proto
mot-clé :
sudo ufw allow proto tcp to any port 80
Plages de ports #
UFW vous permet également d'ouvrir des plages de ports. Les ports de début et de fin sont séparés par deux-points (:
), et vous devez spécifier le protocole, soit tcp
ou udp
.
Par exemple, si vous souhaitez autoriser les ports de 7100
à 7200
sur les deux tcp
et udp
, vous exécuterez la commande suivante :
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
Adresse IP spécifique et numéro de port
Pour autoriser les connexions sur tous les ports à partir d'une adresse IP source donnée, utilisez le from
mot clé suivi de l'adresse source.
Voici un exemple de liste blanche d'une adresse IP :
sudo ufw allow from 64.63.62.61
Si vous souhaitez autoriser l'accès à l'adresse IP donnée uniquement à un port spécifique, utilisez le to any port
mot-clé suivi du numéro de port.
Par exemple, pour autoriser l'accès sur le port 22
depuis une machine avec l'adresse IP 64.63.62.61
, saisissez :
sudo ufw allow from 64.63.62.61 to any port 22
Numéro de sous-réseaux
La syntaxe pour autoriser les connexions à un sous-réseau d'adresses IP est la même que lors de l'utilisation d'une seule adresse IP. La seule différence est que vous devez spécifier le masque de réseau.
Vous trouverez ci-dessous un exemple montrant comment autoriser l'accès pour les adresses IP allant de 192.168.1.1
à 192.168.1.254
vers le port 3360
(MySQL):
sudo ufw allow from 192.168.1.0/24 to any port 3306
Numéro d'interface réseau spécifique
Pour autoriser les connexions sur une interface réseau particulière, utilisez le in on
mot clé suivi du nom de l'interface réseau :
sudo ufw allow in on eth2 to any port 3306
Refuser les connexions #
La politique par défaut pour toutes les connexions entrantes est définie sur deny
, et si vous ne l'avez pas modifié, UFW bloquera toutes les connexions entrantes, sauf si vous ouvrez spécifiquement la connexion.
Écrire des règles de refus revient au même qu'écrire des règles d'autorisation; il vous suffit d'utiliser le deny
mot-clé au lieu de allow
.
Disons que vous avez ouvert les ports 80
et 443
, et votre serveur est attaqué depuis le 23.24.25.0/24
réseau. Pour refuser toutes les connexions depuis le 23.24.25.0/24
vous exécuteriez la commande suivante :
sudo ufw deny from 23.24.25.0/24
Voici un exemple de refus d'accès uniquement aux ports 80
et 443
du 23.24.25.0/24
vous pouvez utiliser la commande suivante :
sudo ufw deny proto tcp from 23.24.25.0/24 to any port 80,443
Suppression des règles UFW #
Il existe deux manières différentes de supprimer des règles UFW par numéro de règle et en spécifiant la règle réelle.
La suppression de règles par numéro de règle est plus facile, en particulier lorsque vous débutez avec UFW. Pour supprimer d'abord une règle par un numéro de règle, vous devez trouver le numéro de la règle que vous souhaitez supprimer. Pour obtenir une liste de règles numérotées, utilisez le ufw status numbered
commande :
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 8080/tcp ALLOW IN Anywhere
Pour supprimer la règle numéro 3
, celui qui autorise les connexions au port 8080
, vous saisiriez :
sudo ufw delete 3
La deuxième méthode consiste à supprimer une règle en spécifiant la règle réelle. Par exemple, si vous avez ajouté une règle pour ouvrir le port 8069
vous pouvez le supprimer avec :
sudo ufw delete allow 8069
Désactiver UFW #
Si pour une raison quelconque vous souhaitez arrêter UFW et désactiver toutes les règles, vous pouvez utiliser :
sudo ufw disable
Plus tard, si vous souhaitez réactiver UTF et activer toutes les règles, tapez simplement :
sudo ufw enable
Réinitialiser UFW #
La réinitialisation d'UFW désactivera UFW et supprimera toutes les règles actives. Ceci est utile si vous souhaitez annuler toutes vos modifications et recommencer à zéro.
Pour réinitialiser UFW, tapez la commande suivante :
sudo ufw reset
Numéro de masquage IP
IP Masquerading est une variante de NAT (traduction d'adresse réseau) dans le noyau Linux qui traduit le trafic réseau en réécrivant les adresses IP et les ports source et de destination. Avec IP Masquerading, vous pouvez autoriser une ou plusieurs machines d'un réseau privé à communiquer avec Internet à l'aide d'une machine Linux qui agit comme une passerelle.
La configuration de l'IP Masquerading avec UFW implique plusieurs étapes.
Tout d'abord, vous devez activer le transfert IP. Pour ce faire, ouvrez le /etc/ufw/sysctl.conf
fichier :
sudo nano /etc/ufw/sysctl.conf
Trouvez et décommentez la ligne qui lit net.ipv4.ip_forward = 1
:
net/ipv4/ip_forward=1
Ensuite, vous devez configurer UFW pour autoriser les paquets transférés. Ouvrez le fichier de configuration UFW :
sudo nano /etc/default/ufw
Localisez le DEFAULT_FORWARD_POLICY
key, et changez la valeur de DROP
pour ACCEPT
:
DEFAULT_FORWARD_POLICY="ACCEPT"
Vous devez maintenant définir la stratégie par défaut pour le POSTROUTING
chaîne dans le nat
table et la règle de la mascarade. Pour cela, ouvrez le /etc/ufw/before.rules
fichier et ajoutez les lignes surlignées en jaune, comme indiqué ci-dessous :
sudo nano /etc/ufw/before.rules
Ajoutez les lignes suivantes :
/etc/ufw/before.rules#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
N'oubliez pas de remplacer eth0
dans le -A POSTROUTING
ligne pour correspondre au nom de l'interface réseau publique :
Lorsque vous avez terminé, enregistrez et fermez le fichier.
Enfin, rechargez les règles UFW en désactivant et en réactivant UFW :
sudo ufw disable
sudo ufw enable