comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Proteger tu web ante un ataque DDOS

  • 6 Respuestas
  • 2579 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Cronos

  • *
  • Underc0der
  • Mensajes: 1000
  • Actividad:
    0%
  • Reputación 1
  • Mientras mas se, me doy cuenta de lo poco que se.
    • Ver Perfil
    • Email
  • Skype: cronos.labs
« en: Julio 23, 2011, 09:37:37 pm »
Intentando detener un DDoS

Porque un null-route a una ip no es una solución, es una chapuza.
Si unos script-kiddies están DDoSeando tu web.....

1) Se basa en ataques reales.
2) No hay nada de teoría, solo parte práctica.

A) Detectando el ataque
1) Usando el comando netstat

Código: PHP
  1. netstat -an | grep :80 | sort

Código: PHP
  1. netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'

Código: PHP
  1. netstat -n -p|grep SYN_REC | wc -l

Código: PHP
  1. netstat -lpn|grep :80 |awk '{print $5}'|sort

Código: PHP
  1. netstat -an | grep :80 | awk '{ print $5 }' | awk -F: '{ print $1 }' | sort | uniq -c | sort -n

Ejemplo de ataque SYN_RECV o SYN Flooding al Apache (puerto 80).

192.168.0.3 es la ip del servidor apache y 192.168.0.105 es la ip del "atacante".

