ssh.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. case "$1" in
  3. start)
  4. #création de la chaine personnalisé pour SSH
  5. iptables -N SSH
  6. iptables -N SSH_FAIL
  7. iptables -N SSH_ACCEPT
  8. #si un paquet est a destination du port 22 il sera renvoyer vers la chaine SSH
  9. iptables -t filter -A INPUT -p tcp --dport 22 -j SSH
  10. #chaine SSH
  11. #on ajoute une exception pour le système de blocage (règle à adapter)
  12. iptables -A SSH -s 192.168.1.122 -i eth0 -j ACCEPT
  13. #Lorsqu un nouveau paquet arrive on place l adresse ip source dans la liste SSH
  14. iptables -A SSH -m state --state NEW -m recent --name SSH --set
  15. #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é
  16. iptables -A SSH -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 3 -j SSH_FAIL
  17. #dans les autres cas on accepte
  18. iptables -A SSH -m state --state NEW -m recent --name SSH --rcheck -j SSH_ACCEPT
  19. #SSH_FAIL
  20. #Si un paquet arrive dans cette chaine c est qu il doit être jeté
  21. iptables -A SSH_FAIL -j LOG --log-prefix "SSH FAIL :"
  22. iptables -A SSH_FAIL -j DROP
  23. #SSH_ACCEPT
  24. #Si un paquet arrive dans cette chaine c est qu il doit être accepté
  25. iptables -A SSH_ACCEPT -j LOG --log-prefix "SSH ACCEPT :"
  26. iptables -A SSH_ACCEPT -j ACCEPT
  27. ;;
  28. stop)
  29. #supression du point d'entrée
  30. iptables -t filter -D INPUT -p tcp --dport 22 -j SSH
  31. #vider la chaine SSH
  32. iptables -F SSH
  33. iptables -F SSH_FAIL
  34. iptables -F SSH_ACCEPT
  35. #suppression de la chaine
  36. iptables -X SSH
  37. iptables -X SSH_FAIL
  38. iptables -X SSH_ACCEPT
  39. ;;
  40. esac
  41. exit 0