Script de filtrage IP pour GNU/Linux Slackware

Comme toutes les distributions GNU/Linux existantes à ma connaissance, Slackware fourni un paquet pour le programme iptables, partie la plus visible du projet netfilter permettant d'autoriser ou interdire finement le trafic IP.

Mais à l'inverse d'autres distributions, aucun script ou outil n'est fourni au nouvel administrateur. Il n'existe qu'un point de départ, dans le script rc.inet2 (chargé de l'initialisation des services réseau) pour faire appel à un script rc.firewall si celui existe et est exécutable. Charge donc à chaque administrateur d'écrire le script nécessaire ou d'en récupérer un par ailleurs.

Pour ma part, j'ai longtemps utilisé un script assez frustre pour bloquer toute connexion entrante et laisser les connexions sortantes passer directement. Mais est venu un moment où la syntaxe d'iptables est apparue moins rebutante (je ne dirais pas forcément plus claire) et l'écriture de règles plus précises devint possible.

De même, il devenait nécessaire de charger ou supprimer les règles appliquées de manière similaire aux autres scripts ; quelque chose comme rc.firewall start ou stop.

J'ai donc conservé un script rc.firewall qui n'applique quasiment pas de règles mais permet de gérer leur application, en chargeant les définitions depuis un fichier rc.firewall.conf (principe similaire aux fichiers rc.inet1.conf et rc.wireless.conf).

Le fichier rc.firewall.conf ne contient donc que les règles de filtrage elle-mêmes, celle proposées devraient correspondre à l'usage d'un utilisateur lambda, à savoir la consultation de sites web et l'utilisation de courrier électronique. Quelques autres règles sont présentes pour compléter ; aucun service entrant n'est considéré actif et accessible.

L'ajout de nouvelles règles ne devrait pas poser de souci, en se basant sur celles déjà présentes et en se référant au fichier /etc/services (ou à la liste sur le site de l'IANA) pour ce qui concerne les numéros de ports. Une base est donnée pour ce qui concerne le filtrage du trafic IPv6, mais faute de temps et d'environnement propice, aucune règle n'est disponible.

Des versions plus élaborées ont été utilisées dans différents contextes (serveur, utilisation de VPN, ...) et aucun problème n'a été décelé. Comme toujours, ces fichiers sont proposés sans aucune garantie, et vous êtes encouragés à les modifier selon vos besoins et les partager si cela vous semble utile.

L'installation (une fois les règles comprises et adaptées) est simple : copier les deux fichiers rc.firewall et rc.firewall.conf dans le répertoire /etc/rc.d/ et leur appliquer les droits suivants :

chown root:root /etc/rc.d/rc.firewall /etc/rc.d/rc.firewall.conf
chmod 755 /etc/rc.d/rc.firewall
chmod 660 /etc/rc.d/rc.firewall.conf

Il ne vous restera qu'à activer votre filtrage avec la commande /etc/rc.d/rc.firewall start ou à redémarrer le système.

Fichiers rc.firewall et rc.firewall.conf

publié le 28 février 2012