Código: PHP
  1. tcp        0      0 192.168.0.3:80          192.168.0.5:60808     SYN_RECV  
  2. tcp        0      0 192.168.0.3:80          192.168.0.5:60761     SYN_RECV  
  3. tcp        0      0 192.168.0.3:80          192.168.0.5:60876     SYN_RECV  
  4. tcp        0      0 192.168.0.3:80          192.168.0.5:60946     SYN_RECV  
  5. tcp        0      0 192.168.0.3:80          192.168.0.5:60763     SYN_RECV  
  6. tcp        0      0 192.168.0.3:80          192.168.0.5:60955     SYN_RECV  
  7. tcp        0      0 192.168.0.3:80          192.168.0.5:60765     SYN_RECV  
  8. tcp        0      0 192.168.0.3:80          192.168.0.5:60961     SYN_RECV  
  9. tcp        0      0 192.168.0.3:80          192.168.0.5:60923     SYN_RECV  
  10. tcp        0      0 192.168.0.3:80          192.168.0.5:61336     SYN_RECV  
  11. tcp        0      0 192.168.0.3:80          192.168.0.5:61011     SYN_RECV  
  12. tcp        0      0 192.168.0.3:80          192.168.0.5:60911     SYN_RECV  
  13. tcp        0      0 192.168.0.3:80          192.168.0.5:60758     SYN_RECV  
  14. tcp        0      0 192.168.0.3:80          192.168.0.5:60828     SYN_RECV  
  15. tcp        0      0 192.168.0.3:80          192.168.0.5:61114     SYN_RECV  
  16. tcp        0      0 192.168.0.3:80          192.168.0.5:61074     SYN_RECV  
  17. tcp        0      0 192.168.0.3:80          192.168.0.5:60826     SYN_RECV  
  18. tcp        0      0 192.168.0.3:80          192.168.0.5:60959     SYN_RECV  
  19. tcp        0      0 192.168.0.3:80          192.168.0.5:60900     SYN_RECV  
  20. tcp        0      0 192.168.0.3:80          192.168.0.5:60940     SYN_RECV  
  21. tcp        0      0 192.168.0.3:80          192.168.0.5:60920     SYN_RECV  
  22. tcp        0      0 192.168.0.3:80          192.168.0.5:60825     SYN_RECV  
  23. tcp        0      0 192.168.0.3:80          192.168.0.5:60945     SYN_RECV  
  24. tcp        0      0 192.168.0.3:80          192.168.0.5:60913     SYN_RECV  
  25. tcp        0      0 192.168.0.3:80          192.168.0.5:61009     SYN_RECV  
  26. tcp        0      0 192.168.0.3:80          192.168.0.5:60755     SYN_RECV  
  27. tcp        0      0 192.168.0.3:80          192.168.0.5:60904     SYN_RECV  
  28. tcp        0      0 192.168.0.3:80          192.168.0.5:61583     SYN_RECV  
  29. tcp        0      0 192.168.0.3:80          192.168.0.5:60910     SYN_RECV  
  30. tcp        0      0 192.168.0.3:80          192.168.0.5:60915     SYN_RECV  
  31. tcp        0      0 192.168.0.3:80          192.168.0.5:60827     SYN_RECV  
  32. tcp        0      0 192.168.0.3:80          192.168.0.5:61458     SYN_RECV  
  33. tcp        0      0 192.168.0.3:80          192.168.0.5:60908     SYN_RECV  
  34. tcp        0      0 192.168.0.3:80          192.168.0.5:61007     SYN_RECV  
  35. tcp        0      0 192.168.0.3:80          192.168.0.5:60927     SYN_RECV  
  36. tcp        0      0 192.168.0.3:80          192.168.0.5:60951     SYN_RECV  
  37. tcp        0      0 192.168.0.3:80          192.168.0.5:60942     SYN_RECV  
  38. tcp        0      0 192.168.0.3:80          192.168.0.5:61113     SYN_RECV  
  39. tcp        0      0 192.168.0.3:80          192.168.0.5:60909     SYN_RECV  
  40. tcp        0      0 192.168.0.3:80          192.168.0.5:60822     SYN_RECV  
  41. tcp        0      0 192.168.0.3:80          192.168.0.5:60894     SYN_RECV  
  42. tcp        0      0 192.168.0.3:80          192.168.0.5:60952     SYN_RECV  
  43. tcp        0      0 192.168.0.3:80          192.168.0.5:60928     SYN_RECV  
  44. tcp        0      0 192.168.0.3:80          192.168.0.5:60936     SYN_RECV  
  45. tcp        0      0 192.168.0.3:80          192.168.0.5:60906     SYN_RECV  
  46. tcp        0      0 192.168.0.3:80          192.168.0.5:61466     SYN_RECV  
  47. tcp        0      0 192.168.0.3:80          192.168.0.5:60919     SYN_RECV  
  48. tcp        0      0 192.168.0.3:80          192.168.0.5:60914     SYN_RECV  
  49. tcp        0      0 192.168.0.3:80          192.168.0.5:60926     SYN_RECV  
  50. tcp        0      0 192.168.0.3:80          192.168.0.5:60939     SYN_RECV  
  51. tcp        0      0 192.168.0.3:80          192.168.0.5:60931     SYN_RECV  
  52. tcp        0      0 192.168.0.3:80          192.168.0.5:60831     SYN_RECV  
  53. tcp        0      0 192.168.0.3:80          192.168.0.5:60823     SYN_RECV  
  54. tcp        0      0 192.168.0.3:80          192.168.0.5:60954     SYN_RECV  
  55. tcp        0      0 192.168.0.3:80          192.168.0.5:60916     SYN_RECV  
  56. tcp        0      0 192.168.0.3:80          192.168.0.5:60963     SYN_RECV  
  57. tcp        0      0 192.168.0.3:80          192.168.0.5:60947     SYN_RECV  
  58. tcp        0      0 192.168.0.3:80          192.168.0.5:61006     SYN_RECV  
  59. tcp        0      0 192.168.0.3:80          192.168.0.5:60933     SYN_RECV  
  60. tcp        0      0 192.168.0.3:80          192.168.0.5:60950     SYN_RECV  
  61. tcp        0      0 192.168.0.3:80          192.168.0.5:60895     SYN_RECV  
  62. tcp        0      0 192.168.0.3:80          192.168.0.5:60917     SYN_RECV  
  63. tcp        0      0 192.168.0.3:80          192.168.0.5:61480     SYN_RECV  
  64. tcp        0      0 192.168.0.3:80          192.168.0.5:60935     SYN_RECV  
  65. tcp        0      0 192.168.0.3:80          192.168.0.5:60960     SYN_RECV  
  66. tcp        0      0 192.168.0.3:80          192.168.0.5:60767     SYN_RECV  
  67. tcp        0      0 192.168.0.3:80          192.168.0.5:60918     SYN_RECV  
  68. tcp        0      0 192.168.0.3:80          192.168.0.5:60821     SYN_RECV  
  69. tcp        0      0 192.168.0.3:80          192.168.0.5:61077     SYN_RECV  
  70. tcp        0      0 192.168.0.3:80          192.168.0.5:60905     SYN_RECV  
  71. tcp        0      0 192.168.0.3:80          192.168.0.5:61517     SYN_RECV  
  72. tcp        0      0 192.168.0.3:80          192.168.0.5:60893     SYN_RECV  
  73. tcp        0      0 192.168.0.3:80          192.168.0.5:60953     SYN_RECV  
  74. tcp        0      0 192.168.0.3:80          192.168.0.5:60903     SYN_RECV  
  75. tcp        0      0 192.168.0.3:80          192.168.0.5:61439     SYN_RECV  
  76. tcp        0      0 192.168.0.3:80          192.168.0.5:61337     SYN_RECV  
  77. tcp        0      0 192.168.0.3:80          192.168.0.5:61545     SYN_RECV  
  78. tcp        0      0 192.168.0.3:80          192.168.0.5:61299     SYN_RECV  
  79. tcp        0      0 192.168.0.3:80          192.168.0.5:61010     SYN_RECV  
  80. tcp        0      0 192.168.0.3:80          192.168.0.5:60930     SYN_RECV  
  81. tcp        0      0 192.168.0.3:80          192.168.0.5:60744     SYN_RECV  
  82. tcp        0      0 192.168.0.3:80          192.168.0.5:60929     SYN_RECV  
  83. tcp        0      0 192.168.0.3:80          192.168.0.5:60754     SYN_RECV  
  84. tcp        0      0 192.168.0.3:80          192.168.0.5:61008     SYN_RECV  
  85. tcp        0      0 192.168.0.3:80          192.168.0.5:61116     SYN_RECV  
  86. tcp        0      0 192.168.0.3:80          192.168.0.5:60811     SYN_RECV  
  87. tcp        0      0 192.168.0.3:80          192.168.0.5:60807     SYN_RECV  
  88. tcp        0      0 192.168.0.3:80          192.168.0.5:60938     SYN_RECV  
  89. tcp        0      0 192.168.0.3:80          192.168.0.5:60764     SYN_RECV  
  90. tcp        0      0 192.168.0.3:80          192.168.0.5:60873     SYN_RECV  
  91. tcp        0      0 192.168.0.3:80          192.168.0.5:60817     SYN_RECV  
  92. tcp        0      0 192.168.0.3:80          192.168.0.5:61550     SYN_RECV  
  93. tcp        0      0 192.168.0.3:80          192.168.0.5:60748     SYN_RECV  
  94. tcp        0      0 192.168.0.3:80          192.168.0.5:60956     SYN_RECV  
  95. tcp        0      0 192.168.0.3:80          192.168.0.5:60753     SYN_RECV  
  96. tcp        0      0 192.168.0.3:80          192.168.0.5:61115     SYN_RECV  
  97. tcp        0      0 192.168.0.3:80          192.168.0.5:60741     SYN_RECV  
  98. tcp        0      0 192.168.0.3:80          192.168.0.5:61075     SYN_RECV  
  99. tcp        0      0 192.168.0.3:80          192.168.0.5:60948     SYN_RECV  
  100. tcp        0      0 192.168.0.3:80          192.168.0.5:60829     SYN_RECV  
  101. tcp        0      0 192.168.0.3:80          192.168.0.5:60943     SYN_RECV  
  102. tcp        0      0 192.168.0.3:80          192.168.0.5:61338     SYN_RECV  
  103. tcp        0      0 192.168.0.3:80          192.168.0.5:60762     SYN_RECV  
  104. tcp        0      0 192.168.0.3:80          192.168.0.5:60824     SYN_RECV  
  105. tcp        0      0 192.168.0.3:80          192.168.0.5:60830     SYN_RECV  
  106. tcp        0      0 192.168.0.3:80          192.168.0.5:61535     SYN_RECV  
  107. tcp        0      0 192.168.0.3:80          192.168.0.5:60898     SYN_RECV  
  108. tcp        0      0 192.168.0.3:80          192.168.0.5:60815     SYN_RECV  
  109. tcp        0      0 192.168.0.3:80          192.168.0.5:60962     SYN_RECV  
  110. tcp        0      0 192.168.0.3:80          192.168.0.5:60957     SYN_RECV  
  111. tcp        0      0 192.168.0.3:80          192.168.0.5:60944     SYN_RECV  
  112. tcp        0      0 192.168.0.3:80          192.168.0.5:60921     SYN_RECV  
  113. tcp        0      0 192.168.0.3:80          192.168.0.5:60759     SYN_RECV  
  114. tcp        0      0 192.168.0.3:80          192.168.0.5:60897     SYN_RECV  
  115. tcp        0      0 192.168.0.3:80          192.168.0.5:61518     SYN_RECV  
  116. tcp        0      0 192.168.0.3:80          192.168.0.5:60958     SYN_RECV  
  117. tcp        0      0 192.168.0.3:80          192.168.0.5:60922     SYN_RECV  
  118. tcp        0      0 192.168.0.3:80          192.168.0.5:60937     SYN_RECV  
  119. tcp        0      0 192.168.0.3:80          192.168.0.5:60875     SYN_RECV  
  120. tcp        0      0 192.168.0.3:80          192.168.0.5:60766     SYN_RECV  
  121. tcp        0      0 192.168.0.3:80          192.168.0.5:60751     SYN_RECV  
  122. tcp        0      0 192.168.0.3:80          192.168.0.5:60768     SYN_RECV  
  123. tcp        0      0 192.168.0.3:80          192.168.0.5:60743     SYN_RECV  
  124. tcp        0      0 192.168.0.3:80          192.168.0.5:61076     SYN_RECV  
  125. tcp        0      0 192.168.0.3:80          192.168.0.5:60912     SYN_RECV  
  126. tcp        0      0 192.168.0.3:80          192.168.0.5:60816     SYN_RECV

