Sur mes serveurs sous CentOS 7, j’utilise une collection de scripts iptables « faits maison » au lieu du pare-feu firewalld fourni dans la configuration par défaut. C’est là une simple habitude que j’ai gardée de mes longues années passées sous Slackware Linux, où il fallait chasser l’ours à mains nues et écrire son pare-feu à la main. Depuis que j’ai migré mon parc de serveurs sous CentOS, j’ai gardé quelques-unes de mes anciennes habitudes fidèles au principe KISS. Différents chemins mènent à Saint-Bauzille-de-Putois.

Je me doute bien que les geeks adeptes de veille technologie frétillent déjà sur leur chaise pour me faire remarquer qu’iptables est une technologie obsolète et qu’il vaudrait mieux utiliser son remplaçant nftables ou la surcouche firewalld. Peut-être qu’ils ont raison, mais d’une part, j’attends une bonne raison pour migrer, et d’autre part, n’oublions pas que c’est dans les vieilles marmites qu’on fait les meilleures soupes. D’ailleurs, iptables est officiellement intégré dans Red Hat Enterprise Linux 8.x et les versions correspondantes de CentOS. Ce qui veut dire qu’on pourra sereinement l’utiliser jusqu’en 2029. Bref.

Dans un précédent article, j’ai décrit en détail la confection d’un pare-feu avec iptables. J’ai fourni quelques pistes pour scripter le pare-feu, mais ça restait relativement basique. Ces derniers jours, j’ai pris un peu de temps pour mettre à jour mes scripts et les ranger proprement dans un dépôt Github.

$ git clone https://github.com/kikinovak/firewall

Ce dépôt fournit une petite collection de scripts de pare-feu pour Red Hat Enterprise Linux et CentOS, pour trois contextes différents en tout et pour tout.

  • public : un serveur dédié avec une ouverture frontale sur Internet (listing)
  • router : un routeur/passerelle dans un réseau local (listing)
  • simple : un serveur simple (standalone) dans un réseau local (listing)

Les scripts requièrent les paquets iptables et iptables-services, qu’il faudra donc installer. On prendra également soin de supprimer le paquet firewalld qui risque de créer un conflit avec notre configuration.

Repérez le répertoire qui correspond à votre configuration (public, router ou simple) et copiez le script firewall.sh vers un endroit approprié de votre système, comme ~/bin.

Éditez les quelques variables au début du script firewall.sh pour l’adapter à votre configuration réseau.

Ensuite, repérez la section # Add various services here # dans le script. Vous souhaiterez probablement ajouter quelques services comme le DNS, le web, le mail, le proxy transparent, le partage de fichiers, les services d’annuaires, etc. Les sous-répertoires services respectifs fournissent des modèles pour les services les plus populaires, qu’il suffit de copier/coller dans le script à l’endroit indiqué.

Démarrez le pare-feu :

$ sudo ./firewall.sh --start

Arrêtez le pare-feu :

$ sudo ./firewall.sh --stop

Affichez l’état du pare-feu :

$ sudo ./firewall.sh --status

La version adaptée au routeur fournit une option supplémentaire --nat qui active le relais des paquets sans démarrer le pare-feu pour autant.

$ sudo ./firewall.sh --nat

Afficher les options du pare-feu :

$ sudo ./firewall.sh --help

Enfin, la variante pour les serveurs dédiés intègre proprement Fail2ban s’il est présent sur le système.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


1 commentaire

wwp · 24 octobre 2019 à 14 h 18 min

Intéressant!
J’ai un vieux script iptables jay-firewall qui tourne sur un routeur sur réseau local (branché au cul de la box, il gère lui même le firewalling and le LAN), que je dois remplacer très prochainement. J’attendais la CentOS 8 pour voir si elle contenait iptables, mais que j’opte pour la 7 ou la 8, je pense que je vais utiliser ta solution. Merci pour ce partage, instructif!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.