ufw : configurer, voir, créer, supprimer, réinitialiser des règles de firewall

UFW (Uncomplicated Firewall) signifie pare-feu simple.
Il est pré-installé avec toutes les dernières versions d'Ubuntu et Ubuntu Server.

C'est l'un des moyens les plus simples de configurer rapidement un pare-feu sur votre appareil ou votre serveur.
C'est un front-end pour iptables avec une syntaxe plus simple : ufw VS iptables : quel est le meilleur

Les pare-feu font partie intégrante du maintien d'une sécurité réseau solide et sont essentiels pour les serveurs.

Dans ce guide, nous vous montrerons comment utiliser UFW pour autoriser, refuser ou limiter le débit des ports réseaux de votre appareil.

ufw : configurer, voir, créer, supprimer, réinitialiser des règles de firewall

Liste des commandes ufw

Voici la liste des commandes disponibles dans UFW :

CommandesDescription
enableActiver le firewall
disableDésactiver le firewall
defaultDéfinir la politique par défaut
logging LEVELDéfinir le niveau de logging à LEVEL
allow ARGSAjouter une règle d'autorisation
deny ARGSAjouter une règle de refus
reject ARGSAjouter une règle de rejet
limit ARGSAjouter une règle de rate/limit
delete RULE|NUMSupprimer une règle
insert NUM RULEInsérer une règle
prepend RULEprepend RULE
route RULEAjouter une route RULE
route delete RULE|NUMSupprimer une route RULE
route insert NUM RULEInsérer une route RULE à NUM
reloadRecharger le firewall
resetRéinitialiser le firewall
statusAfficher le statut du firewall
status numberedAfficher le statut firewall avec les numéros des règles
statusAfficher le statut du firewall
La liste des commandes ufw

Comment activer ufw avec les règles par défaut

ufw est installé par défaut dans beaucoup de distribution Linux comme Ubuntu.
Sinon vous pouvez l'installer avec apt ou dnf selon la distribution :

sudo apt install ufw
Installer ufw avec APT
sudo dnf install ufw

Lors de la gestion du pare-feu de votre système, l'une des premières choses que vous souhaitez faire est de définir des règles par défaut pour minimiser le nombre de vecteurs d'attaque.
Vous pouvez utiliser la commande ufw par défaut pour créer des règles générales pour le trafic entrant et sortant, comme indiqué ci-dessous.
Une fois que vous avez ajouté vos règles par défaut, vous pouvez ensuite ajouter des règles spécifiques à un service ou à un protocole.

sudo ufw default allow outgoing
sudo ufw default deny incoming

Puis pour activer les journaux et enfin activer ufw dans le système :

sudo ufw logging on
sudo ufw enable

Un message doit vous indiquer que le pare-feu est activé au démarrage du système.

Créer et ajouter une règle d'autorisation sur ufw

Autoriser une connexion entrante

On utilise la commande ufw allow pour créer une règle d'autorisation.
Vous pouvez spécifier le numéro du port avec le protocole en option :

sudo ufw allow PORT[/PROTOCOL]

Par exemple pour autoriser une connexion vers le port 22 :

sudo ufw allow 22

ou en spécifiant le protocole TCP :

sudo ufw allow 22/tcp

Pour autoriser une intervalle de ports :

sudo ufw allow 3000:5000/tcp

Mais on peut aussi spécifier le service réseau avec le protocole (TCP, UDP, ICMP).
Pour autoriser une connexion vers le port SSH :

sudo ufw allow ssh/tcp

Pour autoriser une connexion au service HTTP (port 80 en TCP) et HTTPS (port 443 en TCP) :

sudo ufw allow http/tcp
sudo ufw allow https/tcp
Saisissez bien le nom du service réseau en minuscule et non en majuscule.
Par exemple, si vous saisissez HTTPS à la place de http, vous aurez une erreur indiquant :
ERROR: Could not find a profile matching 'HTTPS'

Autoriser une connexion sortante

Pour autoriser une connexion sortante, on ajoute out à la commande allow.
Ainsi pour créer une règle ufw qui autorise les connexions sortantes vers le port 443 :

ufw allow out 443

Créer et ajouter une règle d'interdiction ou rejet

C'est le même principe que précédemment, simplement, on utilise la commande ufw deny comme ceci :

sudo ufw deny PORT[/PROTOCOL]

Ainsi pour interdire les connexions entrantes vers le service SSH :

sudo ufw deny 22

ou

sudo ufw deny ssh/tcp

Alors que si l'on désire interdire les connexions sortantes vers le port 22 :

ufw allow deny 22

Enfin voici une règle plus complexe où l'on interdire le réseau 192.168.2.100/8 de se connecter au réseau 192.168.2.101 sur le port 25 :

sudo ufw deny from 192.168.2.100/8 to 192.168.2.101 port 25

Comment autoriser ou bloquer une adresse IP avec ufw

Pour autoriser les connexion d'une adresse IP, on utilise la syntaxe :

ufw allow from <IP ou SUBNET>

Pour autoriser une connexion provenant d'un sous-réseau :

sudo ufw allow from 192.168.1.0/24

Enfin pour autoriser l'adresse IP 192.168.1.12 à se connecter au port 22 :