Claro ejemplo de SYN Attack al Apache.

2) Mirando el server-status del Apache

Si miramos el server-status del apache veremos conexiones en estado "Reading" ("R" Reading Request).

El problema es que cuando el número de conexiones "Reading" llena el "MaxClients" del Apache no acepta nuevas peticiones, por lo que los nuevos clientes, aunque sean legítimos, no serán aceptados.

Podemos aumentar el valor del "MaxClients" para que no se llene la cola de peticiones y acepte a todos los clientes, sean atacantes o no.

Otra buena medida es bajar el valor del "Timeout" del Apache para que las peticiones "Reading" sean "matadas" rápidamente, antes que pueda llenarse el MaxClients a su tope.

Para aumentar el MaxClients en el Apache 2 basta con añadir la directiva:

ServerLimit 350 antes de MaxClients y ya dejará.

<IfModule prefork.c>
[..]
ServerLimit 500
MaxClients 450
[..]
</IfModule>

3) Mirando los logs del mod_evasive

Citar
Jun 22 18:24:04 lan mod_evasive[3835]: Blacklisting address 82.228.169.50: possible attack.
Jun 22 18:24:45 lan mod_evasive[3600]: Blacklisting address 81.206.164.163: possible attack.
Jun 22 18:25:46 lan mod_evasive[3589]: Blacklisting address 155.232.250.19: possible attack.
Jun 22 18:27:23 lan mod_evasive[3671]: Blacklisting address 83.227.217.2: possible attack.
Jun 22 18:28:10 lan mod_evasive[3673]: Blacklisting address 68.187.171.89: possible attack.
Jun 22 18:29:57 lan mod_evasive[3605]: Blacklisting address 70.143.2.130: possible attack.
Jun 22 18:30:45 lan mod_evasive[3803]: Blacklisting address 69.157.93.88: possible attack.
Jun 22 18:31:45 lan mod_evasive[10397]: Blacklisting address 146.64.81.22: possible attack.
Jun 22 18:35:01 lan mod_evasive[3794]: Blacklisting address 66.38.192.134: possible attack.
Jun 22 18:35:15 lan mod_evasive[3553]: Blacklisting address 81.190.204.64: possible attack.
Jun 22 18:40:10 lan mod_evasive[16602]: Blacklisting address 64.231.39.129: possible attack.
Jun 22 18:48:04 lan mod_evasive[16479]: Blacklisting address 84.99.195.100: possible attack.
Jun 22 18:48:12 lan mod_evasive[16467]: Blacklisting address 201.0.10.142: possible attack.
Jun 22 18:52:57 lan mod_evasive[16573]: Blacklisting address 219.95.39.242: possible attack.
Jun 22 18:53:07 lan mod_evasive[16534]: Blacklisting address 86.129.3.91: possible attack.
Jun 22 18:53:26 lan mod_evasive[16527]: Blacklisting address 62.254.0.32: possible attack.
Jun 22 18:54:41 lan mod_evasive[30473]: Blacklisting address 24.196.199.191: possible attack.
Jun 22 18:55:17 lan mod_evasive[30520]: Blacklisting address 142.161.157.227: possible attack.
Jun 22 18:55:24 lan mod_evasive[30461]: Blacklisting address 65.92.145.133: possible attack.
Jun 22 18:55:33 lan mod_evasive[30509]: Blacklisting address 88.111.227.200: possible attack.
Jun 22 18:56:13 lan mod_evasive[30473]: Blacklisting address 69.199.94.227: possible attack.
Jun 22 18:57:45 lan mod_evasive[30517]: Blacklisting address 86.125.135.212: possible attack.
Jun 22 18:57:54 lan mod_evasive[30479]: Blacklisting address 84.192.141.65: possible attack.
Jun 22 18:58:46 lan mod_evasive[30527]: Blacklisting address 83.140.97.106: possible attack.
Jun 22 18:59:31 lan mod_evasive[30469]: Blacklisting address 82.173.216.196: possible attack.
Jun 22 19:00:33 lan mod_evasive[30517]: Blacklisting address 80.176.157.245: possible attack.
Jun 22 19:00:38 lan mod_evasive[30470]: Blacklisting address 86.133.102.51: possible attack.
Jun 22 19:01:35 lan mod_evasive[30870]: Blacklisting address 24.42.134.253: possible attack.
Jun 22 19:01:48 lan mod_evasive[30509]: Blacklisting address 62.254.0.34: possible attack.
Jun 22 19:02:57 lan mod_evasive[31009]: Blacklisting address 81.227.219.125: possible attack.
Jun 22 19:03:29 lan mod_evasive[31056]: Blacklisting address 172.209.173.153: possible attack.
Jun 22 19:05:07 lan mod_evasive[31385]: Blacklisting address 84.6.12.110: possible attack.
Jun 22 19:06:52 lan mod_evasive[31008]: Blacklisting address 85.227.144.249: possible attack.
Jun 22 19:06:56 lan mod_evasive[31263]: Blacklisting address 213.222.156.222: possible attack.
Jun 22 19:07:13 lan mod_evasive[31393]: Blacklisting address 62.163.143.166: possible attack.
Jun 22 19:07:37 lan mod_evasive[31021]: Blacklisting address 62.135.101.73: possible attack.
Jun 22 19:08:03 lan mod_evasive[31251]: Blacklisting address 82.201.249.69: possible attack.
Jun 22 19:08:17 lan mod_evasive[31200]: Blacklisting address 81.62.65.53: possible attack.
Jun 22 19:11:04 lan mod_evasive[31263]: Blacklisting address 82.39.148.204: possible attack.
Jun 22 19:12:37 lan mod_evasive[31241]: Blacklisting address 213.222.154.13: possible attack.
Jun 22 19:13:54 lan mod_evasive[31027]: Blacklisting address 81.51.79.4: possible attack.
Jun 22 19:24:04 lan mod_evasive[31041]: Blacklisting address 84.221.118.156: possible attack.
Jun 22 19:48:47 lan mod_evasive[3400]: Blacklisting address 62.135.101.192: possible attack.
Jun 22 19:53:04 lan mod_evasive[31031]: Blacklisting address 62.30.33.13: possible attack.
Jun 22 19:54:32 lan mod_evasive[31016]: Blacklisting address 72.14.194.18: possible attack.
Jun 22 19:56:10 lan mod_evasive[31067]: Blacklisting address 198.96.34.58: possible attack.
Jun 22 20:03:24 lan mod_evasive[5144]: Blacklisting address 172.213.33.242: possible attack.
Jun 22 20:08:31 lan mod_evasive[5137]: Blacklisting address 83.241.11.16: possible attack.
Jun 22 20:21:59 lan mod_evasive[6645]: Blacklisting address 201.23.193.20: possible attack.
Jun 22 20:32:28 lan mod_evasive[7801]: Blacklisting address 212.38.134.172: possible attack.
Jun 22 20:45:46 lan mod_evasive[7836]: Blacklisting address 81.247.11.48: possible attack.
Jun 22 20:48:03 lan mod_evasive[7796]: Blacklisting address 70.245.98.186: possible attack.
Jun 22 20:49:38 lan mod_evasive[7832]: Blacklisting address 61.8.138.203: possible attack.
Jun 22 20:51:21 lan mod_evasive[7801]: Blacklisting address 201.132.197.161: possible attack.
Jun 22 20:57:18 lan mod_evasive[10426]: Blacklisting address 82.201.249.67: possible attack.
Jun 22 20:57:51 lan mod_evasive[7822]: Blacklisting address 81.77.26.162: possible attack.
Jun 22 21:00:25 lan mod_evasive[7817]: Blacklisting address 200.39.202.243: possible attack.
Jun 22 21:12:04 lan mod_evasive[7794]: Blacklisting address 84.27.139.25: possible attack.
Jun 22 21:22:27 lan mod_evasive[7816]: Blacklisting address 217.208.98.254: possible attack.

