Skip to Content

Pare-feu UFW

UFW (Uncomplicated Firewall) est l’outil de gestion de pare-feu par défaut d’Ubuntu. Il s’agit d’une interface simplifiée pour iptables/nftables qui rend la configuration du pare-feu simple et intuitive.

Opérations de base

Activation et désactivation

# Enable firewall sudo ufw enable # Disable firewall sudo ufw disable # Check status sudo ufw status # Check detailed status sudo ufw status verbose # Check rules with numbers sudo ufw status numbered
Warning

Si vous gérez un serveur à distance via SSH, vous ** devez d’abord autoriser le port SSH ** (sudo ufw allow ssh) avant d’activer le pare-feu. Sinon, vous perdrez immédiatement l’accès à distance une fois le pare-feu activé.

Politiques par défaut

# Set default to deny incoming connections sudo ufw default deny incoming # Set default to allow outgoing connections sudo ufw default allow outgoing # Recommended initial configuration sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw enable

Gestion des règles

Autoriser les règles

# Allow a specific port sudo ufw allow 22 # SSH sudo ufw allow 80 # HTTP sudo ufw allow 443 # HTTPS # Specify protocol sudo ufw allow 22/tcp sudo ufw allow 53/udp # Allow a port range sudo ufw allow 6000:6007/tcp # Allow a specific IP address sudo ufw allow from 192.168.1.100 # Allow a specific subnet sudo ufw allow from 192.168.1.0/24 # Allow a specific IP to access a specific port sudo ufw allow from 192.168.1.100 to any port 22 # Allow a specific subnet to access a specific port sudo ufw allow from 10.0.0.0/8 to any port 3306 proto tcp

Règles de refus

# Deny a specific port sudo ufw deny 23 # Telnet # Deny a specific IP sudo ufw deny from 203.0.113.50 # Deny a specific IP from accessing a specific port sudo ufw deny from 203.0.113.50 to any port 22

Règles de rejet

Contrairement au refus, le rejet renvoie un message de rejet au demandeur :

sudo ufw reject 23 sudo ufw reject from 203.0.113.50

Suppression de règles

# Delete by number sudo ufw status numbered sudo ufw delete 3 # Delete by rule content sudo ufw delete allow 80 sudo ufw delete deny from 203.0.113.50 # Reset all rules sudo ufw reset

Insertion de règles

Les règles sont mises en correspondance dans l’ordre ; vous pouvez insérer une règle à un emplacement spécifique :

# Insert a rule at position 1 sudo ufw insert 1 deny from 203.0.113.50

Profils d’application

UFW prend en charge les profils d’application pour simplifier la configuration du pare-feu pour les services courants.

Affichage et utilisation des profils d’application

# List available application profiles sudo ufw app list # View application profile details sudo ufw app info 'Nginx Full' # Output: # Profile: Nginx Full # Title: Web Server (Nginx, HTTP + HTTPS) # Description: Small, but very powerful and efficient web server # Ports: # 80,443/tcp # Use an application profile sudo ufw allow 'Nginx Full' sudo ufw allow 'OpenSSH' sudo ufw allow 'Samba'

Création de profils d’application personnalisés

sudo nano /etc/ufw/applications.d/myapp
[MyApp] title=My Custom Application description=Custom application on port 8080 ports=8080/tcp [MyApp Full] title=My Custom Application (Full) description=Custom application on ports 8080 and 8443 ports=8080,8443/tcp
# Update application list sudo ufw app update MyApp # Use the new profile sudo ufw allow 'MyApp'

Scénarios de configuration courants

Serveur Web

sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 'OpenSSH' sudo ufw allow 'Nginx Full' # Or sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable

Serveur de base de données

sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 'OpenSSH' # Only allow the application server to access the database sudo ufw allow from 10.0.1.10 to any port 3306 proto tcp # MySQL sudo ufw allow from 10.0.1.10 to any port 5432 proto tcp # PostgreSQL sudo ufw enable

Serveur de messagerie

