Installation et Configuration de UFW (Uncomplicated Firewall)
Published on January 30, 2026 at 11:42 PM

Guide complet pour sécuriser votre serveur Linux avec le pare-feu UFW
## Table des matières
1. [Introduction et Concepts](#introduction-et-concepts)
2. [Architecture du Pare-feu](#architecture-du-pare-feu)
3. [Prérequis](#prérequis)
4. [Installation](#installation)
5. [Configuration de Base](#configuration-de-base)
6. [Règles Avancées](#règles-avancées)
7. [Gestion des Règles](#gestion-des-règles)
8. [Exemples de Configurations](#exemples-de-configurations)
9. [Monitoring et Logs](#monitoring-et-logs)
10. [Dépannage](#dépannage)
11. [Bonnes Pratiques](#bonnes-pratiques)
---
## Introduction et Concepts
### Qu'est-ce qu'UFW ?
UFW (Uncomplicated Firewall) est une interface simplifiée pour gérer les règles iptables sur Linux. Il permet de contrôler le trafic réseau entrant et sortant de votre serveur de manière intuitive.
### Pourquoi utiliser un pare-feu ?
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ POURQUOI UN PARE-FEU EST ESSENTIEL │
└─────────────────────────────────────────────────────────────────────────────┘
INTERNET
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Trafic │ │ Trafic │ │ Trafic │
│ Légitime │ │ Suspect │ │ Malveillant│
│ (HTTP) │ │ (Scan) │ │ (Attaque) │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
└──────────────────────┼──────────────────────┘
│
▼
┌────────────────────────┐
│ │
│ 🛡️ UFW FIREWALL │
│ │
│ ┌──────────────────┐ │
│ │ Règle 1: SSH ✓ │ │
│ │ Règle 2: HTTP ✓ │ │
│ │ Règle 3: HTTPS ✓ │ │
│ │ Défaut: DENY ✗ │ │
│ └──────────────────┘ │
│ │
└───────────┬────────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│ ✓ │ │ ✗ │ │ ✗ │
│ Accepté│ │ Bloqué │ │ Bloqué │
└────────┘ └────────┘ └────────┘
```
---
## Architecture du Pare-feu
### Position d'UFW dans la Stack Réseau
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ARCHITECTURE UFW / IPTABLES / NETFILTER │
└─────────────────────────────────────────────────────────────────────────────┘
APPLICATIONS (Couche 7)
───────────────────────
│
│ ┌─────────────────────────────────────────────────────┐
│ │ ESPACE UTILISATEUR │
│ │ │
│ │ ┌─────────────────────────────────────────┐ │
│ │ │ UFW (Frontend) │ │
│ │ │ │ │
│ │ │ • Interface simplifiée │ │
│ │ │ • Commandes intuitives │ │
│ │ │ • Gestion des profils │ │
│ │ └──────────────────┬──────────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────────────────────────────────┐ │
│ │ │ IPTABLES (Backend) │ │
│ │ │ │ │
│ │ │ • Tables: filter, nat, mangle │ │
│ │ │ • Chaînes: INPUT, OUTPUT, FORWARD │ │
│ │ │ • Règles détaillées │ │
│ │ └──────────────────┬──────────────────────┘ │
│ │ │ │
│ └───────────────────────┼─────────────────────────────┘
│ │
│ ════════════════════════╪════════════════════════════════
│ │
│ ┌───────────────────────┼─────────────────────────────┐
│ │ ▼ ESPACE NOYAU │
│ │ ┌─────────────────────────────────────────┐ │
│ │ │ NETFILTER (Framework) │ │
│ │ │ │ │
│ │ │ • Hooks dans la stack réseau │ │
│ │ │ • Filtrage au niveau paquet │ │
│ │ │ • NAT, Connection tracking │ │
│ │ └──────────────────┬──────────────────────┘ │
│ │ │ │
│ └───────────────────────┼─────────────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ INTERFACE RÉSEAU │
│ (eth0, ens3, etc.) │
└─────────────────────────────────────────────────────────────┘
│
▼
INTERNET
```
### Flux de Traitement des Paquets
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ FLUX DE TRAITEMENT UFW │
└─────────────────────────────────────────────────────────────────────────────┘
PAQUET ENTRANT
│
▼
┌────────────────────────┐
│ CHAÎNE INPUT │
└───────────┬────────────┘
│
┌─────────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Règle 1 │ │ Règle 2 │ │ Règle N │
│ SSH (22) │ │ HTTP (80) │ │ Custom │
│ │ │ │ │ │
│ Match? ─────┼──No──▶│ Match? ─────┼──No──▶│ Match? ─────┼──No──┐
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│Yes │Yes │Yes │
▼ ▼ ▼ │
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ ACCEPT │ │ ACCEPT │ │ ACCEPT │ │
└─────────────┘ └─────────────┘ └─────────────┘ │
│
▼
┌─────────────────┐
│ RÈGLE PAR DÉFAUT│
│ │
│ deny incoming │
│ │
└────────┬────────┘
│
▼
┌─────────────────┐
│ DROP │
│ (Paquet jeté) │
└─────────────────┘
PAQUET SORTANT
│
▼
┌────────────────────────┐
│ CHAÎNE OUTPUT │
└───────────┬────────────┘
│
▼
┌────────────────────────┐
│ RÈGLE PAR DÉFAUT │
│ allow outgoing │
└───────────┬────────────┘
│
▼
┌────────────────────────┐
│ ACCEPT │
│ (Paquet autorisé) │
└────────────────────────┘
```
---
## Prérequis
### Configuration Requise
```
┌─────────────────────────────────────────────────────────────────┐
│ PRÉREQUIS SYSTÈME │
├─────────────────────┬───────────────────────────────────────────┤
│ Élément │ Requis │
├─────────────────────┼───────────────────────────────────────────┤
│ Système │ Ubuntu 18.04+ / Debian 9+ │
│ Accès │ root ou sudo │
│ Connexion │ SSH active │
│ Réseau │ Connexion Internet │
└─────────────────────┴───────────────────────────────────────────┘
```
### Vérifications Préalables
```bash
# Vérifier la distribution
cat /etc/os-release
# Vérifier les droits sudo
sudo whoami
# Vérifier la connexion SSH actuelle
who
# Vérifier l'IP du serveur
ip addr show
```
---
## Installation
### Installation sur Ubuntu/Debian
```bash
# Mettre à jour les dépôts
sudo apt update
# Installer UFW
sudo apt install ufw -y
# Vérifier l'installation
which ufw
```
### Vérification du Statut Initial
```bash
# Vérifier le statut d'UFW
sudo ufw status
# Résultat attendu :
# Status: inactive
```
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ PROCESSUS D'INSTALLATION │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ apt │ │ UFW │ │ Fichiers │ │ UFW │
│ update │────▶│ install │────▶│ Config │────▶│ Ready │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────────────────────────────┐
│ /etc/ufw/ │
│ ├── ufw.conf (config) │
│ ├── before.rules (pré-règles) │
│ ├── after.rules (post-règles)│
│ └── user.rules (vos règles) │
└─────────────────────────────────────┘
```
---
## Configuration de Base
### ⚠️ AVERTISSEMENT CRITIQUE
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ⚠️ ATTENTION - RISQUE DE PERTE D'ACCÈS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ TOUJOURS autoriser le port SSH (22) AVANT d'activer UFW ! │
│ │
│ Si vous activez UFW sans autoriser SSH, vous serez │
│ DÉFINITIVEMENT BLOQUÉ hors de votre serveur. │
│ │
│ Ordre obligatoire : │
│ 1. sudo ufw allow 22/tcp │
│ 2. sudo ufw enable │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
### Étape 1 : Définir les Règles par Défaut
```bash
# Bloquer tout le trafic entrant par défaut
sudo ufw default deny incoming
# Autoriser tout le trafic sortant par défaut
sudo ufw default allow outgoing
```
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ RÈGLES PAR DÉFAUT │
└─────────────────────────────────────────────────────────────────────────────┘
TRAFIC ENTRANT TRAFIC SORTANT
────────────── ──────────────
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ DENY │ │ ALLOW │
│ (Bloquer) │ │ (Autoriser) │
└─────────────┘ └─────────────┘
│ │
▼ ▼
┌────────────────────────────────┐ ┌────────────────────────────────┐
│ Seules les connexions │ │ Toutes les connexions │
│ EXPLICITEMENT autorisées │ │ sortantes sont permises │
│ peuvent passer │ │ │
└────────────────────────────────┘ └────────────────────────────────┘
```
### Étape 2 : Autoriser les Services Essentiels
```bash
# SSH (OBLIGATOIRE - À faire en premier !)
sudo ufw allow 22/tcp
# HTTP (serveur web)
sudo ufw allow 80/tcp
# HTTPS (serveur web sécurisé)
sudo ufw allow 443/tcp
```
### Étape 3 : Activer UFW
```bash
# Activer le pare-feu
sudo ufw enable
# Message affiché :
# Command may disrupt existing ssh connections. Proceed with operation (y|n)?
# Répondre : y
```
### Étape 4 : Vérifier la Configuration
```bash
# Afficher le statut et les règles
sudo ufw status verbose
```
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ EXEMPLE DE SORTIE UFW STATUS │
└─────────────────────────────────────────────────────────────────────────────┘
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
```
---
## Règles Avancées
### Syntaxe des Commandes
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ SYNTAXE DES RÈGLES UFW │
└─────────────────────────────────────────────────────────────────────────────┘
sudo ufw [allow|deny|reject] [from ] [to ] [port ] [proto ]
┌───────────────────────────────────────────────────────────────────────────┐
│ │
│ Exemples de syntaxe : │
│ │
│ ufw allow 22 → Autorise le port 22 (TCP+UDP) │
│ ufw allow 22/tcp → Autorise le port 22 TCP uniquement │
│ ufw allow from 192.168.1.0/24 → Autorise un sous-réseau │
│ ufw deny 3306 → Bloque le port 3306 │
│ ufw allow from 10.0.0.5 to any port 22 → IP spécifique vers port │
│ │
└───────────────────────────────────────────────────────────────────────────┘
```
### Autoriser un Port Spécifique
```bash
# Port TCP
sudo ufw allow 8080/tcp
# Port UDP
sudo ufw allow 53/udp
# Port TCP et UDP
sudo ufw allow 3478
# Plage de ports
sudo ufw allow 6000:6007/tcp
```
### Autoriser une IP Spécifique
```bash
# Autoriser toutes les connexions depuis une IP
sudo ufw allow from 192.168.1.100
# Autoriser une IP vers un port spécifique
sudo ufw allow from 192.168.1.100 to any port 22
# Autoriser un sous-réseau
sudo ufw allow from 10.0.0.0/8
# Autoriser un sous-réseau vers un port spécifique
sudo ufw allow from 192.168.1.0/24 to any port 3306
```
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ SCHÉMA RÈGLES PAR IP │
└─────────────────────────────────────────────────────────────────────────────┘
INTERNET
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 192.168.1.100│ │ 10.0.0.50 │ │ Autres IPs │
│ (Autorisée) │ │ (Autorisée) │ │ (Non listées│
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Port 22 ✓ │ │ Port 3306 ✓ │ │ Tous ports │
│ Port 80 ✓ │ │ │ │ ✗ │
│ Port 443 ✓ │ │ │ │ │
└─────────────┘ └─────────────┘ └─────────────┘
```
### Bloquer une IP ou un Port
```bash
# Bloquer une IP spécifique
sudo ufw deny from 192.168.1.200
# Bloquer une IP vers un port
sudo ufw deny from 192.168.1.200 to any port 22
# Bloquer un port
sudo ufw deny 3306/tcp
# Rejeter (avec notification à l'émetteur)
sudo ufw reject 23/tcp
```
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ DENY vs REJECT │
└─────────────────────────────────────────────────────────────────────────────┘
DENY (DROP) REJECT
─────────── ──────
┌─────────────┐ ┌─────────────┐
│ Paquet │ │ Paquet │
│ entrant │ │ entrant │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ UFW │ │ UFW │
│ (DENY) │ │ (REJECT) │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Paquet │ │ Message │
│ ignoré │ │ ICMP │
│ silencieux │ │ "refused" │
└─────────────┘ └──────┬──────┘
│
Émetteur ne sait ▼
pas ce qui s'est Émetteur reçoit
passé (timeout) une notification
```
---
## Gestion des Règles
### Lister les Règles
```bash
# Statut simple
sudo ufw status
# Statut avec numéros de règles
sudo ufw status numbered
# Statut détaillé
sudo ufw status verbose
```
### Supprimer une Règle
```bash
# Méthode 1 : Par numéro (recommandé)
sudo ufw status numbered
# Puis :
sudo ufw delete 3
# Méthode 2 : Par règle exacte
sudo ufw delete allow 8080/tcp
```
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ SUPPRESSION DE RÈGLE PAR NUMÉRO │
└─────────────────────────────────────────────────────────────────────────────┘
$ sudo ufw status numbered
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 8080/tcp ALLOW IN Anywhere ◀── À supprimer
[ 4] 443/tcp ALLOW IN Anywhere
$ sudo ufw delete 3
Deleting:
allow 8080/tcp
Proceed with operation (y|n)? y
Rule deleted
```
### Réinitialiser UFW
```bash
# Réinitialiser toutes les règles (ATTENTION !)
sudo ufw --force reset
# Cela :
# - Désactive UFW
# - Supprime toutes les règles
# - Remet les paramètres par défaut
```
### Recharger les Règles
```bash
# Recharger la configuration
sudo ufw reload
```
---
## Exemples de Configurations
### Configuration Serveur Web
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ CONFIGURATION SERVEUR WEB │
└─────────────────────────────────────────────────────────────────────────────┘
INTERNET
│
▼
┌────────────────────────┐
│ UFW │
│ │
│ ┌──────────────────┐ │
│ │ Port 22 (SSH) ✓│ │
│ │ Port 80 (HTTP) ✓│ │
│ │ Port 443 (HTTPS)✓│ │
│ │ Autres ports ✗│ │
│ └──────────────────┘ │
│ │
└───────────┬────────────┘
│
▼
┌────────────────────────┐
│ SERVEUR WEB │
│ (Nginx/Apache) │
└────────────────────────┘
```
```bash
# Configuration serveur web
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
```
### Configuration Base de Données
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ CONFIGURATION BASE DE DONNÉES │
└─────────────────────────────────────────────────────────────────────────────┘
INTERNET
│
┌────────────────────────┼────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Admin │ │ Serveur Web │ │ Autres IPs │
│192.168.1.100│ │ 10.0.0.0/8 │ │ │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ SSH (22) ✓ │ │MySQL (3306)✓│ │ Tous ports │
│ │ │ │ │ ✗ │
└─────────────┘ └─────────────┘ └─────────────┘
```
```bash
# Configuration serveur de base de données
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow from 10.0.0.0/8 to any port 3306
sudo ufw enable
```
### Configuration Serveur de Jeu (Minecraft)
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ CONFIGURATION SERVEUR MINECRAFT │
└─────────────────────────────────────────────────────────────────────────────┘
INTERNET
│
▼
┌────────────────────────┐
│ UFW │
│ │
│ ┌──────────────────┐ │
│ │ Port 22 (SSH) ✓│ │
│ │ Port 25565 (MC) ✓│ │
│ │ Autres ports ✗│ │
│ └──────────────────┘ │
│ │
└───────────┬────────────┘
│
▼
┌────────────────────────┐
│ SERVEUR MINECRAFT │
│ (Java/Bedrock) │
└────────────────────────┘
```
```bash
# Configuration serveur Minecraft
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 25565/tcp # Minecraft Java
# sudo ufw allow 19132/udp # Minecraft Bedrock (si nécessaire)
sudo ufw enable
```
### Configuration Multi-Services
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ CONFIGURATION MULTI-SERVICES │
└─────────────────────────────────────────────────────────────────────────────┘
INTERNET
│
▼
┌──────────────────────────────────────┐
│ UFW │
│ │
│ Ports ouverts : │
│ ┌────────────────────────────────┐ │
│ │ 22/tcp - SSH │ │
│ │ 80/tcp - HTTP │ │
│ │ 443/tcp - HTTPS │ │
│ │ 25/tcp - SMTP │ │
│ │ 587/tcp - Submission │ │
│ │ 993/tcp - IMAPS │ │
│ │ 3306/tcp - MySQL (IP limitée) │ │
│ └────────────────────────────────┘ │
│ │
└──────────────────┬───────────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Nginx │ │ Postfix │ │ MySQL │
│ (80, 443) │ │ (25, 587) │ │ (3306) │
└───────────┘ └───────────┘ └───────────┘
```
```bash
# Configuration multi-services
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH
sudo ufw allow 22/tcp
# Web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Mail
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 993/tcp
# Base de données (accès restreint)
sudo ufw allow from 10.0.0.0/8 to any port 3306
sudo ufw enable
```
---
## Monitoring et Logs
### Activer les Logs
```bash
# Activer la journalisation
sudo ufw logging on
# Niveaux disponibles : off, low, medium, high, full
sudo ufw logging medium
```
### Consulter les Logs
```bash
# Voir les logs en temps réel
sudo tail -f /var/log/ufw.log
# Voir les 50 dernières entrées
sudo tail -n 50 /var/log/ufw.log
# Rechercher des événements spécifiques
sudo grep "BLOCK" /var/log/ufw.log | tail -20
```
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ EXEMPLE DE LOG UFW │
└─────────────────────────────────────────────────────────────────────────────┘
Jan 15 10:23:45 serveur kernel: [UFW BLOCK] IN=eth0 OUT= MAC=...
SRC=192.168.1.200 DST=10.0.0.5 LEN=60 TOS=0x00 PREC=0x00 TTL=64
ID=12345 DF PROTO=TCP SPT=54321 DPT=3306 WINDOW=65535 RES=0x00 SYN URGP=0
┌─────────────────────────────────────────────────────────────────────┐
│ Décodage : │
│ │
│ [UFW BLOCK] → Action effectuée (paquet bloqué) │
│ IN=eth0 → Interface d'entrée │
│ SRC=192.168.1.200 → IP source │
│ DST=10.0.0.5 → IP destination │
│ PROTO=TCP → Protocole │
│ DPT=3306 → Port destination (MySQL) │
│ SYN → Type de paquet (tentative de connexion) │
└─────────────────────────────────────────────────────────────────────┘
```
---
## Dépannage
### Je suis Bloqué Hors du Serveur
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ PROCÉDURE DE RÉCUPÉRATION │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────┐
│ Accès SSH bloqué ? │
└──────────┬──────────┘
│
┌────────────────┴────────────────┐
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Console VNC/KVM │ │ Contacter │
│ disponible ? │ │ l'hébergeur │
└────────┬────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Se connecter │
│ via VNC/KVM │
└────────┬────────┘
│
▼
┌─────────────────┐
│ sudo ufw disable│
└────────┬────────┘
│
▼
┌─────────────────┐
│ Reconfigurer │
│ les règles │
└─────────────────┘
```
### Les Règles ne Fonctionnent Pas
```bash
# Vérifier que UFW est actif
sudo ufw status
# Vérifier l'ordre des règles
sudo ufw status numbered
# Recharger les règles
sudo ufw reload
# Vérifier les règles iptables sous-jacentes
sudo iptables -L -n -v
```
### UFW et Docker
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ PROBLÈME UFW + DOCKER │
└─────────────────────────────────────────────────────────────────────────────┘
Docker modifie directement iptables, contournant UFW !
┌──────────────────┐
│ Docker │
│ (port mapping) │
└────────┬─────────┘
│
│ Modifie directement
▼
┌──────────────────┐
│ iptables │◀──── UFW n'est pas consulté !
│ (DOCKER chain) │
└──────────────────┘
SOLUTION : Désactiver la gestion iptables de Docker
```
```bash
# Éditer la configuration Docker
sudo nano /etc/docker/daemon.json
```
```json
{
"iptables": false
}
```
```bash
# Redémarrer Docker
sudo systemctl restart docker
```
### Commandes de Diagnostic
```bash
# Vérifier les connexions actives
sudo ss -tulpn
# Vérifier les règles iptables
sudo iptables -L -n
# Tester un port spécifique
nc -zv localhost 80
# Vérifier les processus écoutant
sudo netstat -tlnp
```
---
## Bonnes Pratiques
### Checklist de Sécurité
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ CHECKLIST BONNES PRATIQUES UFW │
└─────────────────────────────────────────────────────────────────────────────┘
✅ TOUJOURS autoriser SSH avant d'activer UFW
✅ Principe du moindre privilège : n'ouvrir que les ports nécessaires
✅ Utiliser des règles par IP quand possible (plus sécurisé)
✅ Activer les logs pour surveiller le trafic bloqué
✅ Tester les règles avant de fermer la session SSH
✅ Documenter toutes les règles ajoutées
✅ Réviser régulièrement les règles (supprimer les obsolètes)
✅ Combiner avec fail2ban pour bloquer les attaques brute-force
✅ Utiliser reject pour les ports communs (feedback à l'attaquant)
et deny pour les autres (mode furtif)
✅ Sauvegarder la configuration avant modification majeure
```
### Ordre Recommandé des Règles
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ORDRE DES RÈGLES (PRIORITÉ) │
└─────────────────────────────────────────────────────────────────────────────┘
PRIORITÉ HAUTE
│
▼
┌─────────────────────────────────────────┐
│ 1. Règles DENY spécifiques (IP bloquées)│
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 2. Règles ALLOW spécifiques (IP whitelist)│
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 3. Règles de services (ports ouverts) │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 4. Règle par défaut (deny incoming) │
└─────────────────────────────────────────┘
PRIORITÉ BASSE
```
---
## Récapitulatif des Commandes
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ AIDE-MÉMOIRE COMMANDES UFW │
└─────────────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────┬─────────────────────────────────────────────┐
│ Commande │ Description │
├───────────────────────────────┼─────────────────────────────────────────────┤
│ sudo ufw status │ Afficher le statut │
│ sudo ufw status numbered │ Afficher avec numéros │
│ sudo ufw status verbose │ Afficher détaillé │
├───────────────────────────────┼─────────────────────────────────────────────┤
│ sudo ufw enable │ Activer le pare-feu │
│ sudo ufw disable │ Désactiver le pare-feu │
│ sudo ufw reload │ Recharger les règles │
├───────────────────────────────┼─────────────────────────────────────────────┤
│ sudo ufw default deny incoming│ Bloquer entrant par défaut │
│ sudo ufw default allow outgoing│ Autoriser sortant par défaut │
├───────────────────────────────┼─────────────────────────────────────────────┤
│ sudo ufw allow 22/tcp │ Autoriser un port │
│ sudo ufw deny 3306/tcp │ Bloquer un port │
│ sudo ufw allow from IP │ Autoriser une IP │
│ sudo ufw deny from IP │ Bloquer une IP │
├───────────────────────────────┼─────────────────────────────────────────────┤
│ sudo ufw delete 3 │ Supprimer règle n°3 │
│ sudo ufw delete allow 80/tcp │ Supprimer par règle │
├───────────────────────────────┼─────────────────────────────────────────────┤
│ sudo ufw --force reset │ Réinitialiser tout │
│ sudo ufw logging on │ Activer les logs │
└───────────────────────────────┴─────────────────────────────────────────────┘
```
---
## FAQ
**Q : Puis-je utiliser UFW avec un autre pare-feu ?**
R : Non, utilisez un seul pare-feu à la fois pour éviter les conflits.
**Q : UFW fonctionne-t-il avec Docker ?**
R : Oui, mais nécessite une configuration spécifique (voir section Dépannage).
**Q : Comment autoriser plusieurs ports ?**
R : Utilisez une plage (`6000:6007/tcp`) ou plusieurs commandes `allow`.
**Q : UFW fonctionne-t-il sur CentOS/RHEL ?**
R : Oui, mais l'installation diffère. Préférez firewalld sur ces distributions.


















