On commence par lister règles
iptables -L -n --line-numbers
Ici on supprime la règle n°1 de la CHAIN f2b-sshd-ddos qui bloque l'ip
iptables -D f2b-sshd-ddos 1
Dans IPtables, les règles sont gérées par ligne par ligne, donc lorsque qu l’on ajoute une nouvelle règle, elle se mettra à la suite des autres.
Il est donc préférable de lister nos règles en spécifiant leur numéro de ligne avec l’option « –line-numbers« , sinon cela pourrait devenir un vrai casse tete en cas d’erreur.
:
Pour afficher les tables « INPUT« , « FORWARD » et « OUTPUT » avec les numeros de ligne:
iptables -L --line-numbers
Pour les tables « PREROUTING » et « POSTROUTING » avec les numeros de ligne:
iptables -L -t nat --line-numbers
Maintenant que l’on peut facilement identifier la règle à supprimer, on la supprime (ici la numéro 4 dans la table INPUT):
iptables -D INPUT 4
On commence par écrire nos règles de démarrage d’iptables dans un fichier texte, ici /etc/iptables/start.sh :
#!/bin/sh
# Réinitialise les règles
iptables -t filter -F
iptables -t filter -X# Bloque tout le trafic
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP# Autorise les connexions déjà établies et localhost
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT# DNS entrée/sortie
iptables -t filter -A OUTPUT -p tcp –dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp –dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp –dport 53 -j ACCEPT# SSH
iptables -t filter -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 22 -j ACCEPT# HTTP/HTTPS
iptables -t filter -A OUTPUT -p tcp –dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 443 -j ACCEPT# Ping – ICMP
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
On oublie pas de rendre exécutable le script:
chmod +x /etc/iptables/start.sh
Puis nos règles d’arrêt iptables, ici /etc/iptables/stop.sh :
#!/bin/sh
# Flush all rules
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
on rend le script exécutable:
chmod +x /etc/iptables/stop.sh
Il ne nous reste plus qu’a créé le service dans /etc/init.d/, dans l’exemple il porte le nom « iptables_service ».
#!/bin/sh
SERVICE_NAME=iptables_service
SERVICE_DIRECTORY=/etc/iptables/
SERVICE_STARTUP_SCRIPT=start.sh
SERVICE_SHUTDOWN_SCRIPT=stop.sh## Functions ##
usage()
{
echo « ———————–«
echo « Usage: $0 (stop|start|restart) »
echo « ———————–«
}
service_start()
{
echo « Starting service ‘${SERVICE_NAME}’… »
OWD=`pwd`
cd ${SERVICE_DIRECTORY} ./${SERVICE_STARTUP_SCRIPT}
cd $OWD
echo « Service ‘${SERVICE_NAME}’ started successfully »
}
service_stop()
{
echo « Stopping service ‘${SERVICE_NAME}’… »
OWD=`pwd`
cd ${SERVICE_DIRECTORY} && ./${SERVICE_SHUTDOWN_SCRIPT}
cd $OWD
echo « Service ‘${SERVICE_NAME}’ stopped »
}## Main ##
if [ -z $1 ]; then
usage
ficase $1 in
stop)
service_stop
;;
start)
service_start
;;
restart)
service_stop
service_start
;;
*)
usage
esac
exit 0
On le rend exécutable:
chmod +x /etc/init.d/iptables_service
Maintenant, pour démarrer le service:
service iptables_service start
ou
/etc/init.d/iptables_service start
Le redémarrer:
service iptables_service restart
ou
/etc/init.d/iptables_service restart
L’arrêter:
service iptables_service stop
ou
/etc/init.d/iptables_service stop