Si es un DDoS muy distribuido enseguida notaremos que muchas ip's diferente DoSean el Apache.

4) Mirando los logs del syslog (del kernel)

Citar
May 17 13:39:01 lan kernel: possible SYN flooding on port 80. Sending cookies.
May 17 13:39:02 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:35 lan kernel: NET: 4 messages suppressed.
May 17 13:39:35 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:38 lan kernel: NET: 1 messages suppressed.
May 17 13:39:38 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:43 lan kernel: NET: 6 messages suppressed.
May 17 13:39:43 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:48 lan kernel: NET: 4 messages suppressed.
May 17 13:39:48 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:52 lan kernel: NET: 9 messages suppressed.
May 17 13:39:52 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:57 lan kernel: NET: 15 messages suppressed.
May 17 13:39:57 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:40:01 lan kernel: possible SYN flooding on port 80. Sending cookies.

Líneas a mirar:

Citar
possible SYN flooding on port 80. Sending cookies.
"Sending Cookies" si lo tenemos activado en el /etc/sysctl.conf
# Enable TCP SYN Cookie Protection

Código: PHP
  1. net.ipv4.tcp_syncookies = 1

A veces es mejor deshabilitarlo:

Código: PHP
  1. net.ipv4.tcp_syncookies = 0

De esta manera podemos ver las ip's del ataque:

Citar
Jul 14 12:46:50 lan kernel: TCP: drop open request from 80.171.45.81/63069
Jul 14 12:46:55 lan kernel: NET: 1401 messages suppressed.
Jul 14 12:46:55 lan kernel: TCP: drop open request from 80.103.166.148/4403
Jul 14 12:46:59 lan kernel: NET: 1772 messages suppressed.
Jul 14 12:46:59 lan kernel: TCP: drop open request from 200.127.62.215/4019
Jul 14 12:47:05 lan kernel: NET: 2362 messages suppressed.
Jul 14 12:47:05 lan kernel: TCP: drop open request from 85.57.169.142/19899
Jul 14 12:47:11 lan kernel: NET: 2618 messages suppressed.
Jul 14 12:47:11 lan kernel: TCP: drop open request from 83.19.73.122/2710
Jul 14 12:47:14 lan kernel: NET: 898 messages suppressed.
Jul 14 12:47:14 lan kernel: TCP: drop open request from 80.235.39.64/3554
Jul 14 12:47:19 lan kernel: NET: 1120 messages suppressed.
Jul 14 12:47:19 lan kernel: TCP: drop open request from 80.171.45.81/62095
Jul 14 12:47:24 lan kernel: NET: 1714 messages suppressed.
Jul 14 12:47:24 lan kernel: TCP: drop open request from 84.62.152.44/34014
Jul 14 12:47:29 lan kernel: NET: 2274 messages suppressed.
Jul 14 12:47:29 lan kernel: TCP: drop open request from 200.127.62.215/3207
Jul 14 12:47:34 lan kernel: NET: 1552 messages suppressed.
Jul 14 12:47:34 lan kernel: TCP: drop open request from 80.103.166.148/4797
Jul 14 12:47:39 lan kernel: NET: 4044 messages suppressed.
Jul 14 12:47:39 lan kernel: TCP: drop open request from 80.235.39.64/2678
Jul 14 12:47:44 lan kernel: NET: 4360 messages suppressed.
Jul 14 12:47:44 lan kernel: TCP: drop open request from 80.103.166.148/1312
Jul 14 13:04:15 lan kernel: TCP: drop open request from 200.14.237.83/4787
Jul 14 13:04:22 lan kernel: NET: 147 messages suppressed.
Jul 14 13:04:22 lan kernel: TCP: drop open request from 81.38.172.161/4892
Jul 14 13:04:30 lan kernel: NET: 6 messages suppressed.
Jul 14 13:04:30 lan kernel: TCP: drop open request from 200.14.237.83/4934
Jul 14 13:04:30 lan kernel: TCP: drop open request from 200.14.237.83/4935
Jul 14 13:04:38 lan kernel: NET: 76 messages suppressed.
Jul 14 13:04:38 lan kernel: TCP: drop open request from 81.84.212.34/2861
Jul 14 13:04:40 lan kernel: NET: 269 messages suppressed.
Jul 14 13:04:40 lan kernel: TCP: drop open request from 200.14.237.83/3070
Jul 14 13:04:45 lan kernel: NET: 287 messages suppressed.
Jul 14 13:04:45 lan kernel: TCP: drop open request from 81.203.228.102/4400
Jul 14 13:04:50 lan kernel: NET: 98 messages suppressed.
Jul 14 13:04:50 lan kernel: TCP: drop open request from 81.84.212.34/3961
Jul 14 13:04:54 lan kernel: NET: 245 messages suppressed.
Jul 14 13:04:54 lan kernel: TCP: drop open request from 200.84.169.200/1183
Jul 14 13:05:00 lan kernel: NET: 1787 messages suppressed.
Jul 14 13:05:00 lan kernel: TCP: drop open request from 81.203.228.102/2050
Jul 14 13:05:04 lan kernel: NET: 3208 messages suppressed.
Jul 14 13:05:04 lan kernel: TCP: drop open request from 86.212.167.27/4720
Jul 14 13:05:09 lan kernel: NET: 2031 messages suppressed.
Jul 14 13:05:09 lan kernel: TCP: drop open request from 81.203.228.102/1794
Jul 14 13:05:14 lan kernel: NET: 2221 messages suppressed.
Jul 14 13:05:14 lan kernel: TCP: drop open request from 81.38.172.161/4908
Jul 14 13:05:21 lan kernel: NET: 730 messages suppressed.
Jul 14 13:05:21 lan kernel: TCP: drop open request from 81.203.228.102/1430
Jul 14 13:05:25 lan kernel: NET: 234 messages suppressed.
Jul 14 13:05:25 lan kernel: TCP: drop open request from 81.203.228.102/2939
Jul 14 13:05:30 lan kernel: NET: 1594 messages suppressed.
Jul 14 13:05:30 lan kernel: TCP: drop open request from 200.14.237.83/3876
Jul 14 13:05:36 lan kernel: NET: 633 messages suppressed.
Jul 14 13:05:36 lan kernel: TCP: drop open request from 86.212.167.27/1116
Jul 14 13:05:39 lan kernel: NET: 970 messages suppressed.
Jul 14 13:05:39 lan kernel: TCP: drop open request from 81.38.172.161/3040
Jul 14 13:05:45 lan kernel: NET: 548 messages suppressed.
Jul 14 13:05:45 lan kernel: TCP: drop open request from 81.203.228.102/2119
Jul 14 13:05:50 lan kernel: NET: 421 messages suppressed.
Jul 14 13:05:50 lan kernel: TCP: drop open request from 81.203.228.102/2478
Jul 14 13:05:56 lan kernel: NET: 379 messages suppressed.
Jul 14 13:05:56 lan kernel: TCP: drop open request from 81.203.228.102/4005
Jul 14 13:05:59 lan kernel: NET: 891 messages suppressed.
Jul 14 13:05:59 lan kernel: TCP: drop open request from 81.38.172.161/3568
Jul 14 13:06:04 lan kernel: NET: 2221 messages suppressed.
Jul 14 13:06:04 lan kernel: TCP: drop open request from 81.203.228.102/4532
Jul 14 13:06:09 lan kernel: NET: 243 messages suppressed.
Jul 14 13:06:09 lan kernel: TCP: drop open request from 81.203.228.102/1939
Jul 14 13:06:14 lan kernel: NET: 2166 messages suppressed.
Jul 14 13:06:14 lan kernel: TCP: drop open request from 81.38.172.161/2137
Jul 14 13:06:19 lan kernel: NET: 2071 messages suppressed.
Jul 14 13:06:19 lan kernel: TCP: drop open request from 81.38.172.161/3136
Jul 14 13:06:24 lan kernel: NET: 2069 messages suppressed.
Jul 14 13:06:24 lan kernel: TCP: drop open request from 81.84.212.34/4600
Jul 14 13:06:29 lan kernel: NET: 1797 messages suppressed.
Jul 14 13:06:29 lan kernel: TCP: drop open request from 86.212.167.27/3171
Jul 14 13:06:35 lan kernel: NET: 1292 messages suppressed.
Jul 14 13:06:35 lan kernel: TCP: drop open request from 81.203.228.102/1394
Jul 14 13:06:39 lan kernel: NET: 715 messages suppressed.

Citar
May 17 14:13:24 lan kernel: ip_conntrack: table full, dropping packet.
Tabla llena. Tenemos un problema porque no admitiremos más conexiones aunque sean legítimas.

Podemos aumentar el valor de dicha tabla si nuestra red da para más.
Directamente:

Código: PHP
  1. echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max

Para que el valor quede guardardo y no se pierda al reiniciar, debemos añadirlo en el sysctl.conf

Código: PHP
  1. net.ipv4.ip_conntrack_max = 65535

Recuerda reiniciar la red para aplicar los cambios en el /proc (service network restart).
Paquetes Marcianos:

Citar
Aug 31 12:41:29 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 12:45:07 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 12:52:57 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 12:58:55 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 13:08:12 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 13:12:03 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 13:34:38 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 13:37:38 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 13:52:42 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 13:56:18 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 13:59:54 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 14:13:32 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 14:38:08 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 14:43:42 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 14:50:05 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 14:51:05 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 14:57:58 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 15:05:27 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 15:06:14 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0
Aug 31 15:09:08 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on dev eth0

