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

De Get Docs
Aller à :navigation, rechercher

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.