sudo ufw allow from 192.168.1.12 to any port 22 proto TCP

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 :

ufw deny from <IP ou SUBNET>

Par exemple pour bloquer l'adresse IP 192.18.1.12 :

sudo ufw deny from 192.168.1.12

Pour bloquer un sous-réseau entier, spécifier le masque de sous réseau :

sudo ufw deny from 192.168.1.0/24

Pour bloquer les connexions entrantes d'une adresse IP spécifique vers une interface réseau spécifique :

sudo ufw deny in on eth0 from 192.18.1.12

Comment ajouter une règle de taux de limitation

L'une des fonctionnalités les plus utiles d'UFW est sa capacité à limiter facilement le taux de connexions établies vers un port spécifique.
Vous pouvez utiliser cette fonctionnalité pour limiter le nombre de connexions établies vers des ports critiques.

Par exemple, vous pouvez réduire le risque que les utilisateurs forcent brutalement votre connexion SSH en limitant les connexions effectuées via votre connexion SSH.

Lorsque vous limitez une connexion, UFW n'autorisera pas plus de six connexions au cours des 30 dernières secondes. Le pare-feu bloquera toutes les connexions supplémentaires.

La limitation d'un port est un processus relativement simple. Au niveau de la syntaxe, cela fonctionne comme la commande allow, mais à la place, vous utilisez le mot clé limit.

Tout ce que vous avez à faire pour limiter une connexion est d'utiliser « ufw limit » suivi du numéro de port, puis éventuellement du protocole de connexion.

sudo ufw limit PORT[/PROTOCOL]

Par exemple pour protéger le service SSH :

sudo ufw limit 22

ou en spécifiant le protocole :

sudo ufw limit 22/tcp

Lister les règles

Utilisez la commande status pour afficher la liste des règles ufw :

sudo ufw status

Lorsque le statut est en actif, on obtient la liste des règles comme ceci :

Lister les règles ufw
  • TO : indique le service réseau ou port
  • Action : ALLOW (autorisé), DENY (interdit)
  • From : Adresse IP ou Anywhere (tout le monde) visé par la règle

Mais si ufw n'est pas actif, cela retourne :

Status: inactive

Pour liste règles ufw lorsque ce dernier est inactif, utilisez la commande suivante :

sudo ufw show added
Lister les règles ufw

Supprimer une règle ufw

Il existe deux méthodes pour supprimer une règle ufw.
La première méthode consiste à utiliser la commande delete en spécifiant la règle :

sudo ufw delete RULE

Par exemple pour supprimer la règle suivante :

sudo ufw delete allow https

On utilise la commande delete comme ceci :

sudo ufw delete allow https
Rule deleted
Rule deleted (v6)
Supprimer une règle ufw

La seconde solution pour supprimer une règle ufw est de la supprimer par son numéro.
Tout d'abord, on liste les règles par leurs numéros :

sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443                        ALLOW IN    Anywhere
[ 4] 22 (v6)                    ALLOW IN    Anywhere (v6)
[ 5] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 443 (v6)                   ALLOW IN    Anywhere (v6)

Puis on utilise la commande delete avec le numéro.
Par exemple pour supprimer la règle 3 :

sudo ufw delete 3

Puis confirmez en saisissant y pour yes :

Deleting:
 allow 443
Proceed with operation (y|n)? y
Rule deleted

Désactiver ufw

Vous pouvez désactiver le firewall à tout moment.
Cela ne supprime pas les règles établies, simplement le pare-feu n'est plus actif dans le système.
Pour cela, on utilise la commande disable :

sudo ufw disable

Réinitialiser les règles ufw

Enfin pour réinitialiser complètement ufw et supprimer toutes les régles, on utilise la commande reset :

sudo ufw reset

Confirmez en saisissant y pour yes :

Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20211209_143846'
Backing up 'before.rules' to '/etc/ufw/before.rules.20211209_143846'
Backing up 'after.rules' to '/etc/ufw/after.rules.20211209_143846'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20211209_143846'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20211209_143846'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20211209_143846'
Réinitialiser les règles ufw

Quelques exemples d'utilisation de ufw

Le statut ufw retourne que les politiques sont en deny.
Deux règles sont créées autorisant les connexions entrantes vers le port SSH.

sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)

Ainsi, si l'on tente une connexion HTTPS vers google, cela retourne une erreur de résolution DNS "Temporary failure in name resolution".
Cela est tout à fait logique puisque les connexions vers les serveurs DNS ne sont pas autorisées par le firewall.

Quelques exemples d'utilisation de ufw

On peut donc autoriser les connexions DNS avec cette règle :

sudo ufw allow out 53

Si on tente de se connecter à google, cette fois, la résolution DNS fonctionne puisque l'on obtient bien une adresse IPv4 et IPv6.
Toutefois la connexion vers le port 443 en TCP est bloquée "Network is unreachable".
Là aussi c'est logique puisque nous n'avons pas de règle qui l'autorise.

Quelques exemples d'utilisation de ufw

Il ne reste plus qu'à autoriser les connexions vers le port 443 en sortant de cette manière :

sudo ufw allow out 443
Quelques exemples d'utilisation de ufw

Tags: