Don't like ads? PRO users don't see any ads ;-)
Guest

Protección DoS via iptables Linux

By: a guest on Jun 20th, 2012  |  syntax: Bash  |  size: 2.06 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. # Script proteccion para DoS
  2. # La detección se realiza en un frame de 5 segundos, pasando al atacante
  3. # a un ban(DROP) por 15 minutos autorenobables
  4. iptables -F DoS
  5. iptables -X DoS
  6. iptables -F blacklist
  7. iptables -X blacklist
  8. # Creo mis chains para DoS defense
  9. iptables -N DoS       #--jump "todo lo que quiero defender contra DoS"
  10. iptables -N blacklist #--jump "ban a attackers"
  11.  
  12. # LOG && DROP de los hosts blockeados por DoS
  13. # tiempo de ban en segundos
  14. ban_time=$((60*15)) #15 minutos
  15. # 1 de cada cuantos paquetes del ataque logueo para no floodear syslog
  16. probability=0.001 #1 en 1000
  17.  
  18. # una vez que un atacante entro en blacklist, lo mantengo en DROP a menos que se calle absolutamente por $ban_time (15 minutos x defecto)
  19. # estas reglas tienen que ir en el top de su chain
  20. iptables -A INPUT -m recent --update --name blocked --seconds $ban_time --hitcount 1 -m statistic --mode random --probability 0.001 -j LOG --log-prefix "DROP_DoS "
  21. iptables -A INPUT -m recent --update --name blocked --seconds $ban_time --hitcount 1 -j DROP
  22. iptables -A FORWARD -m recent --update --name blocked --seconds $ban_time --hitcount 1 -m statistic --mode random --probability 0.001 -j LOG --log-prefix "DROP_DoS "
  23. iptables -A FORWARD -m recent --update --name blocked --seconds $ban_time --hitcount 1 -j DROP
  24.  
  25. # Que cosas chekeo contra DoS?
  26. # ejemplo DNS si entra via wan0
  27. iptables -A INPUT -i wan0 -p udp --dport 53 -j DoS
  28. iptables -A FORWARD -i wan0 -p udp --dport 53 -j DoS
  29. # ejemplo para un apache
  30. iptables -A INPUT -p tcp --syn --dport 80 -j DoS
  31.  
  32. # DoS
  33. # si hay mas de 255 paquetes en 5 segundos pasa a blacklist
  34. # para tener 255 paqutes de backlog hay que pasar parametro en el modprobe de xt_recent (por default es 20 sino)
  35. # modprobe xt_recent ip_pkt_list_tot=255
  36.  
  37. iptables -A DoS -m recent --name seen --set
  38. iptables -A DoS -m recent --rcheck --name seen --seconds 5 --hitcount 255 -j blacklist
  39. iptables -A DoS -m recent --rcheck --name seen --seconds 5 --hitcount 255 -j LOG --log-prefix "Blocked_DoS "
  40. # blacklist
  41. iptables -A blacklist -m recent --name blocked --set