Introduction
Le pare-feu est la première ligne de defense d'un serveur Linux. Il filtre le trafic réseau entrant et sortant selon des règles définies par l'administrateur. Ce tutoriel couvre trois outils : UFW (simple), firewalld (base sur des zones) et iptables (bas niveau).
UFW -- Uncomplicated Firewall (Debian/Ubuntu)
UFW est une interface simplifiee pour iptables, installee par défaut sur Ubuntu.
Activer et vérifiér le pare-feu
sudo ufw enable
sudo ufw status verboseRegles de base
sudo ufw default deny incoming # bloquer tout le trafic entrant
sudo ufw default allow outgoing # autoriser tout le trafic sortantAutoriser et bloquer des services
sudo ufw allow ssh # autoriser SSH (port 22)
sudo ufw allow 80/tcp # autoriser HTTP
sudo ufw allow 443/tcp # autoriser HTTPS
sudo ufw allow 8080:8090/tcp # autoriser une plage de ports
sudo ufw deny 3306/tcp # bloquer MySQL depuis l'extérieurRegles par adresse IP
sudo ufw allow from 192.168.1.0/24 to any port 22 # SSH depuis le réseau local uniquement
sudo ufw deny from 10.0.0.5 # bloquer une IP spécifiqueSupprimer une règle
sudo ufw status numbered
sudo ufw delete 3 # supprimer la règle numero 3firewalld -- Fedora, RHEL et CentOS
firewalld utilisé le concept de zones pour appliquer différents niveaux de confiance selon l'interface réseau où la source.
Verifier l'etat
sudo systemctl start firewalld
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zonesLes zones principales
| Zone | Description |
|---|---|
drop | Tout est rejete sans reponse |
block | Tout est rejete avec un message ICMP |
public | Zone par défaut -- seuls les services autorises passent |
internal | Reseau interne de confiance |
trusted | Tout le trafic est accepte |
Gerer les services et ports
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reloadLister les règles actives
sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --list-servicesSupprimer une règle
sudo firewall-cmd --zone=public --remove-service=http --permanent
sudo firewall-cmd --reloadiptables -- Le soclé bas niveau
iptables est l'outil historique de filtrage de paquets sous Linux. UFW et firewalld s'appuient dessus en coulisses.
Concepts fondamentaux
iptables organisé les règles en chaines :
| Chaine | Role |
|---|---|
INPUT | Trafic entrant vers la machine |
OUTPUT | Trafic sortant depuis la machine |
FORWARD | Trafic qui traverse la machine (routage) |
Exemples de règles
# Afficher les règles actuelles
sudo iptables -L -n -v
# Autoriser le trafic sur l'interface loopback
sudo iptables -A INPUT -i lo -j ACCEPT
# Autoriser les connexions etablies
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Autoriser SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Autoriser HTTP et HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Bloquer tout le reste
sudo iptables -A INPUT -j DROPSauvegarder et restaurer les règles
sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v4Scenarios courants
Serveur web (HTTP + HTTPS + SSH)
Avec UFW :
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enableServeur accessible uniquement en SSH
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 10.0.0.0/8 to any port 22
sudo ufw enableNAT avec iptables (passerelle Internet)
Pour partager une connexion Internet depuis l'interface eth0 vers un réseau local sur eth1 :
# Activer le routage IP
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
# Regle de NAT (masquerade)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPTPour rendre le routage permanent, ajoutez dans /etc/sysctl.conf :
net.ipv4.ip_forward = 1Conclusion
Le choix de l'outil depend de votre distribution et de la complexité de vos besoins. UFW convient parfaitement aux serveurs simples, firewalld offre une gestion par zones adaptee aux environnements multi-interfaces, et iptables reste incontournable pour les configurations avancees comme le NAT où le filtrage fin.