sudo ufw allow 'OpenSSH' sudo ufw allow 25/tcp # SMTP sudo ufw allow 587/tcp # SMTP (submission) sudo ufw allow 993/tcp # IMAPS sudo ufw allow 995/tcp # POP3S sudo ufw enable

Environnement Docker

Docker contourne les règles UFW par défaut. Pour résoudre ce problème :

# Edit Docker daemon configuration sudo nano /etc/docker/daemon.json
{ "iptables": false }
# Restart Docker sudo systemctl restart docker # Or use UFW DOCKER rules sudo nano /etc/ufw/after.rules

Ajoutez à la fin du fichier :

# BEGIN UFW AND DOCKER *filter :ufw-user-forward - [ACCEPT] :DOCKER-USER - [ACCEPT] -A DOCKER-USER -j RETURN -s 10.0.0.0/8 -A DOCKER-USER -j RETURN -s 172.16.0.0/12 -A DOCKER-USER -j RETURN -s 192.168.0.0/16 -A DOCKER-USER -p udp -m udp --sport 53 -j RETURN -A DOCKER-USER -p tcp -m tcp --sport 80 -j RETURN -A DOCKER-USER -p tcp -m tcp --sport 443 -j RETURN -A DOCKER-USER -j ufw-user-forward COMMIT # END UFW AND DOCKER
sudo ufw reload

Configuration avancée

Limitation du débit

UFW prend en charge la limitation du débit de connexion, utile pour se défendre contre les attaques par force brute :

# Limit SSH connection rate (max 6 connections within 30 seconds) sudo ufw limit 22/tcp # Limit a specific port's rate sudo ufw limit 8080/tcp

Configuration de la journalisation

# Enable logging sudo ufw logging on # Set log level sudo ufw logging low # Low (default) sudo ufw logging medium # Medium sudo ufw logging high # High sudo ufw logging full # Full # Disable logging sudo ufw logging off # View firewall logs sudo tail -f /var/log/ufw.log journalctl -k | grep UFW

Prise en charge d’IPv6

# Ensure IPv6 is enabled sudo nano /etc/default/ufw # Confirm: IPV6=yes # IPv6 rules sudo ufw allow from 2001:db8::/32 to any port 22

Modification directe des fichiers de règles

Les fichiers de règles UFW se trouvent dans /etc/ufw/ :

# User rules sudo nano /etc/ufw/user.rules # IPv4 sudo nano /etc/ufw/user6.rules # IPv6 # Rules executed before UFW rules sudo nano /etc/ufw/before.rules # Rules executed after UFW rules sudo nano /etc/ufw/after.rules

Règles de transfert

Si le serveur fait office de passerelle ou de routeur :

# Enable forwarding sudo nano /etc/ufw/sysctl.conf # Uncomment: net/ipv4/ip_forward=1 # Add NAT rules sudo nano /etc/ufw/before.rules

Ajouter avant *filter :

# NAT *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE COMMIT
# Allow forwarding sudo ufw route allow in on eth1 out on eth0 sudo ufw reload

Gestion graphique

GUFW

# Install GUFW (graphical frontend for UFW) sudo apt install gufw # Launch gufw

GUFW fournit une interface graphique intuitive prenant en charge :

  • Activer/désactiver le pare-feu
  • Sélection des niveaux de sécurité prédéfinis
  • Ajout et gestion de règles
  • Affichage des journaux d’activité

Centre de sécurité

Le centre de sécurité d’Ubuntu 26.04 est principalement destiné aux contrôles de visibilité de l’état de sécurité et d’invite d’autorisation. Continuez à gérer les règles de pare-feu avec la ligne de commande ufw ou GUFW.

Dépannage

# Check if UFW is running sudo ufw status # Check actual iptables/nftables rules sudo iptables -L -n -v sudo nft list ruleset # Temporarily disable firewall to troubleshoot network issues sudo ufw disable # Re-enable after troubleshooting sudo ufw enable # View blocked connections sudo tail -f /var/log/ufw.log # Full reset sudo ufw reset