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 rationalisée pour configurer des cas d’utilisation de pare-feu courants 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 de la manière d’autoriser et de bloquer des services par port, interface réseau et adresse IP source.
Comment utiliser ce guide
- Ce guide est au format feuille de triche avec des extraits de commande en ligne autonomes.
- Accédez à la section qui est 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 devrait faire référence aux adresses IP de votre propre réseau.
N’oubliez pas que vous pouvez vérifier votre jeu de règles UFW actuel avec sudo ufw status
ou sudo ufw status verbose
.
Déployez vos applications frontend depuis GitHub en utilisant la plateforme d’application DigitalOcean. Laissez DigitalOcean se concentrer sur la mise à l’échelle de votre application.
Vérifier l’état de UFW
Pour vérifier si ufw
est activé, exécutez :
OutputStatus: inactive
La sortie indiquera si votre pare-feu est actif ou non.
Activer UFW
Si vous obtenez un message Statut : 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.
Par défaut, lorsqu’il est activé, UFW bloquera l’accès externe à tous les ports sur 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 sur comment activer l’accès SSH de ce guide avant d’activer le pare-feu si c’est votre cas.
Pour activer UFW sur votre système, exécutez :
Vous verrez une sortie comme ceci :
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 :
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 :
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 :
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 maintenant sudo ufw status
, 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 du sous-réseau comme paramètre from
sur la commande ufw deny
. Cela bloquerait toutes les adresses IP dans le sous-réseau d’exemple 203.0.113.0/24
:
OutputRule added
Bloquer les connexions entrantes vers une interface réseau
Pour bloquer les connexions entrantes en provenance 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 :
OutputRule added
Le paramètre in
indique à ufw
d’appliquer la règle uniquement pour les connexions entrant, et le paramètre sur eth0
spécifie que la règle s’applique uniquement pour l’interface eth0
. Cela peut être utile si vous avez un système avec plusieurs interfaces réseau (y compris 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 qui proviennent 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 :
OutputRule added
Si vous exécutez maintenant sudo ufw status
, vous verrez une sortie similaire à ceci, montrant le mot AUTORISER
à 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 depuis 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 :
OutputRule added
Le paramètre in
indique à ufw
d’appliquer la règle uniquement pour les connexions entrantes, et le paramètre on eth0
spécifie que la règle s’applique uniquement pour l’interface eth0
.
Si vous exécutez maintenant sudo ufw status
, vous verrez une sortie similaire à ceci :
OutputStatus: active
To Action From
-- ------ ----
...
Anywhere on eth0 ALLOW 203.0.113.102
Supprimer une 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 de la cible. L’exemple suivant supprimerait une règle précédemment configurée pour autoriser toutes les connexions depuis une adresse IP de 203.0.113.101
:
OutputRule deleted
Une autre façon de spécifier quelle règle vous souhaitez supprimer est de fournir l’identifiant de la règle. Ces informations peuvent être obtenues avec la commande suivante :
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 les 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
en provenance de l’adresse IP 203.0.113.102
.
Parce que par défaut UFW bloque déjà tout accès externe sauf s’il est explicitement autorisé, la première règle est redondante, vous pouvez donc la supprimer. Pour supprimer une règle par son ID, exécutez :
Vous serez invité à confirmer l’opération et à vous assurer que l’ID que vous fournissez fait référence à la règle que vous souhaitez supprimer.
OutputDeleting:
deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deleted
Si vous listez à nouveau vos règles avec sudo ufw status
, vous verrez que la règle a été supprimée.
Lister les Profils d’Application Disponibles
À l’installation, les applications qui dépendent des communications réseau mettent généralement en place un profil UFW que vous pouvez utiliser pour autoriser la connexion depuis des adresses externes. Il s’agit souvent de la même chose que d’exécuter ufw allow from
, avec l’avantage de fournir un raccourci qui abstrait les numéros de port spécifiques qu’un service utilise et fournit une nomenclature conviviale pour les services référencés.
Pour lister les profils actuellement disponibles, exécutez la commande suivante :
Si vous avez installé un service tel qu’un serveur web ou tout 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, vous aurez généralement OpenSSH disponible :
OutputAvailable applications:
OpenSSH
Activer le profil de l’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, ce qui permettra toutes les connexions entrantes SSH sur le port SSH par défaut.
OutputRule added
Rule added (v6)
N’oubliez pas de mettre entre guillemets les noms de profil composés de plusieurs mots, tels que Nginx HTTPS
.
Désactiver le profil de l’application
Pour désactiver un profil d’application que vous aviez précédemment configuré dans UFW, vous devrez supprimer sa règle correspondante. Par exemple, considérez la sortie suivante de 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é, permettant toutes les connexions au serveur Web à la fois via HTTP et via HTTPS. Si vous souhaitez autoriser uniquement les demandes HTTPS de et vers votre serveur Web, vous devrez 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 :
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 voudrez 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 sur le port SSH par défaut du serveur:
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:
OutputRule added
Rule added (v6)
Autoriser 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 inclurez une directive from
pour définir la source de la connexion. Cela nécessitera également que vous spécifiiez l’adresse de destination avec un paramètre to
. Pour limiter cette règle à SSH uniquement, vous limiterez le proto
(protocole) à tcp
et utiliserez ensuite le paramètre port
en le définissant sur 22
, le port par défaut de SSH.
La commande suivante permettra uniquement les connexions SSH provenant de l’adresse IP 203.0.113.103
:
OutputRule added
Vous pouvez également utiliser une adresse de sous-réseau en tant que paramètre from
pour autoriser les connexions SSH entrantes depuis un réseau entier :
OutputRule added
Autoriser l’entrée Rsync à partir d’une adresse IP spécifique ou d’un sous-réseau
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 spécifique ou d’un sous-réseau, 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 permettra uniquement les connexions Rsync provenant de l’adresse IP 203.0.113.103
:
OutputRule added
Pour autoriser l’ensemble du sous-réseau 203.0.113.0/24
à pouvoir effectuer un rsync
vers votre serveur, exécutez :
OutputRule added
Autoriser Nginx HTTP / HTTPS
À l’installation, le serveur web Nginx configure quelques profils UFW différents dans le serveur. Une fois que Nginx est installé et activé en tant que service, exécutez la commande suivante pour identifier les profils disponibles :
Output Nginx Full
Nginx HTTP
Nginx HTTPS
Pour autoriser à la fois le trafic HTTP et HTTPS, choisissez Nginx Full
. Sinon, choisissez soit Nginx HTTP
pour autoriser uniquement le HTTP ou Nginx HTTPS
pour autoriser uniquement le HTTPS.
La commande suivante permettra d’autoriser à la fois le trafic HTTP et HTTPS sur le serveur (ports 80
et 443
) :
OutputRule added
Rule added (v6)
Autoriser Apache HTTP/HTTPS
À l’installation, le serveur web Apache configure quelques profils UFW différents dans le serveur. Une fois qu’Apache est installé et activé en tant que service, exécutez la commande suivante pour identifier les profils disponibles :
Output Apache
Apache Full
Apache Secure
Pour autoriser à la fois le trafic HTTP et HTTPS, choisissez Apache Full
. Sinon, choisissez soit Apache
pour HTTP ou Apache Secure
pour HTTPS.
La commande suivante permettra d’autoriser à la fois le trafic HTTP et HTTPS sur le serveur (ports 80
et 443
) :
OutputRule added
Rule added (v6)
Autoriser tout le trafic entrant HTTP (port 80
)
Les serveurs Web, tels qu’Apache et Nginx, écoutent généralement les requêtes HTTP sur le port 80
. Si votre politique par défaut pour le trafic entrant est définie sur « drop » ou « deny », vous devrez créer une règle UFW pour autoriser l’accès externe sur le port 80
. Vous pouvez utiliser soit le numéro de port, soit le nom du service (http
) comme paramètre pour cette commande.
Pour autoriser toutes les connexions HTTP entrantes (port 80
), exécutez :
OutputRule added
Rule added (v6)
Une syntaxe alternative consiste à spécifier le numéro de port du service HTTP :
OutputRule added
Rule added (v6)
Autoriser toutes les connexions HTTPS entrantes (port 443
)
HTTPS fonctionne généralement sur le port 443
. Si votre politique par défaut pour le trafic entrant est définie sur « drop » ou « deny », vous devrez créer une règle UFW pour autoriser l’accès externe sur le port 443
. Vous pouvez utiliser soit le numéro de port, soit le nom du service (https
) comme paramètre pour cette commande.
Pour autoriser toutes les connexions HTTPS entrantes (port 443
), exécutez :
OutputRule added
Rule added (v6)
Une syntaxe alternative consiste à spécifier le numéro de port du service HTTPS :
OutputRule added
Rule added (v6)
Autoriser toutes les connexions HTTP et HTTPS entrantes
Si vous souhaitez autoriser à la fois le trafic HTTP et HTTPS, vous pouvez créer une seule règle qui autorise les deux ports. Cette utilisation nécessite également que vous définissiez le protocole avec le paramètre proto
, qui dans ce cas devrait être défini sur tcp
.
Pour autoriser toutes les connexions entrantes HTTP et HTTPS (ports 80
et 443
), exécutez :
OutputRule added
Rule added (v6)
Autoriser la connexion MySQL à partir d’une adresse IP spécifique ou d’un sous-réseau
MySQL écoute les connexions clientes 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 entrantes MySQL à partir d’une adresse IP spécifique ou d’un sous-réseau, 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 :
OutputRule added
Pour autoriser l’ensemble du sous-réseau 203.0.113.0/24
à se connecter à votre serveur MySQL, exécutez :
OutputRule added
Autoriser la connexion PostgreSQL depuis une adresse IP spécifique ou un sous-réseau
PostgreSQL écoute les connexions clientes 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 entrantes de PostgreSQL depuis une adresse IP spécifique ou un sous-réseau, spécifiez la source avec le paramètre from
et définissez le port sur 5432
:
OutputRule added
Pour autoriser l’ensemble du sous-réseau 203.0.113.0/24
à se connecter à votre serveur PostgreSQL, exécutez :
OutputRule added
Bloquer les envois de courrier SMTP sortants
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 voudrez peut-être bloquer ce type de trafic. Pour bloquer les connexions SMTP sortantes, exécutez :
OutputRule added
Rule added (v6)
Cela configure votre pare-feu pour rejeter tout le trafic sortant sur le port 25
. Si vous devez rejeter les connexions sortantes sur un autre numéro de port, 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 considérablement améliorer la sécurité de vos serveurs lorsqu’il est correctement configuré. Ce guide de référence couvre quelques 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 vérifier le manuel d’UFW :
La page officielle d’UFW 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.
Source:
https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands