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