Son paquetes inesperados que llegan por un camino por el cual no pueden llegar indica algún problema de audacia (cracker).

Usando paquetes como éstos se pueden atacar vulnerabilidades remotas en stacks TCP/IP

5) Mirando las gráficas del MRTG, RRDtool

Si ves que el tráfico inbound sube hasta los 100mbps es que te están doseando hehehe.


 


B) Intentar parar el ataque

1) - mod_evasive

Web Oficial:
http://www.nuclearelephant.com/projects/mod_evasive/

Consideramos que 50 conexiones por segundo a 2 páginas es suficiente motivo como para bloquear esa ip:

Código: PHP
  1. <IfModule mod_evasive.c>
  2.     DOSHashTableSize    3097
  3.     DOSPageCount        2
  4.     DOSSiteCount        50
  5.     DOSPageInterval     1
  6.     DOSSiteInterval     1
  7.     DOSBlockingPeriod   900
  8. </IfModule>

Igual que el anterior pero con 50 peticiones en un segundo a 1 sola página:

Código: PHP
  1. <IfModule mod_evasive.c>
  2.  DOSHashTableSize 3097
  3.  DOSPageCount 1
  4.  DOSSiteCount 50
  5.  DOSPageInterval 1
  6.  DOSSiteInterval 1
  7. </IfModule>

Si queremos bloquear las ips que floodean, podemos usar el iptables:

DOSSystemCommand "sudo -u root -c '/sbin/iptables -A INPUT -s %s -j DROP"

Recordar mirar el syslog por si hay posibles falsos positivos (ip's que no hacian flood).

Para evitar falsos positivos:

Código: PHP
  1. <IfModule mod_evasive.c>
  2. # añadir estas líneas que corresponden a rangos de los bots de google
  3. DOSWhitelist 66.249.65.*
  4. DOSWhitelist 66.249.66.*
  5. </IfModule>

Importante:

Para que el mod_evasive funcione correctamente deberás modificar el:

Citar
MaxRequestsPerChild 0
Para poner un valor alto pero nunca ilimitado (0).

Citar
MaxRequestsPerChild 10000
Config ejemplo:
http://www.eth0.us/mod_evasive

2 - mod_security
 
El único problema del mod_security es que necesitamos al menos un argumento para detectar el ataque.

En el ejemplo usamos en http_referer y el User Agent para detectar el DDoS:

Bloqueando un ataque Iframe
http://foro.elhacker.net/index.php/topic,127481.0.html

3- tcplimit, ipdrop, ipblock

Usando firewalls dinámicos.

4- Optimizando y asegurando la red con el sysctl.conf

Código: PHP
  1. cat /proc/sys/net/ipv4/tcp_syncookies
  2.  
  3.     # Enable IP spoofing protection, turn on Source Address Verification
  4.  
  5.     net.ipv4.conf.all.rp_filter = 1
  6.  
  7.     # Enable TCP SYN Cookie Protection
  8.  
  9.     net.ipv4.tcp_syncookies = 1
  10.  
  11.     # Enable ignoring broadcasts request
  12.    
  13.     net.ipv4.icmp_echo_ignore_broadcasts = 1

1). Activate SynCookies protection

Código: PHP
  1. It works by sending out 'syncookies' when the
  2.     syn backlog queue of a socket overflows.
  3.  
  4.     => echo 1 >/proc/sys/net/ipv4/tcp_syncookies
  5.  
  6.     or
  7.  
  8.     => /sbin/sysctl -w net.ipv4.tcp_syncookies=1

2). Disable source routing

Código: PHP
  1.     => for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
  2.     echo 0 > $f
  3.     done
  4.  
  5.     or
  6.  
  7.     => /sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0

3). Reverse Path Filtering

    Reject incoming packets if their source address doesn't match
    the network interface that they're arriving on

Código: PHP
  1.    => for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
  2.     echo 1 > $f
  3.     done
  4.  
  5.     or
  6.  
  7.     => /sbin/systcl -w net.ipv4.conf.all.rp_filter=1

4). Log RP filter dropped packets (martians)

