Iptables en service sous Debian

Iptables en service sous DebianMalgré l’émergence de nouveaux outils de gestion du pare-peu netfilter intégré à Linux tels que ufw ou firewalld, iptables reste la référence. Il existe sous Debian une solution pour qu’il s’exécute en service.

Installation des paquets

Deux paquets seulement sont nécessaires à l’exécution de iptables en tant que service.

apt install iptables iptables-persistent

Création des fichiers de configuration

Vous pouvez les créer à partir de la configuration existante  à l’aide des deux commandes suivantes :

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Exemple type de la configuration d’un serveur Web Apache s’exécutant sous Debian

Ajoutez au fichier /etc/iptables/rules.v4 les quelques lignes suivantes, sachant que la règle en sortie pour le DHCP ne se justifie pas pour un serveur de production :

*filter
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
#
#Retour des paquets
#
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#
#Loopback
#
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
#
#Ouverture des ports en entrée (services SSH, APACHE)
#
-A INPUT -m state --state NEW -p tcp -m tcp --dport 47543 -j ACCEPT
-A INPUT -m state --state NEW -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -p tcp -m tcp --dport 443 -j ACCEPT
#
#Ouverture des ports en sortie (apt)
#
-A OUTPUT -m state --state NEW -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -m state --state NEW -p tcp -m tcp --dport 443 -j ACCEPT
#DHCP
-A OUTPUT -p udp --dport 67 -j ACCEPT
#NTP
-A OUTPUT -p udp --dport 123 -j ACCEPT
#DNS
-A OUTPUT -p udp --dport 53 -j ACCEPT
COMMIT

Ce qui change en IPv6 concerne l’ajout du NDP (Neighbour Discovery Protocol) et le changement de port pour le DHCP :

*filter
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
#
#Retour des paquets
#
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Loopback
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
#
#NDP
#
-A INPUT -s fe80::/64 -p ipv6-icmp -j ACCEPT
-A OUTPUT -s fe80::/64 -p ipv6-icmp -j ACCEPT
#
#Ouverture des ports en entrée (services SSH, APACHE)
#
-A INPUT -m state --state NEW -p tcp -m tcp --dport 47543 -j ACCEPT
-A INPUT -m state --state NEW -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -p tcp -m tcp --dport 443 -j ACCEPT
#
#Ouverture des ports en sortie (apt)
#
-A OUTPUT -m state --state NEW -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -m state --state NEW -p tcp -m tcp --dport 443 -j ACCEPT
#DHCP
-A OUTPUT -p udp --dport 546 -j ACCEPT
#NTP
-A OUTPUT -p udp --dport 123 -j ACCEPT
#DNS
-A OUTPUT -p udp --dport 53 -j ACCEPT
COMMIT

Redémarrage du service

Pour que ces quelques règles soient prises en compte, vous devez redémarrer le service netfilter-persistent.

systemctl restart netfilter-persistent

Le contrôle des règles Iptables s’effectue par ces deux commandes :

iptables -L
ip6tables -L

Sécurité  / Formateur Sécurité informatique