Essentiels d’UFW : Règles et commandes courantes de 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 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 :

  1. sudo ufw status
Output
Status: 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 :

  1. sudo ufw enable

Vous verrez une sortie comme ceci :

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 :

  1. 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 :

  1. 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 :

  1. sudo ufw deny from 203.0.113.100
Output
Rule 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 :

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 from sur la commande ufw deny. Cela bloquerait toutes les adresses IP dans le sous-réseau d’exemple 203.0.113.0/24 :

  1. sudo ufw deny from 203.0.113.0/24
Output
Rule 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 :

  1. sudo ufw deny in on eth0 from 203.0.113.100
Output
Rule 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 :

  1. sudo ufw allow from 203.0.113.101
Output
Rule 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.

Output
Status: 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 :

  1. sudo ufw allow in on eth0 from 203.0.113.102
Output
Rule 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 :

Output
Status: 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 :

  1. sudo ufw delete allow from 203.0.113.101
Output
Rule 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 :

  1. sudo ufw status numbered
Output
Status: 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 :

  1. 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 règle que vous souhaitez supprimer.

Output
Deleting: 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 :

  1. sudo ufw app list

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 :

Output
Available 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.

  1. sudo ufw allow “OpenSSH”
Output
Rule 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:

  1. 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 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 :

  1. sudo ufw allow "Nginx HTTPS"
  2. 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 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:

  1. sudo ufw allow OpenSSH
Output
Rule 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:

  1. sudo ufw allow 22
Output
Rule 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 :

  1. sudo ufw allow from 203.0.113.103 proto tcp to any port 22
Output
Rule 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 :

  1. sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
Output
Rule 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 :

  1. sudo ufw allow from 203.0.113.103 to any port 873
Output
Rule added

Pour autoriser l’ensemble du sous-réseau 203.0.113.0/24 à pouvoir effectuer un rsync vers votre serveur, exécutez :

  1. sudo ufw allow from 203.0.113.0/24 to any port 873
Output
Rule 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 :

  1. sudo ufw app list | grep Nginx
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) :

  1. sudo ufw allow "Nginx Full"
Output
Rule 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 :

  1. sudo ufw app list | grep Apache
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) :

  1. sudo ufw allow "Nginx Full"
Output
Rule 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 :

  1. sudo ufw allow http
Output
Rule added Rule added (v6)

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

  1. sudo ufw allow 80
Output
Rule 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 :

  1. sudo ufw allow https
Output
Rule added Rule added (v6)

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

  1. sudo ufw allow 443
Output
Rule 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 :

  1. sudo ufw allow proto tcp from any to any port 80,443
Output
Rule 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 :

  1. sudo ufw allow from 203.0.113.103 to any port 3306
Output
Rule added

Pour autoriser l’ensemble du sous-réseau 203.0.113.0/24 à se connecter à votre serveur MySQL, exécutez :

  1. sudo ufw allow from 203.0.113.0/24 to any port 3306
Output
Rule 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:

  1. sudo ufw allow from 203.0.113.103 to any port 5432
Output
Rule added

Pour autoriser l’ensemble du sous-réseau 203.0.113.0/24 à se connecter à votre serveur PostgreSQL, exécutez :

  1. sudo ufw allow from 203.0.113.0/24 to any port 5432
Output
Rule 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 :

  1. sudo ufw deny out 25
Output
Rule 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 :

  1. man 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