Código: PHP
  1.    => for f in /proc/sys/net/ipv4/conf/*/log_martians; do
  2.     echo 1 > $f
  3.     done
  4.  
  5.     or
  6.  
  7.     => /sbin/sysctl -w net.ipv4.conf.all.log_martians=1

5). Maximal number of remembered connection requests

Código: PHP
  1. => /sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=256

6). How may times to retry before killing TCP connection

    (default 7 on most systems)

Código: PHP
  1.  => /sbin/sysctl -w net.ipv4.tcp_orphan_retries=4

7). Number of SYN packets the kernel will send before giving up

Código: PHP
  1.    => /sbin/sysctl -w net.ipv4.tcp_syn_retries=5

8 ). Disable broadcast icmp reply

Código: PHP
  1.     => /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

9). Ignore Bogus icmp packets

Código: PHP
  1.     => /sbin/sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

10). Disable ICMP redirect

Código: PHP
  1.     => echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects
  2.     => echo 0 >/proc/sys/net/ipv4/conf/all/send_redirects
  3.  
  4.     or
  5.  
  6.     => /sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0
  7.     => /sbin/sysctl -w net.ipv4.conf.all.send_redirects=0

11). Disable timestamps

Código: PHP
  1.    => echo 0 >/proc/sys/net/ipv4/tcp_timestamps
  2.  
  3.     or
  4.  
  5.     => /sbin/sysctl -w net.ipv4.tcp_timestamps=0

12). Reduce DOS ability by reducing timeouts

Código: PHP
  1.     => echo 30 >/proc/sys/net/ipv4/tcp_fin_timeout
  2.     => echo 1800 >/proc/sys/net/ipv4/tcp_keepalive_time
  3.     => echo 0 >/proc/sys/net/ipv4/tcp_window_scaling
  4.     => echo 0 >/proc/sys/net/ipv4/tcp_sack
  5.  
  6.     or
  7.  
  8.     => /sbin/sysctl -w net.ipv4.tcp_fin_timeout=30
  9.     => /sbin/sysctl -w net.ipv4.tcp_keepalive_time=1800
  10.     => /sbin/sysctl -w net.ipv4.tcp_window_scaling=0
  11.     => /sbin/sysctl -w net.ipv4.tcp_sack=0
  12.  

- Lista de todas las variables del TCP:
http://ipsysctl-tutorial.frozentux.net/chunkyhtml/tcpvariables.html

- Lista de Variables del /proc/sys/net/ipv4/* (con varlores por defecto y explicaciones)
http://ipsysctl-tutorial.frozentux.net/other/ip-sysctl.txt

Más ejemplos de configuración completa del sysctl.conf en las referencias del documento.

5- APF Firewall con el módulo anti-ddos

Código: PHP
  1. wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
  2. tar xvzf apf-current.tar.gz
  3. cd apf-0.9.6-1/
  4. ./install.sh
Citar
service apf start
/usr/local/sbin/apf -s


Fichero de configuración:

Citar
/etc/apf/conf.apf
Despues de hacer las pruebas dejar:
DEVEL_MODE="0"

Si nos sale un error parecido a este:

Citar
apf(9413): unable to load iptables module (ip_tables), aborting.

Cambiamos esto:

Citar
SET_MONOKERN="1"

Puertos que queremos abrir (inbound)
IG_TCP_CPORTS="21,22,25,53,80,110"

Si queres bloquear todo el tráfico de salida lo ponemos en 1 (outbound)
EGF="0"

Si queremos usar el módulo antddos poner a 1:
USE_AD="0"

Log:
/var/log/apf_log

Para ver los paquetes que dropeamos:
LOG_DROP="1"

Lo guardará en el syslog, ejemplo:

Proto= Protocolo
SRC= ip origen
SPT= Source Port (puerto d origen)
DST= Destination Port (puerto destino)

Citar
Oct 20 13:59:27 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=18779 PROTO=TCP SPT=11629 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:16 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20376 PROTO=TCP SPT=27734 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20382 PROTO=TCP SPT=25943 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20387 PROTO=TCP SPT=19026 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20397 PROTO=TCP SPT=2155 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20407 PROTO=TCP SPT=9294 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:22 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20687 PROTO=TCP SPT=9269 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:22 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20694 PROTO=TCP SPT=27223 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:23 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=20830 PROTO=TCP SPT=30938 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:25 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=21038 PROTO=TCP SPT=5377 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:27 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=21219 PROTO=TCP SPT=13341 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:00:42 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=21990 PROTO=TCP SPT=22960 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0
Oct 20 14:02:32 ns2 kernel: ** SANITY ** IN=eth0 OUT=  SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=26386 PROTO=TCP SPT=2826 DPT=80 WINDOW=0 RES=0x00 RST FIN URGP=0

Recuerda que para usar el antidos debes añadir el cron job:

Citar
*/8 * * * * root /etc/apf/ad/antidos -a >> /dev/null 2>&1

http://www.r-fx.org/apf/README.antidos

KISS My Firewall es una alternativa.

Script PHP
http://www.prism-hosting.com/AntiDoS

6- Parar el botnet

ZmbScap - Zombie Scapper - Stoopt DDoS Programs
http://www.metaeye.org/projects/zmbscap/

Tracking Botnets - Bot-Commands
http://www.honeynet.org/papers/bots/botnet-commands.html

Tracking Botnets
http://www.honeynet.org/papers/bots/

Tracking Botnets - DDoS-attacks
http://www.honeynet.org/papers/bots/botnet-ddos.html

Phatbot Trojan Analysis
http://www.lurhq.com/phatbot.html

F-Bot by f-secure- Elimina el Agobot y todas sus variantes
http://www.f-secure.com/tools/f-bot.zip

Nepenthes - Autoinfecarse sin peligro para analizar
http://nepenthes.mwcollect.org/

honeytrap – trap attacks against tcp services
http://honeytrap.sourceforge.net/

7- Usando reglas del iptables

Código: PHP
  1. # todo el trafico syn
  2. -P INPUT DROP
  3. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  4. -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
  5. -A INPUT -m state --state INVALID -j DROP
  6. -P OUTPUT DROP
  7. -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  8. -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
  9. -A OUTPUT -m state --state INVALID -j DROP
  10. -P FORWARD DROP
  11. -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  12. -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
  13. -A FORWARD -m state --state INVALID -j DROP
  14. -A INPUT -i lo -j ACCEPT
  15. -A OUTPUT -o lo -j ACCEPT
  16. -A FORWARD -i lo -o lo -j ACCEPT
  17.  
  18.  
  19. # sube las cargas pero muchos wwww buena señal
  20. -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable
  21.  
  22.  
  23.  
  24. # la que mejor va
  25. -N syn-flood
  26. -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
  27. -A syn-flood -j LOG --log-prefix "SYN flood: "
  28. -A syn-flood -j DROP
  29.  
  30.  
  31.  
  32. # igual que el de arriba pero muy bestia
  33. -N syn-flood
  34. -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
  35. -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
  36. -A syn-flood -j DROP
  37.  
  38.  
  39. -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit
  40. 1/sec -j ACCEPT
  41. -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit
  42. --limit 1/sec -j ACCEPT
  43.  
  44. # no es muy efectivo
  45. -A INPUT -s 0/0 -p tcp --syn --source-port 1000:5000
  46. --destination-port 80 -j DROP
  47.  
  48. # no es muy efectivo
  49. -A INPUT -p tcp -m tcp --dport 80 --sport 1000:5000 --tcp-flags SYN SYN -j DROP
  50.  
  51. # Descartar paquetes mal formados
  52.  
  53. -N PKT_FAKE
  54. -A PKT_FAKE -m state --state INVALID -j DROP
  55. -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
  56. -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
  57. -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
  58. -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
  59. -A PKT_FAKE -f -j DROP
  60. -A PKT_FAKE -j RETURN
  61.  
  62. # syn-flood
  63. -N syn-flood
  64. -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
  65. -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
  66. -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
  67. -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN
  68. -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence  --log-tcp-options  --log-ip-options -m limit --limit 1/second
  69. -A syn-flood -j DROP
  70.  
  71. # By pepel. Requiere módulo "recent"
  72. -A INPUT -p tcp --dport 80 -m state --state NEW -m recent   --set
  73. -A INPUT -p tcp --dport 80 -m state --state NEW -m recent  --update --seconds 10 --hitcount 10 -j DROP
  74.  
  75. #explicación:
  76. Se añade cada ip que se conecte a la tabla de recent
  77. Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
  78.  
  79.  
  80. iptables -I INPUT -p tcp –syn -m recent –set
  81. iptables -I INPUT -p tcp –syn -m recent –update –seconds 10 –hitcount 30 -j DROP
  82.  
  83. UDP Flood
  84.  
  85. /sbin/iptables -A OUTPUT -p udp -m state --state NEW -j ACCEPT
  86. /sbin/iptables -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
  87. /sbin/iptables -A OUTPUT -p udp -j DROP
  88.  
  89. Lo que hace es contar el número de paquetes SYN (inicio de conexión TCP) para
  90. cada dirección IP en los últimos 10 segundos. Si llega a 30 descarta ese paquete por
  91.  lo que no se establecerá la conexión (el TCP volverá a intentar varias veces,
  92. cuando baje del límite podrá establecerse).
  93.  

