Développeur FullStack & Devops

Notes et mémos techniques

UFW un simple Firewall sous Linux

Un firewall (pare-feu) permet de bloquer les tentatives d'accès à des combinaisons de ports/protocoles que nous définissons.

Par exemple, il est possible d'autoriser les connexions ssh uniquement depuis certaines adresses IP. 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 simple a utiliser, qui va créer les règles iptables sous-jacentes.

Installation

L'installation se fait par un simple sudo sh -c "apt update && apt install ufw -y". Le firewall est installé mais désactivé suite à l'installation, ce qui nous laisse le temps de le configurer avant de l'activer (et de se retrouver bloquer si on ne fait pas attention à débloquer le ssh ? )

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

ufw default deny incoming
ufw default allow outgoing

Les commandes de base

# lister les règles en place
ufw status verbose

# autoriser un protocole en spécifiant son nom
ufw allow ssh
ufw allow in 22/tcp

# supprimer une règle
ufw delete allow in 22/tcp

# pour autoriser une adresse IP
ufw allow from 192.168.0.1

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

Gestion

Il est possible d'afficher sous une forme de liste numérotée, l'ensemble des règles pour ensuite supprimer par numéro de ligne :

ufw status numbered
ufw delete <numéro-de-la-règle>

Spécifique

# autoriser ssh depuis le réseau local uniquement
ufw allow from 192.168.0.1/24 to any port 22

# autoriser http et https
ufw allow proto tcp from any to any port 80,443

# autorise nginx sur en IPV4 et IPV6 sur 80 et 443
ufw allow 'Nginx Full'

Logs

Il est bien entendu possible de logger l'activité de notre Firewall dans des fichiers (se trouveront par défaut dans /var/log/ufw.log) ou dans un rsyslog:

# activer a journalisation les fichiers de log
ufw logging on

# ou encore en spécifiant le niveau de logs
ufw [--dry-run] logging on|off|LEVEL  # LEVEL => 'off', 'low', 'medium', 'high' and 'full'

Controle 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

firewall
iptables
linux
securite
ssh
ufw
linux
rédigé le 05/11/17, mis à jour le 14/02/22 par Behrouze
A proposCheat SheetsOutilsVidéos