====== UFW (Uncomplicated Firewall) - Maîtrise Complète ======
===== 1. Fondamentaux =====
=== 1.1 Qu'est-ce que UFW ? ===
UFW est une interface simplifiée pour **iptables** incluse par défaut dans Ubuntu/Debian.
**Avantages clés** :
* Configuration en une seule commande
* Gestion des IPv4 et IPv6 native
* Profils d'application préconfigurés
* Journalisation intégrée
=== 1.2 Concepts Clés ===
| **Terme** | **Description** |
|-----------------|----------------------------------|
| Profil | Ensemble de règles pré-définies (ex: Nginx, OpenSSH) |
| Rule | Règle personnalisée (allow/deny) |
| Logging | Traces des événements firewall |
| Rate Limiting | Protection anti-bruteforce |
===== 2. Installation & Configuration =====
=== 2.1 Installation ===
sudo apt update
sudo apt install ufw
=== 2.2 Configuration Initiale ===
sudo ufw default deny incoming # Bloquer tout le trafic entrant
sudo ufw default allow outgoing # Autoriser tout le trafic sortant
===== 3. Gestion des Règles ===
=== 3.1 Règles Basiques ===
sudo ufw allow 22/tcp # Autoriser SSH
sudo ufw deny 3306/tcp # Bloquer MySQL
sudo ufw allow from 192.168.1.5 # Autoriser IP spécifique
=== 3.2 Règles Avancées ===
**Par interface réseau** :
sudo ufw allow in on eth0 to any port 80
**Avec plage de ports** :
sudo ufw allow 60000:61000/udp # Pour VoIP
**Avec commentaires** :
sudo ufw allow 443/tcp comment 'HTTPS Access'
===== 4. Fonctionnalités Avancées ====
=== 4.1 Rate Limiting ===
sudo ufw limit 22/tcp # Limite à 6 connexions/min
=== 4.2 Profils d'Application ===
sudo ufw app list # Lister les profils
sudo ufw app info 'Nginx Full' # Voir détails
=== 4.3 Redirection de Port ===
Éditez `/etc/ufw/before.rules` et ajoutez :
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
COMMIT
===== 5. Gestion Professionnelle ====
=== 5.1 Sauvegarde/Restauration ===
sudo sh -c "ufw status numbered > ufw_backup.txt" # Sauvegarde
cat ufw_backup.txt | xargs -L1 sudo ufw # Restauration
=== 5.2 Monitoring Temps Réel ===
watch -n 1 sudo ufw status
=== 5.3 Scripting Automatisé ===
Exemple de script :
#!/bin/bash
BACKUP_FILE="/var/backups/ufw_$(date +%Y%m%d).rules"
sudo ufw status numbered > $BACKUP_FILE
gzip $BACKUP_FILE
===== 6. Intégrations Complexes ====
=== 6.1 Avec Docker ===
Solution 1 : Désactiver iptables de Docker
echo '{"iptables":false}' | sudo tee /etc/docker/daemon.json
Solution 2 : Rules personnalisées
sudo ufw allow proto tcp from any to any port 2376
=== 6.2 Avec Kubernetes ===
sudo ufw allow 6443/tcp # API Server
sudo ufw allow 10250/tcp # Kubelet
===== 7. Dépannage Expert ====
=== 7.1 Commandes Utiles ===
sudo ufw show raw # Voir règles iptables générées
sudo ufw show added # Afficher historique
=== 7.2 Problèmes Courants ===
**Problème** : Règles non persistantes
**Solution** :
sudo systemctl enable ufw
sudo apt install iptables-persistent
**Problème** : Conflits avec d'autres firewalls
**Solution** :
sudo systemctl stop firewalld
sudo systemctl disable firewalld
===== 8. Références Avancées ====
* [[https://www.it-connect.fr/ufw-uncomplicated-firewall/|IT-Connect : Guide Expert]]
* [[https://github.com/GuillaumeSmaha/ufw-complex-rules|Github : Exemples Complexes]]
* [[https://manpages.ubuntu.com/manpages/focal/en/man8/ufw.8.html|Manuel Officiel]]
Testez toujours les règles en session root parallèle avant déploiement !
Utilisez ''ufw --dry-run'' pour simuler sans appliquer.
Considérez ''fail2ban'' + ''ufw'' pour une sécurité renforcée.