8- Usando el mod_throttle

http://www.snert.com/Software/mod_throttle/

Otros:

Mod_Throttle, mod_bandwidth, mod_iplimit, mod_tsunami, mod_limitipconn.c

Para Apache 2:
 mod_cband

Código: PHP
  1. cd /usr/src
  2. wget http://www.snert.com/Software/mod_throttle/mod_throttle312.tgz
  3. tar zxvf mod_throttle312.tgz
  4. cd mod_throttle-3.1.2
  5. pico Makefile
  6. Then edit the line that reads:
  7. APXS=apxs
  8. And change it to read:
  9. APXS=/usr/local/apache/bin/apxs
  10. make
  11. make install
  12. service httpd restart

Citar
<IfModule mod_throttle.c>
ThrottlePolicy Volume 10G 30d
</IfModule>
<Location /throttle-me>
SetHandler throttle-me
</Location>
http://www.webhostgear.com/160.html

C) Referencias

- Opciones de seguridad en Linux a través de /proc (I) y (II)
 http://www.elhacker.net/opciones-seguridad-linux-proc.html

- Syctl.conf Hardening
 http://www.eth0.us/sysctl

- Ipsysctl tutorial 1.0.4
http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html

-  Hardening the TCP/IP stack to SYN attacks
http://www.securityfocus.com/infocus/1729

- DDOS and SYN_Recv Attacks And some SOlutions
http://www.vbulletin.com/forum/showthread.php?t=126699

- Distributed Reflection Denial of Service
http://www.grc.com/dos/drdos.htm

- Dynamic iptables firewalls
http://www-128.ibm.com/developerworks/library/l-fw/

- Preventing DDoS Attacks
http://www.linuxsecurity.com/content/view/121960/49/

- Distributed Denial of Service (DDoS) Attacks/tools
http://staff.washington.edu/dittrich/misc/ddos/

- Linux firewall rulesets and snippets of rule sets
http://www.gotroot.com/tiki-index.php?page=Linux%20Firewall%20rules

Fuente: Taringa!
« Última modificación: Diciembre 24, 2014, 09:27:19 pm por Expermicid »

Desconectado LucaSthefano

  • *
  • Underc0der
  • Mensajes: 399
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Julio 23, 2011, 09:40:41 pm »
Excelente! Ahora, la parte importante. Fuente? Ya lo ví MARCADO en EHN ;)

Desconectado [C]orrupted[B]yte

  • *
  • Underc0der
  • Mensajes: 172
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • R00TW0RM
    • Email
« Respuesta #2 en: Julio 23, 2011, 09:41:11 pm »
Excelente aporte este va a favoritos  ;)

Desconectado Cronos

  • *
  • Underc0der
  • Mensajes: 1000
  • Actividad:
    0%
  • Reputación 1
  • Mientras mas se, me doy cuenta de lo poco que se.
    • Ver Perfil
    • Email
  • Skype: cronos.labs
« Respuesta #3 en: Julio 23, 2011, 09:47:43 pm »
Uhh seme pifio la fuente.. Es de Taringa! ;)
Saludos,, Cronos.-

Desconectado Stiuvert

  • *
  • Colaborador
  • *
  • Mensajes: 2668
  • Actividad:
    1.67%
  • Reputación 14
    • Ver Perfil
  • Skype: stiuvert@gmail.com
  • Twitter: @Stiuvert
« Respuesta #4 en: Julio 24, 2011, 04:53:11 am »
Lo voy a tener en cuenta, una info bastante valiosa  ;)



Saludos

Desconectado lordorlando

  • *
  • Underc0der
  • Mensajes: 32
  • Actividad:
    0%
  • Reputación 0
  • el conosimiento es el poder
    • Ver Perfil
    • vistaspain.netai.net
    • Email
« Respuesta #5 en: Noviembre 15, 2011, 02:38:56 am »
exelente aporte  copiando

Desconectado Shama|TwoH

  • *
  • Underc0der
  • Mensajes: 19
  • Actividad:
    0%
  • Reputación 0
  • El conocimiento es libre.
    • Ver Perfil
« Respuesta #6 en: Noviembre 15, 2011, 12:07:16 pm »
Que buen aporte. Ando apurado pero despues me detendre tranquilamente a leer en detalle.
Saludos !!
#####################################################
#######                                Shama|TwoH                         #######
#####################################################

 

¿Te gustó el post? COMPARTILO!



Man In The Cloud: Un nuevo tipo de ataque basado en la nube

Iniciado por graphixx

Respuestas: 3
Vistas: 1468
Último mensaje Agosto 18, 2015, 01:45:38 am
por zupa
Estrategias de Contra-Ataque

Iniciado por REC

Respuestas: 2
Vistas: 2757
Último mensaje Junio 14, 2012, 08:05:34 pm
por baron.power
Como protegerse de Skype Resolver y ataques DDoS [Video]

Iniciado por unkdown

Respuestas: 4
Vistas: 1970
Último mensaje Agosto 02, 2015, 06:30:37 pm
por Thereldor
SysKey para proteger la base de datos del Administrador de cuentas de seguridad

Iniciado por Aryenal.Bt

Respuestas: 1
Vistas: 2373
Último mensaje Agosto 17, 2012, 03:47:03 pm
por baron.power
Qlink: Una herramienta para proteger la privacidad de las comunicaciones

Iniciado por Gabriela

Respuestas: 2
Vistas: 1523
Último mensaje Mayo 09, 2015, 09:45:46 pm
por Baxtar