|
@@ -0,0 +1,48 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+case "$1" in
|
|
|
+ start)
|
|
|
+ #création de la chaine personnalisé pour SSH
|
|
|
+ iptables -N SSH
|
|
|
+ iptables -N SSH_FAIL
|
|
|
+ iptables -N SSH_ACCEPT
|
|
|
+
|
|
|
+ #si un paquet est a destination du port 22 il sera renvoyer vers la chaine SSH
|
|
|
+ iptables -t filter -A INPUT -p tcp --dport 22 -j SSH
|
|
|
+
|
|
|
+ #chaine SSH
|
|
|
+ #on ajoute une exception pour le système de blocage (règle à adapter)
|
|
|
+ iptables -A SSH -s 192.168.1.122 -i eth0 -j ACCEPT
|
|
|
+ #Lorsqu un nouveau paquet arrive on place l adresse ip source dans la liste SSH
|
|
|
+ iptables -A SSH -m state --state NEW -m recent --name SSH --set
|
|
|
+ #si un nouveau paquet arrive qu il est dans la liste SSH qu il a moins de 60s et qu'il a été reçu au moins 3 fois alors il est jeté
|
|
|
+ iptables -A SSH -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 3 -j SSH_FAIL
|
|
|
+ #dans les autres cas on accepte
|
|
|
+ iptables -A SSH -m state --state NEW -m recent --name SSH --rcheck -j SSH_ACCEPT
|
|
|
+
|
|
|
+
|
|
|
+ #SSH_FAIL
|
|
|
+ #Si un paquet arrive dans cette chaine c est qu il doit être jeté
|
|
|
+ iptables -A SSH_FAIL -j LOG --log-prefix "SSH FAIL :"
|
|
|
+ iptables -A SSH_FAIL -j DROP
|
|
|
+
|
|
|
+ #SSH_ACCEPT
|
|
|
+ #Si un paquet arrive dans cette chaine c est qu il doit être accepté
|
|
|
+ iptables -A SSH_ACCEPT -j LOG --log-prefix "SSH ACCEPT :"
|
|
|
+ iptables -A SSH_ACCEPT -j ACCEPT
|
|
|
+ ;;
|
|
|
+ stop)
|
|
|
+ #supression du point d'entrée
|
|
|
+ iptables -t filter -D INPUT -p tcp --dport 22 -j SSH
|
|
|
+ #vider la chaine SSH
|
|
|
+ iptables -F SSH
|
|
|
+ iptables -F SSH_FAIL
|
|
|
+ iptables -F SSH_ACCEPT
|
|
|
+ #suppression de la chaine
|
|
|
+ iptables -X SSH
|
|
|
+ iptables -X SSH_FAIL
|
|
|
+ iptables -X SSH_ACCEPT
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+exit 0
|
|
|
+
|