Linux Platform

Gerer le pare-feu sous Linux

Configurez le pare-feu de votre serveur Linux avec UFW, firewalld et iptables. Apprenez a protégér vos services avec des règles adaptees a chaque scenario.

pare-feuufwfirewalldiptablessécuritéréseau

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 verbose

Regles de base

sudo ufw default deny incoming      # bloquer tout le trafic entrant
sudo ufw default allow outgoing     # autoriser tout le trafic sortant

Autoriser 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érieur

Regles 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écifique

Supprimer une règle

sudo ufw status numbered
sudo ufw delete 3                    # supprimer la règle numero 3

firewalld -- 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-zones

Les zones principales

ZoneDescription
dropTout est rejete sans reponse
blockTout est rejete avec un message ICMP
publicZone par défaut -- seuls les services autorises passent
internalReseau interne de confiance
trustedTout 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 --reload

Lister les règles actives

sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --list-services

Supprimer une règle

sudo firewall-cmd --zone=public --remove-service=http --permanent
sudo firewall-cmd --reload

iptables -- 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 :

ChaineRole
INPUTTrafic entrant vers la machine
OUTPUTTrafic sortant depuis la machine
FORWARDTrafic 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 DROP

Sauvegarder et restaurer les règles

sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v4

Scenarios 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 enable

Serveur 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 enable

NAT 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 ACCEPT

Pour rendre le routage permanent, ajoutez dans /etc/sysctl.conf :

net.ipv4.ip_forward = 1

Conclusion

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.