Skip to main content

3_IPtables au démarrage

Création du fichier rc.local

Vous pouvez utiliser rc.local pour exécuter automatiquement des commandes au démarrage.
S’il n’existe pas, créez‑le :

nano /etc/rc.local

Exemple de contenu :

#!/bin/bash

iptables -t filter -F
iptables -t filter -X
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 2/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 2/second -j ACCEPT
iptables -A INPUT -p tcp --syn -m limit --limit 2/s --limit-burst 30 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags ALL ALL -m limit --limit 1/h -j ACCEPT
iptables -t filter -A INPUT -i ens33 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -o ens33 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -i ens33 -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -o ens33 -p tcp --dport 3306 -j ACCEPT

exit 0

Définissez les permissions :

chown root:root /etc/rc.local
chmod 700 /etc/rc.local

Vérifiez après redémarrage :

systemctl status rc.local

Version moderne avec systemd (recommandée)

rc.local est obsolète sur de nombreuses distributions modernes.
La méthode propre consiste à créer un service systemd dédié.

Création du script de démarrage

Créez un script dans /usr/local/bin/iptables-start.sh :

nano /usr/local/bin/iptables-start.sh

Exemple de contenu :

#!/bin/bash

iptables -t filter -F
iptables -t filter -X
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 2/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 2/second -j ACCEPT
iptables -A INPUT -p tcp --syn -m limit --limit 2/s --limit-burst 30 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags ALL ALL -m limit --limit 1/h -j ACCEPT
iptables -t filter -A INPUT -i ens33 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -o ens33 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -i ens33 -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -o ens33 -p tcp --dport 3306 -j ACCEPT

exit 0

Rendez-le exécutable :

chmod +x /usr/local/bin/iptables-start.sh

Création du service systemd

Créez un fichier de service :

nano /etc/systemd/system/iptables-start.service

Contenu recommandé :

[Unit]
Description=Application des règles iptables au démarrage
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/iptables-start.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Activation du service

Rechargez systemd :

systemctl daemon-reload

Activez le service au démarrage :

systemctl enable iptables-start.service

Lancez-le immédiatement :

systemctl start iptables-start.service

Vérifiez son état :

systemctl status iptables-start.service