UFW Essentials : règles et commandes courantes du pare-feu
Introduction
UFW (uncomplicated firewall) est un outil de configuration de pare-feu qui s'exécute sur iptables
, inclus par défaut dans les distributions Ubuntu . Il fournit une interface simplifiée pour configurer les cas d'utilisation courants du pare-feu via la ligne de commande.
Ce guide de style feuille de triche fournit une référence rapide aux cas d'utilisation et aux commandes UFW courants, y compris des exemples sur la façon d'autoriser et de bloquer les services par port, interface réseau et adresse IP source.
Comment utiliser ce guide
- Ce guide est sous forme de feuille de triche avec des extraits de ligne de commande autonomes.
- Accédez à n'importe quelle section pertinente pour la tâche que vous essayez d'accomplir.
- Lorsque vous voyez du texte en surbrillance dans les commandes de ce guide, gardez à l'esprit que ce texte doit faire référence aux adresses IP de votre propre réseau.
N'oubliez pas que vous pouvez vérifier votre ensemble de règles UFW actuel avec sudo ufw status
ou sudo ufw status verbose
.
Vérifier l'état UFW
Pour vérifier si ufw
est activé, exécutez :
sudo ufw status
OutputStatus: inactive
La sortie indiquera si votre pare-feu est actif ou non.
Activer UFW
Si vous recevez un message Status: inactive
lors de l'exécution de ufw status
, cela signifie que le pare-feu n'est pas encore activé sur le système. Vous devrez exécuter une commande pour l'activer.
Par défaut, lorsqu'il est activé, UFW bloque l'accès externe à tous les ports d'un serveur. En pratique, cela signifie que si vous êtes connecté à un serveur via SSH et que vous activez ufw
avant d'autoriser l'accès via le port SSH, vous serez déconnecté. Assurez-vous de suivre la section comment activer l'accès SSH de ce guide avant d'activer le pare-feu si tel est votre cas.
Pour activer UFW sur votre système, exécutez :
sudo ufw enable
Vous verrez une sortie comme celle-ci :
OutputFirewall is active and enabled on system startup
Pour voir ce qui est actuellement bloqué ou autorisé, vous pouvez utiliser le paramètre verbose
lors de l'exécution de ufw status
, comme suit :
sudo ufw status
OutputStatus: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip
Désactiver UFW
Si pour une raison quelconque vous devez désactiver UFW, vous pouvez le faire avec la commande suivante :
sudo ufw disable
Sachez que cette commande désactivera complètement le service de pare-feu sur votre système.
Bloquer une adresse IP
Pour bloquer toutes les connexions réseau provenant d'une adresse IP spécifique, exécutez la commande suivante, en remplaçant l'adresse IP en surbrillance par l'adresse IP que vous souhaitez bloquer :
sudo ufw deny from 203.0.113.100
OutputRule added
Dans cet exemple, from 203.0.113.100
spécifie une adresse IP source de « 203.0.113.100 ».
Si vous exécutez sudo ufw status
maintenant, vous verrez l'adresse IP spécifiée répertoriée comme refusée :
OutputStatus: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100
Toutes les connexions, entrantes ou sortantes, sont bloquées pour l'adresse IP spécifiée.
Bloquer un sous-réseau
Si vous devez bloquer un sous-réseau complet, vous pouvez utiliser l'adresse de sous-réseau comme paramètre from
sur la commande ufw deny
. Cela bloquerait toutes les adresses IP dans l'exemple de sous-réseau 203.0.113.0/24
:
sudo ufw deny from 203.0.113.0/24
OutputRule added
Bloquer les connexions entrantes à une interface réseau
Pour bloquer les connexions entrantes d'une adresse IP spécifique vers une interface réseau spécifique, exécutez la commande suivante, en remplaçant l'adresse IP en surbrillance par l'adresse IP que vous souhaitez bloquer :
sudo ufw deny in on eth0 from 203.0.113.100
OutputRule added
Le paramètre in
indique à ufw
d'appliquer la règle uniquement pour les connexions incoming, et le paramètre on eth0
spécifie que la règle s'applique uniquement au eth0
. Cela peut être utile si vous avez un système avec plusieurs interfaces réseau (y compris des interfaces virtuelles) et que vous devez bloquer l'accès externe à certaines de ces interfaces, mais pas à toutes.
Autoriser une adresse IP
Pour autoriser toutes les connexions réseau provenant d'une adresse IP spécifique, exécutez la commande suivante, en remplaçant l'adresse IP en surbrillance par l'adresse IP à laquelle vous souhaitez autoriser l'accès :
sudo ufw allow from 203.0.113.101
OutputRule added
Si vous exécutez sudo ufw status
maintenant, vous verrez une sortie similaire à celle-ci, affichant le mot ALLOW
à côté de l'adresse IP que vous venez d'ajouter.
OutputStatus: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101
Vous pouvez également autoriser les connexions à partir d'un sous-réseau entier en fournissant le masque de sous-réseau correspondant pour un hôte, tel que 203.0.113.0/24
.
Autoriser les connexions entrantes à une interface réseau
Pour autoriser les connexions entrantes d'une adresse IP spécifique vers une interface réseau spécifique, exécutez la commande suivante, en remplaçant l'adresse IP en surbrillance par l'adresse IP que vous souhaitez autoriser :
sudo ufw allow in on eth0 from 203.0.113.102
OutputRule added
Le paramètre in
indique à ufw
d'appliquer la règle uniquement pour les connexions incoming, et le paramètre on eth0
spécifie que la règle s'applique uniquement au eth0
.
Si vous exécutez sudo ufw status
maintenant, vous verrez une sortie semblable à celle-ci :
OutputStatus: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102
Supprimer la règle UFW
Pour supprimer une règle que vous avez précédemment configurée dans UFW, utilisez ufw delete
suivi de la règle (allow
ou deny
) et de la spécification cible. L'exemple suivant supprimerait une règle précédemment définie pour autoriser toutes les connexions à partir d'une adresse IP de 203.0.113.101
:
sudo ufw delete allow from 203.0.113.101
OutputRule deleted
Une autre façon de spécifier la règle que vous souhaitez supprimer consiste à fournir l'ID de règle. Ces informations peuvent être obtenues avec la commande suivante :
sudo ufw status numbered
OutputStatus: active To Action From -- ------ ---- [ 1] Anywhere DENY IN 203.0.113.100 [ 2] Anywhere on eth0 ALLOW IN 203.0.113.102
À partir de la sortie, vous pouvez voir qu'il y a deux règles actives. La première règle, avec des valeurs en surbrillance, refuse toutes les connexions provenant de l'adresse IP 203.0.113.100
. La deuxième règle autorise les connexions sur l'interface eth0
provenant de l'adresse IP 203.0.113.102
.
Étant donné que, par défaut, UFW bloque déjà tous les accès externes, sauf autorisation explicite, la première règle est redondante, vous pouvez donc la supprimer. Pour supprimer une règle par son ID, exécutez :
sudo ufw delete 1
Vous serez invité à confirmer l'opération et à vous assurer que l'ID que vous fournissez fait référence à la bonne règle que vous souhaitez supprimer.
OutputDeleting: deny from 203.0.113.100 Proceed with operation (y|n)? y Rule deleted
Si vous répertoriez vos règles avec sudo ufw status
, vous verrez que la règle a été supprimée.
Répertorier les profils d'application disponibles
Lors de l'installation, les applications qui s'appuient sur les communications réseau configurent généralement un profil UFW que vous pouvez utiliser pour autoriser la connexion à partir d'adresses externes. C'est souvent la même chose que d'exécuter ufw allow from
, avec l'avantage de fournir un raccourci qui résume les numéros de port spécifiques qu'un service utilise et fournit une nomenclature conviviale aux services référencés.
Pour répertorier les profils actuellement disponibles, exécutez la commande suivante :
sudo ufw app list
Si vous avez installé un service tel qu'un serveur Web ou un autre logiciel dépendant du réseau et qu'un profil n'a pas été mis à disposition dans UFW, assurez-vous d'abord que le service est activé. Pour les serveurs distants, vous aurez généralement OpenSSH facilement disponible :
OutputAvailable applications: OpenSSH
Activer le profil d'application
Pour activer un profil d'application UFW, exécutez ufw allow
suivi du nom du profil d'application que vous souhaitez activer, que vous pouvez obtenir avec une commande sudo ufw app list
. Dans l'exemple suivant, nous activons le profil OpenSSH, qui autorisera toutes les connexions SSH entrantes sur le port SSH par défaut.
sudo ufw allow “OpenSSH”
OutputRule added Rule added (v6)
N'oubliez pas de citer les noms de profil composés de plusieurs mots, tels que Nginx HTTPS
.
Désactiver le profil d'application
Pour désactiver un profil d'application que vous aviez précédemment configuré dans UFW, vous devez supprimer sa règle correspondante. Par exemple, considérez la sortie suivante de sudo ufw status
:
sudo ufw status
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
Cette sortie indique que le profil d'application Nginx Full
est actuellement activé, autorisant toutes les connexions au serveur Web à la fois via HTTP et via HTTPS. Si vous souhaitez autoriser uniquement les requêtes HTTPS depuis et vers votre serveur Web, vous devez d'abord activer la règle la plus restrictive, qui dans ce cas serait Nginx HTTPS
, puis désactiver le [X203X actuellement actif Règle ] :
sudo ufw allow "Nginx HTTPS" sudo ufw delete allow "Nginx Full"
N'oubliez pas que vous pouvez répertorier tous les profils d'application disponibles avec sudo ufw app list
.
Autoriser SSH
Lorsque vous travaillez avec des serveurs distants, vous devez vous assurer que le port SSH est ouvert aux connexions afin de pouvoir vous connecter à distance à votre serveur.
La commande suivante activera le profil d'application OpenSSH UFW et autorisera toutes les connexions au port SSH par défaut sur le serveur :
sudo ufw allow OpenSSH
OutputRule added Rule added (v6)
Bien que moins conviviale, une syntaxe alternative consiste à spécifier le numéro de port exact du service SSH, qui est généralement défini sur 22
par défaut :
sudo ufw allow 22
OutputRule added Rule added (v6)
Autoriser le SSH entrant à partir d'une adresse IP ou d'un sous-réseau spécifique
Pour autoriser les connexions entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique, vous devez inclure une directive from
pour définir la source de la connexion. Cela nécessitera que vous spécifiiez également l'adresse de destination avec un paramètre to
. Pour verrouiller cette règle sur SSH uniquement, vous devez limiter le proto
(protocole) à tcp
, puis utiliser le paramètre port
et le définir sur 22
. , le port par défaut de SSH.
La commande suivante n'autorisera que les connexions SSH provenant de l'adresse IP 203.0.113.103
:
sudo ufw allow from 203.0.113.103 proto tcp to any port 22
OutputRule added
Vous pouvez également utiliser une adresse de sous-réseau comme paramètre from
pour autoriser les connexions SSH entrantes à partir d'un réseau entier :
sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
OutputRule added
Autoriser la synchronisation entrante à partir d'une adresse IP ou d'un sous-réseau spécifique
Le programme Rsync, qui s'exécute sur le port 873
, peut être utilisé pour transférer des fichiers d'un ordinateur à un autre.
Pour autoriser les connexions entrantes rsync
à partir d'une adresse IP ou d'un sous-réseau spécifique, utilisez le paramètre from
pour spécifier l'adresse IP source et le paramètre port
pour définir le port de destination 873
. La commande suivante n'autorisera que les connexions Rsync provenant de l'adresse IP 203.0.113.103
:
sudo ufw allow from 203.0.113.103 to any port 873
OutputRule added
Pour autoriser l'ensemble du sous-réseau 203.0.113.0/24
à pouvoir rsync
vers votre serveur, exécutez :
sudo ufw allow from 203.0.113.0/24 to any port 873
OutputRule added
Autoriser Nginx HTTP / HTTPS
Lors de l'installation, le serveur Web Nginx configure quelques profils UFW différents au sein du serveur. Une fois Nginx installé et activé en tant que service, exécutez la commande suivante pour identifier les profils disponibles :
sudo ufw app list | grep Nginx
Output Nginx Full Nginx HTTP Nginx HTTPS
Pour activer à la fois le trafic HTTP et HTTPS, choisissez Nginx Full
. Sinon, choisissez Nginx HTTP
pour autoriser uniquement HTTP ou Nginx HTTPS
pour autoriser uniquement HTTPS.
La commande suivante autorisera le trafic HTTP et HTTPS sur le serveur (ports 80
et 443
) :
sudo ufw allow "Nginx Full"
OutputRule added Rule added (v6)
Autoriser Apache HTTP / HTTPS
Lors de l'installation, le serveur Web Apache configure quelques profils UFW différents au sein du serveur. Une fois Apache installé et activé en tant que service, exécutez la commande suivante pour identifier les profils disponibles :
sudo ufw app list | grep Apache
Output Apache Apache Full Apache Secure
Pour activer à la fois le trafic HTTP et HTTPS, choisissez Apache Full
. Sinon, choisissez Apache
pour HTTP ou Apache Secure
pour HTTPS.
La commande suivante autorisera le trafic HTTP et HTTPS sur le serveur (ports 80
et 443
) :
sudo ufw allow "Nginx Full"
OutputRule added Rule added (v6)
Autoriser tous les HTTP entrants (port 80
)
Les serveurs Web, tels qu'Apache et Nginx, écoutent généralement les requêtes HTTP sur le port 80
. Si votre stratégie par défaut pour le trafic entrant est définie sur abandon ou refus, vous devrez créer une règle UFW pour autoriser l'accès externe sur le port 80
. Vous pouvez utiliser le numéro de port ou le nom du service (http
) comme paramètre de cette commande.
Pour autoriser toutes les connexions HTTP entrantes (port 80
), exécutez :
sudo ufw allow http
OutputRule added Rule added (v6)
Une syntaxe alternative consiste à spécifier le numéro de port du service HTTP :
sudo ufw allow 80
OutputRule added Rule added (v6)
Autoriser tous les HTTPS entrants (port 443
)
HTTPS s'exécute généralement sur le port 443
. Si votre stratégie par défaut pour le trafic entrant est définie sur abandon ou refus, vous devrez créer une règle UFW pour autoriser l'accès externe sur le port 443
. Vous pouvez utiliser le numéro de port ou le nom du service (https
) comme paramètre de cette commande.
Pour autoriser toutes les connexions HTTPS entrantes (port 443
), exécutez :
sudo ufw allow https
OutputRule added Rule added (v6)
Une syntaxe alternative consiste à spécifier le numéro de port du service HTTPS :
sudo ufw allow 443
OutputRule added Rule added (v6)
Autoriser tous les HTTP et HTTPS entrants
Si vous souhaitez autoriser le trafic HTTP et HTTPS, vous pouvez créer une seule règle qui autorise les deux ports. Cette utilisation nécessite de définir également le protocole avec le paramètre proto
, qui dans ce cas doit être réglé sur tcp
.
Pour autoriser toutes les connexions HTTP et HTTPS entrantes (ports 80
et 443
), exécutez :
sudo ufw allow proto tcp from any to any port 80,443
OutputRule added Rule added (v6)
Autoriser la connexion MySQL à partir d'une adresse IP ou d'un sous-réseau spécifique
MySQL écoute les connexions client sur le port 3306
. Si votre serveur de base de données MySQL est utilisé par un client sur un serveur distant, vous devrez créer une règle UFW pour autoriser cet accès.
Pour autoriser les connexions MySQL entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique, utilisez le paramètre from
pour spécifier l'adresse IP source et le paramètre port
pour définir le port de destination 3306
.
La commande suivante permettra à l'adresse IP 203.0.113.103
de se connecter au port MySQL du serveur :
sudo ufw allow from 203.0.113.103 to any port 3306
OutputRule added
Pour permettre à l'ensemble du sous-réseau 203.0.113.0/24
de pouvoir se connecter à votre serveur MySQL, exécutez :
sudo ufw allow from 203.0.113.0/24 to any port 3306
OutputRule added
Autoriser la connexion PostgreSQL à partir d'une adresse IP ou d'un sous-réseau spécifique
PostgreSQL écoute les connexions client sur le port 5432
. Si votre serveur de base de données PostgreSQL est utilisé par un client sur un serveur distant, vous devez vous assurer d'autoriser ce trafic.
Pour autoriser les connexions PostgreSQL entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique, spécifiez la source avec le paramètre from
et définissez le port sur 5432
:
sudo ufw allow from 203.0.113.103 to any port 5432
OutputRule added
Pour permettre à l'ensemble du sous-réseau 203.0.113.0/24
de pouvoir se connecter à votre serveur PostgreSQL, exécutez :
sudo ufw allow from 203.0.113.0/24 to any port 5432
OutputRule added
Bloquer le courrier SMTP sortant
Les serveurs de messagerie, tels que Sendmail et Postfix, utilisent généralement le port 25
pour le trafic SMTP. Si votre serveur ne doit pas envoyer de courrier sortant, vous pouvez bloquer ce type de trafic. Pour bloquer les connexions SMTP sortantes, exécutez :
sudo ufw deny out 25
OutputRule added Rule added (v6)
Cela configure votre pare-feu pour abandonner tout le trafic sortant sur le port 25
. Si vous devez rejeter les connexions sortantes sur un numéro de port différent, vous pouvez répéter cette commande et remplacer 25
par le numéro de port que vous souhaitez bloquer.
Conclusion
UFW est un outil puissant qui peut grandement améliorer la sécurité de vos serveurs lorsqu'il est correctement configuré. Ce guide de référence couvre certaines règles UFW courantes qui sont souvent utilisées pour configurer un pare-feu sur Ubuntu.
La plupart des commandes de ce guide peuvent être adaptées pour s'adapter à différents cas d'utilisation et scénarios, en modifiant des paramètres tels que l'adresse IP source et/ou le port de destination. Pour des informations plus détaillées sur chaque paramètre de commande et les modificateurs disponibles, vous pouvez utiliser l'utilitaire man
pour consulter le manuel d'UFW :
man ufw
La page UFW officielle sur la documentation d'Ubuntu est une autre ressource que vous pouvez utiliser comme référence pour des cas d'utilisation et des exemples plus avancés.