Firewall sous Linux


Netfilter : le firewall Linux qui ne dort jamais

Dans la grande famille des mécanismes de sécurité, Netfilter est le vigile impitoyable de votre système Linux. Il ne parle pas, il n’a pas de visage, mais il scrute tous les paquets qui passent comme un videur de boîte de nuit numérique. Et il juge. Froidement. Méthodiquement. Parfois cruellement.

Mais c’est quoi Netfilter, exactement ?

Netfilter est le cadre intégré au noyau Linux qui permet de filtrer les paquets réseau. Il fonctionne main dans la main avec iptables (ou son successeur nftables), qui sert d’interface en ligne de commande.

Il est utilisé pour :

  • bloquer ou autoriser des connexions (filter)
  • faire du NAT (translation d’adresses)
  • rediriger des ports
  • enregistrer le trafic, et plus encore…

Les tables : vos listes de règles en col blanc

Netfilter travaille avec des tables, qui regroupent les règles selon leur usage. Les principales :

  • filter : la table du jugement. C’est ici qu’on dit qui entre, qui sort, et qui va se faire DROP.
  • nat : la table des illusions. Elle réécrit les adresses pour que vos machines pensent parler à Google, alors qu’elles causent à votre Raspberry Pi.
  • mangle : pour manipuler les paquets comme un chirurgien fou (TTL, flags, etc.).
  • raw : pour les traitements pré-préventifs, avant même que le reste n’ait un mot à dire.

Les hooks : les points d’accroche du destin

Netfilter intercepte les paquets à différents moments de leur vie :

  • PREROUTING : dès qu’un paquet arrive.
  • INPUT : quand un paquet est destiné à la machine elle-même.
  • FORWARD : quand un paquet est juste de passage.
  • OUTPUT : quand la machine elle-même émet un paquet.
  • POSTROUTING : juste avant qu’un paquet ne quitte la machine.

Exemples de règles filter

# Bloquer tout le monde par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Autoriser le trafic loopback
iptables -A INPUT -i lo -j ACCEPT

# Autoriser les connexions déjà établies
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autoriser le SSH (port 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Refuser les paquets ICMP (ping) : parce que paranoïa
iptables -A INPUT -p icmp -j DROP
  

Exemples de règles nat

# Activer le masquerading (utile pour partager une connexion)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Rediriger un port HTTP entrant vers un serveur interne
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80

# Rediriger le port SSH d’un serveur vers un port non standard
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22
  

Un peu d’humour noir pour la route

Un paquet entre dans un pare-feu. Le pare-feu regarde. Le pare-feu décide. Le paquet meurt.

Netfilter ne fait pas de sentiment. Il ne pleure pas. Il log, DROP, et passe au suivant. Et vous devriez l’en remercier.

Conclusion

Netfilter est une des premières lignes de défense de votre système. Bien configuré, il vous protège des intrusions, des erreurs, et de vous-même. Mal configuré, il vous transforme en enquêteur réseau frustré, traquant des paquets perdus dans les limbes numériques.

Rappelez-vous : tout paquet non filtré peut (et va) être utilisé contre vous.