Aller au contenu principal

commands-ufw

UFW Essentials : règles et commandes courantes du pare-feu

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 aide-mémoire 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 des services par port, interface réseau et adresse IP source.

N'oubliez pas que vous pouvez vérifier votre ensemble de règles UFW actuel avec

sudo ufw status
sudo ufw status verbose

Vérifier le statut UFW

Pour vérifier si ufw est activé, exécutez :

sudo ufw status
Output
Status: inactive

La sortie indiquera si votre pare-feu est actif ou non.

Activer UFW

Si vous obtenez un message d'état : inactif 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.

Pour activer UFW sur votre système, exécutez :

sudo ufw enable
Output
Firewall 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
Output
Status: 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
Output
Rule added

Dans cet exemple, 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 :

sudo ufw status
Output
Status: 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 du sous-réseau comme paramètre de 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

Bloquer les connexions entrantes vers 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

Le paramètre in indique à ufw de n'appliquer la règle qu'aux connexions entrantes, et le paramètre on eth0 spécifie que la règle ne s'applique qu'à l'interface 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

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.

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 vers 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

Le paramètre in indique à ufw d'appliquer la règle uniquement aux connexions entrantes, et le paramètre on eth0 spécifie que la règle s'applique uniquement à l'interface eth0.

Si vous exécutez sudo ufw status maintenant, vous verrez un résultat similaire à celui-ci :

Supprimer la règle UFW

Pour supprimer une règle que vous avez précédemment définie dans UFW, utilisez ufw delete suivi de la règle (allow ou deny) et de la spécification de la cible. L'exemple suivant supprimerait une règle précédemment définie pour autoriser toutes les connexions à partir de l'adresse IP 203.0.113.101 :

sudo ufw delete allow from 203.0.113.101

ne autre façon de spécifier la règle que vous souhaitez supprimer consiste à fournir l'ID de la règle. Ces informations peuvent être obtenues avec la commande suivante :

sudo ufw status numbered

Le résultat montre qu'il y a deux règles actives. La première règle, dont les valeurs sont mises en évidence, 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 en provenance 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

Liste des profils d'application disponibles

Lors de l'installation, les applications qui reposent sur des communications réseau configurent généralement un profil UFW que vous pouvez utiliser pour autoriser les connexions à partir d'adresses externes. Cela revient souvent à exécuter ufw allow from, avec l'avantage de fournir un raccourci qui fait abstraction des numéros de port spécifiques utilisés par un service 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'aucun profil n'a été rendu disponible dans UFW, assurez-vous d'abord que le service est activé. Pour les serveurs distants, OpenSSH sera généralement facilement disponible :

Output
Available 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 la 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”
Output
Rule 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 la règle correspondante. Par exemple, considérez la sortie suivante de sudo ufw status

sudo ufw status
Output
Status: 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 complet Nginx est actuellement activé, autorisant toutes les connexions au serveur Web 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 la règle Nginx Full actuellement active.

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.

Allow 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 à votre serveur à distance.

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

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

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. Vous devrez également spécifier l'adresse de destination à l'aide d'un paramètre to. Pour verrouiller cette règle pour SSH uniquement, vous limiterez le proto (protocole) à tcp, puis vous utiliserez le paramètre port et le fixerez à 22, le port par défaut de SSH.

La commande suivante autorisera uniquement 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

Vous pouvez également utiliser une adresse de sous-réseau comme paramètre pour autoriser les connexions SSH entrantes à partir (from) d'un réseau entier :

sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22

Autoriser la synchronisation Rsync 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 rsync entrantes provenant 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

Pour permettre à l'ensemble du sous-réseau 203.0.113.0/24 de pouvoir se synchroniser avec votre serveur, exécutez :

sudo ufw allow from 203.0.113.0/24 to any port 873

Autoriser Nginx HTTP / HTTPS

Lors de l'installation, le serveur Web Nginx configure plusieurs 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 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"

Autoriser Apache HTTP / HTTPS

Lors de l'installation, le serveur Web Apache configure plusieurs 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 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 "Apache Full"

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 le rejet ou le 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.

sudo ufw allow http

Une syntaxe alternative consiste à spécifier le numéro de port du service HTTP :

sudo ufw allow 80

Autoriser tous les HTTPS entrants (port 443)

HTTPS fonctionne généralement sur le port 443. Si votre stratégie par défaut pour le trafic entrant est définie sur le rejet ou le 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.

sudo ufw allow https

Une syntaxe alternative consiste à spécifier le numéro de port du service HTTPS :

sudo ufw allow 443

Autoriser tous les HTTP et HTTPS entrants

Si vous souhaitez autoriser à la fois le trafic HTTP et HTTPS, vous pouvez créer une règle unique qui autorise les deux ports. Cette utilisation nécessite que vous définissiez également le protocole avec le paramètre proto, qui dans ce cas doit être défini sur tcp.

sudo ufw allow proto tcp from any to any port 80,443

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.

sudo ufw allow from 203.0.113.103 to any port 3306

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

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

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

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 souhaiterez peut-être bloquer ce type de trafic. Pour bloquer les connexions SMTP sortantes, exécutez :

sudo ufw deny out 25

Cela configure votre pare-feu pour rejeter 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.

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

Merci