Catégories
Sécurité

UFW un Firewall simple sous Linux

UFW

Un firewall (pare-feu en 🇫🇷) permet de bloquer les tentatives d’accès à des combinaisons de ports/protocoles, il permet par exemple, de n’autoriser les connexions ssh que depuis certaines adresses IP uniquement.

UFW a été conçu pour simplifier la mise en place d’un Firewall iptables sous Linux, qui est relativement complexe a configurer… C’est donc une interface simplifiée qui va créer les règles iptables sous-jacentes.

Mise en place

Installation

L’installation se fait par un simple apt install ufw , le firewall est alors installé mais désactivé, et il est possible de le configurer dès à présent.

Activation

Nous allons ensuite l’activer ufw enable pour le configurer, car l’activer permet de visualiser les règles avec ufw status verbose.

Attention les règles sont évalués dans l’ordre et

Bien vérifier les règles avant de redémarrer la machine ou le service ufw au risque de se retrouver bloquer si on ne fait pas attention à débloquer le ssh 🤣

Défauts

Par défaut les règles suivantes sont implémentées, bloquant tous les flux entrant et autorisant tout les flux sortant de notre machine:

ufw default deny incoming
ufw default allow outgoing

Screenshot

UFW activé avec règles par défaut et Logging activé (low)

Les commandes de base

Listing

Pour lister les règles en place dont les règles par défaut et le niveau de logs:

ufw status verbose

UFW défini également des profiles d’applications qui peuvent être listés par ufw app list :

Ajouter une règle

ufw allow in 22/tcp

# autoriser un protocole en spécifiant son nom (provenant de /etc/services)
ufw allow ssh

# autoriser une adresse IP
ufw allow from 192.168.0.1

# autoriser une plage de Ports
ufw allow out 6880:6999/tcp

ufw deny out from 192.168.0.5 to any port 80
ufw deny proto tcp from xxx.xxx.xxx/8 to 192.168.0.1 port 25

voir syntaxe avancée chez Linode ou Ubuntu

Supprimer une règle

Il est plus simple (et moins sujet à erreur) de supprimer une règle en spécifiant le numéro de sa ligne, mais voici les 2 façon de faire:

# supprimer une règle en spécifiant son numéro
ufw status numbered
ufw delete <numéro-de-la-règle>

# supprimer une règle en spécifiant sa définition
ufw delete allow in 22/tcp

Personalisation

UFW permet de créer des profiles d’applications (application profiles) dans le dossier /etc/ufw/applications.d/ qui sont des définitions niveau réseau des besoins d’une application une sorte d’alias défini dans les fichiers.
On retrouvera par exemple un fichier pour nginx (voir autres ex) qui va nous permettre d’ajouter une règle simplement via un des alias définis ufw allow 'Nginx Full' :

définition des profiles d’application UFW et détail de celui d’NGINX
ufw app info ‘Nginx Full’

Journalisation

Il est possible de logger l’activité de notre Firewall dans des fichiers de logs qui se trouveront par défaut dans /var/log/ufw.log ou dans un rsyslog (attention cela peut être très verbeux… même en mode low):

# activer a journalisation les fichiers de log
ufw logging on

# en spécifiant le niveau de logs
ufw logging low|medium|high

Contrôle du Firewall

systemctl status ufw

# activer/désactiver le firewall
ufw enable
ufw disable

#pour recharger la configuration qui vient d’être modifiée
ufw reload

# pour un reset complet des règles
ufw reset

Liens