Introduction
L'outil de configuration du pare-feu par défaut pour Ubuntu est ufw. Conçu pour simplifier la configuration du pare-feu iptables, ufw fournit un moyen pratique de créer un IPv4 ou un pare-feu basé sur l'hôte IPv6. Par défaut, UFW est désactivé.
Si votre version n'a pas installé ufw, vous pouvez l'installer en utilisant la commande :
sudo apt update && sudo apt install ufw
Vérification de l'état UFW
Vérifiez que le pare-feu est activé, utilisez cette commande :
sudo ufw status
Le résultat indiquera si votre pare-feu est actif ou non.
Activer UFW
Si vous obtenez un Statut : inactif message lors de l'exécution de la commande 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, lorsque UFW est activé, il bloque l'accès externe à tous les ports du serveur. En pratique, cela signifie que si vous vous connectez à un serveur via SSH et activez ufw avant d'autoriser l'accès sur le SSH port, vous serez déconnecté.
Pour activer UFW sur votre système, exécutez la commande :
sudo ufw enable
Vous verrez un résultat similaire à celui-ci.
Pour voir ce qui est actuellement bloqué ou autorisé, vous pouvez utiliser le verbeux paramètre lors de l'exécution statut de ufw comme indiqué ci-dessous:
sudo ufw status verbose
Éteindre l'UFW
Si pour une raison quelconque vous devez désactiver le pare-feu, vous pouvez le faire avec la commande suivante :
sudo ufw disable
Attention, cette commande désactivera complètement le service pare-feu de votre système !
Empêcher une adresse IP d'être adressée
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 allouée par l'adresse IP que vous souhaitez bloquer :
sudo ufw deny from 91.198.174.190
Dans cet exemple, À partir de 91.198.174.190 ans indique l'adresse IP source "91.198.174.190".
sudo ufw status
Si vous exécutez cette commande, vous verrez que l'adresse IP spécifiée est sur la liste interdite :
Toutes les connexions, entrantes et sortantes, sont bloquées pour l'adresse IP spécifiée.
Bloquer le sous-réseau
Si vous devez bloquer l'intégralité du sous-réseau, vous pouvez utiliser l'adresse du sous-réseau comme paramètre « from » dans la commande ufw deny. Cela bloquera toutes les adresses IP dans l'exemple de sous-réseau 91.198.174.0/24 :
sudo ufw deny from 91.198.174.0/24
Blocage des connexions entrantes à l'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 par l'adresse IP que vous souhaitez bloquer :
sudo ufw deny in on eth0 from 91.198.174.192
Le paramètre « in » indique au pare-feu d'appliquer la règle uniquement aux connexions entrantes, et le paramètre « on eth0 » lui indique que la règle s'applique uniquement à 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 les conversions d'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 allouée par l'adresse IP à laquelle vous souhaitez autoriser l'accès :
sudo ufw allow from 91.198.174.192
Si vous exécutez maintenant "sudo ufw status", vous verrez une sortie similaire à celle-ci, avec ALLOW à côté de l'adresse IP que vous venez d'ajouter.
sudo ufw status
Vous pouvez également autoriser les connexions à partir d'un sous-réseau entier en spécifiant le masque de sous-réseau approprié pour l'hôte, par exemple 91.198.174.0/24.
Autoriser les connexions entrantes à l'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 par celle que vous souhaitez autoriser :
sudo ufw allow in on eth0 from 91.198.174.22
Le paramètre « in » indique au pare-feu 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 ».
sudo ufw status
Si vous exécutez la commande, vous verrez un résultat semblable à celui-ci :
Supprimer une règle de pare-feu
Pour supprimer une règle précédemment installée dans UFW, utilisez "ufw delete", puis saisissez la règle (autoriser/refuser) et la spécification cible. L'exemple suivant supprime une règle précédemment définie pour autoriser toutes les connexions à partir de l'adresse IP 91.198.174.192 :
sudo ufw delete allow from 91.198.174.192
Une autre façon de spécifier la règle que vous souhaitez supprimer consiste à spécifier l'ID de la règle. Ces informations peuvent être obtenues à l'aide de la commande suivante :
sudo ufw status numbered
À partir de la sortie, vous pouvez voir qu'il y a deux règles actives. La première règle refuse toutes les connexions provenant de l'adresse IP 91.198.174.190. La deuxième règle autorise les connexions sur l'interface eth0 provenant de l'adresse IP 91.198.174.22.
Étant donné que le pare-feu bloque par défaut tous les accès externes, sauf s'ils sont explicitement autorisés, la première règle est redondante et peut donc être supprimée. Pour supprimer une règle en fonction de son ID, exécutez la commande :
sudo ufw delete 1
Vous serez invité à confirmer l'opération et à vous assurer que l'ID que vous spécifiez correspond à la bonne règle que vous souhaitez supprimer.
Si vous listez à nouveau vos règles avec le statut "sudo ufw", vous verrez que la règle a été supprimée.
Liste des profils d'application disponibles
Lors de l'installation d'applications qui s'appuient sur des communications réseau, il est courant de configurer un profil de pare-feu qui peut être utilisé pour autoriser les connexions à partir d'adresses externes. Cela revient souvent à exécuter « ufw allow from », avec l'avantage qu'il s'agit d'un raccourci qui fait abstraction des numéros de port spécifiques utilisés par le service et fournit une nomenclature pratique pour référencer les services.
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 que le profil n'était pas disponible dans le pare-feu, assurez-vous d'abord que le service est activé.
Pour les serveurs distants OuvrirSSH est généralement disponible :
Inclure un profil pour une application spécifique
Pour activer un profil d'application de pare-feu, exécutez la commande « ufw allow » suivie du nom du profil d'application que vous souhaitez activer, qui peut être obtenu avec la commande :
sudo ufw app list
Dans l'exemple suivant, nous activons l'OpenSSH profil, qui permettra à tous les entrants SSH connexions sur la norme SSH Port.
sudo ufw allow OpenSSH
Désactiver un profil pour une application spécifique
Pour désactiver un profil d'application que vous avez précédemment configuré dans le pare-feu, vous devez supprimer la règle correspondante. Par exemple, considérez la sortie suivante de « sudo ufw status »
sudo ufw status
Cette sortie indique que le "Nginx Le profil d'application complet" est actuellement activé, permettant toutes les connexions au serveur Web via les deux HTTP et le HTTPS.
Si vous souhaitez autoriser uniquement HTTPS requêtes à votre serveur Web, vous devez d'abord activer la règle la plus restrictive, qui dans ce cas est "Nginx HTTPS", puis désactivez la règle active "Nginx Complet":
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
Activer SSH
Lorsque vous travaillez avec des serveurs distants, vous devez vous assurer que le SSH port est ouvert pour les connexions afin que vous puissiez vous connecter à distance à votre serveur.
La commande suivante activera l'OpenSSH profil d'application pour le pare-feu et autoriser toutes les connexions par défaut SSH port sur le serveur :
sudo ufw allow OpenSSH
Bien que moins conviviale, une syntaxe alternative consiste à spécifier le numéro de port exact du SSH service, qui est généralement défini sur 22 par défaut :
sudo ufw allow 22
Autoriser les appels entrants SSH à 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 la directive « from » pour définir la source de la connexion. Cela nécessite que vous spécifiiez également l'adresse de destination avec le paramètre « to ». Pour bloquer cette règle pour SSH seulement, limitez « proto » (protocole) à « tcp » puis utilisez le paramètre « port » et définissez-le sur 22, la valeur par défaut SSH Port.
La commande suivante permettra uniquement SSH connexions provenant de l'adresse IP 91.198.174.33 :
sudo ufw allow from 91.198.174.33 proto tcp to any port 22
Vous pouvez également utiliser l'adresse du sous-réseau comme paramètre « de » pour autoriser les communications entrantes. SSH connexions de l'ensemble du réseau :
sudo ufw allow from 91.198.174.0/24 proto tcp to any port 22
Autoriser Rsync entrant à partir d'une adresse IP ou d'un sous-réseau spécifique
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 à partir d'une adresse IP ou d'un sous-réseau particulier, utilisez le paramètre from pour spécifier l'adresse IP source et le paramètre port pour définir le port de destination sur 873. La commande suivante autorisera uniquement les connexions Rsync provenant de l'adresse IP 91.198.174.33 :
sudo ufw allow from 91.198.174.33 to any port 873
Pour permettre à l'ensemble du sous-réseau 91.198.174.0/24 de se "rsynchroniser" avec votre serveur, exécutez la commande :
sudo ufw allow from 91.198.174.0/24 to any port 873
Autoriser Nginx HTTP / HTTPS
Lors de l'installation du Nginx serveur Web, il installe plusieurs profils de pare-feu différents à l'intérieur du serveur. Après l'installation et l'activation Nginx en tant que service, exécutez la commande suivante pour déterminer les profils disponibles :
sudo ufw app list | grep Nginx
Autoriser HTTP et le HTTPTrafic S, sélectionnez Nginx Full. Sinon, sélectionnez soit Nginx HTTP pour permettre HTTP seulement, ou Nginx HTTPS pour permettre HTTPS seulement.
La commande suivante permettra HTTP et le HTTPTrafic S sur le serveur (ports 80 et 443) :
sudo ufw allow "Nginx Full"
Autoriser Apache HTTP / HTTPS
Lors de l'installation le Apache Le serveur Web installe plusieurs profils UFW différents sur le serveur. Après avoir installé et activé Apache en tant que service, exécutez la commande suivante pour déterminer les profils disponibles :
sudo ufw app list | grep Apache
Autoriser HTTP et le HTTPTrafic S, sélectionnez "Apache Complet". Sinon, sélectionnez soit "Apache" pour HTTP ou "Apache Sécurisé" pour HTTPS.
La commande suivante permettra HTTP et le HTTPTrafic S sur le serveur (ports 80 et 443) :
sudo ufw allow "Apache Full"
Autoriser tous les entrants HTTP (port 80)
des serveurs Web tels que Apache et le Nginx écoute normalement HTTP requêtes sur le port 80. Si votre politique par défaut pour le trafic entrant est définie sur rejeter ou refuser, vous devez créer une règle UFW pour autoriser l'accès externe au port 80. Vous pouvez utiliser le numéro de port ou le nom du service (http) comme paramètre de cette commande.
Pour autoriser tous les appels entrants HTTP connexions (port 80), exécutez la commande :
sudo ufw allow http
Une syntaxe alternative consiste à spécifier le numéro de port du HTTP service:
sudo ufw allow 80
Autoriser tous les appels entrants HTTPS (port 443)
HTTPS s'exécute normalement sur le port 443. Si votre politique par défaut pour le trafic entrant est définie sur rejeter ou refuser, vous devez 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 tous les entrants HTTPLes connexions S (port 443) exécutent cette commande :
sudo ufw allow https
Une syntaxe alternative consiste à spécifier le numéro de port du HTTPService S :
sudo ufw allow 443
Autoriser tous les entrants HTTP et le HTTPS
Si vous souhaitez autoriser HTTP et le HTTPPour le trafic S, vous pouvez créer une règle qui autorise les deux ports. Cette utilisation nécessite que vous définissiez également le protocole à l'aide du paramètre « proto », qui dans ce cas doit être défini sur tcp.
Pour autoriser tous les appels entrants HTTP et le HTTPconnexions S (ports 80 et 443), lancez la commande :
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 MySQL le serveur de base de données est utilisé par un client sur un serveur distant, vous devez créer une règle UFW pour autoriser un tel accès.
Pour autoriser les entrées MySQL pour les connexions à partir d'une adresse IP ou d'un sous-réseau particulier, 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 91.198.174.33 de se connecter au MySQL port de serveur:
sudo ufw allow from 91.198.174.33 to any port 3306
Pour permettre à l'ensemble du sous-réseau 91.198.174.0/24 de se connecter à votre MySQL serveur, exécutez la commande :
sudo ufw allow from 91.198.174.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 PostgreSQL le serveur de base de données est utilisé par un client sur un serveur distant, vous devez autoriser ce trafic.
Pour autoriser les entrées PostgreSQL connexions à partir d'une adresse IP ou d'un sous-réseau particulier, spécifiez la source avec le paramètre from et définissez le port sur 5432 :
sudo ufw allow from 91.198.174.33 to any port 5432
Pour permettre à l'ensemble du sous-réseau 91.198.174.0/24 de se connecter à votre PostgreSQL serveur, exécutez la commande :
sudo ufw allow from 91.198.174.0/24 to any port 5432
Autoriser la connexion à PostgreSQL à partir d'une adresse IP ou d'un sous-réseau spécifique
Les serveurs de messagerie tels que Sendmail et Postfix utilisent normalement le port 25 pour le trafic SMTP. Si votre serveur n'est pas censé envoyer de courrier sortant, vous pouvez bloquer ce type de trafic. Pour bloquer les connexions SMTP sortantes, exécutez la commande :
sudo ufw deny out 25
Cela configurera votre pare-feu pour bloquer 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.
Pour aller plus loin
UFW est un outil puissant qui, lorsqu'il est configuré correctement, peut améliorer considérablement la sécurité de vos serveurs. Ce guide couvre certaines règles UFW courantes qui sont souvent utilisées pour configurer le pare-feu dans Ubuntu. La plupart des commandes de ce guide peuvent être adaptées à 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 plus d'informations sur chaque paramètre de commande et les modificateurs disponibles, vous pouvez utiliser le man utilitaire pour vérifier le manuel UFW :
man ufw