GS-Zone

Sistema Funcional para proteger Anti DDoS y anti ICMP (plataforma Linux 2.6) Ir al Indice

Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación

15

Nota » 18 Ago 2011 12:04

Les paso un script que uso para proteger mis servidores.
Aplicable al AO, CS, Mu Online, WOW, etc...

Basicamente, es una muralla de fuego :mrgreen: contra los ataques que a Windows lo dejan en coma :) .

Como no hay seccion "Programacion Linux - Servidores" lo dejo aca :)

Exitos!



  1.  
  2. #!/bin/sh
  3.  
  4. #NOTA para comunidad GS-Zone: recomiendo las distro "Debian" o "CentOS"
  5. #Firewall Script By AleddR
  6. #Objetivo: Frenar solicitudes de Ping masivas y reflejar ataques DDoS (turbinas)
  7. #Nota interesante: quedan guardados los LOGS del atacante. Recomendaria crear un script con NMAP para contraatacar.
  8. #Consejo: para evitar problemas... usa un Kernel 2.6 y actualiza con apt-get update las listas de APT.
  9.  
  10. #Declaraciones generales del Firewall y componentes.
  11.  
  12. clear
  13. echo " Firewall Script Anti Mass Ping y Anti DDoS  By AleddR "
  14. echo ""
  15. echo " Declaraciones Generales "
  16. IPTABLES="/sbin/iptables"
  17. IP6TABLES="/sbin/ip6tables"
  18. MODPROBE="/sbin/modprobe"
  19. RMMOD="/sbin/rmmod"
  20. ARP="/usr/sbin/arp"
  21. LOG="LOG --log-level debug --log-tcp-sequence --log-tcp-options"
  22. LOG="$LOG --log-ip-options"
  23. RLIMIT="-m limit --limit 3/s --limit-burst 8"
  24. PHIGH="1024:65535"
  25. PSSH="1000:1023"
  26. $MODPROBE ip_conntrack_ftp
  27. $MODPROBE ip_conntrack_irc
  28. echo 1 > /proc/sys/net/ipv4/ip_forward
  29. echo 0 > /proc/sys/net/ipv4/ip_forward
  30. for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i; done
  31. echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  32. echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  33. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  34. for i in /proc/sys/net/ipv4/conf/*/log_martians; do echo 1 > $i; done
  35. echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
  36. for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $i; done
  37. for i in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $i; done
  38. for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $i; done
  39. for i in /proc/sys/net/ipv4/conf/*/mc_forwarding; do echo 0 > $i; done
  40. for i in /proc/sys/net/ipv4/conf/*/proxy_arp; do echo 0 > $i; done
  41. for i in /proc/sys/net/ipv4/conf/*/secure_redirects; do echo 1 > $i; done
  42. for i in /proc/sys/net/ipv4/conf/*/bootp_relay; do echo 0 > $i; done
  43. #Reseteo de las politicas de RED y seguridad del SISTEMA Y TODAS LAS APLICACIONES
  44. echo ""
  45. echo " Reseteo de Politicas de RED "
  46. $IPTABLES -P INPUT DROP
  47. $IPTABLES -P FORWARD DROP
  48. $IPTABLES -P OUTPUT DROP
  49. $IPTABLES -t nat -P PREROUTING ACCEPT
  50. $IPTABLES -t nat -P OUTPUT ACCEPT
  51. $IPTABLES -t nat -P POSTROUTING ACCEPT
  52. $IPTABLES -t mangle -P PREROUTING ACCEPT
  53. $IPTABLES -t mangle -P INPUT ACCEPT
  54. $IPTABLES -t mangle -P FORWARD ACCEPT
  55. $IPTABLES -t mangle -P OUTPUT ACCEPT
  56. $IPTABLES -t mangle -P POSTROUTING ACCEPT
  57. $IPTABLES -F
  58. $IPTABLES -t nat -F
  59. $IPTABLES -t mangle -F
  60. $IPTABLES -X
  61. $IPTABLES -t nat -X
  62. $IPTABLES -t mangle -X
  63. $IPTABLES -Z
  64. $IPTABLES -t nat -Z
  65. $IPTABLES -t mangle -Z
  66. #BLOQUEO DE PROTOCOLO TCP/IP V6 para evitar ataques de hackers con infraestructuras avanzadas
  67. echo ""
  68. echo " Bloqueo TCP/IP V6 "
  69. if test -x $IP6TABLES; then
  70. $IP6TABLES -P INPUT DROP 2>/dev/null
  71. $IP6TABLES -P FORWARD DROP 2>/dev/null
  72. $IP6TABLES -P OUTPUT DROP 2>/dev/null
  73. $IP6TABLES -t mangle -P PREROUTING ACCEPT 2>/dev/null
  74. $IP6TABLES -t mangle -P INPUT ACCEPT 2>/dev/null
  75. $IP6TABLES -t mangle -P FORWARD ACCEPT 2>/dev/null
  76. $IP6TABLES -t mangle -P OUTPUT ACCEPT 2>/dev/null
  77. $IP6TABLES -t mangle -P POSTROUTING ACCEPT 2>/dev/null
  78. $IP6TABLES -F 2>/dev/null
  79. $IP6TABLES -t mangle -F 2>/dev/null
  80. $IP6TABLES -X 2>/dev/null
  81. $IP6TABLES -t mangle -X 2>/dev/null
  82. $IP6TABLES -Z 2>/dev/null
  83. $IP6TABLES -t mangle -Z 2>/dev/null
  84. fi
  85. #Loguear y reflejar todo tipo de ataques
  86. echo ""
  87. echo " Anti Ping y Anti DDoS "
  88. $IPTABLES -N ACCEPTLOG
  89. $IPTABLES -A ACCEPTLOG -j $LOG $RLIMIT --log-prefix "ACCEPT "
  90. $IPTABLES -A ACCEPTLOG -j ACCEPT
  91. $IPTABLES -N DROPLOG
  92. $IPTABLES -A DROPLOG -j $LOG $RLIMIT --log-prefix "DROP "
  93. $IPTABLES -A DROPLOG -j DROP
  94. $IPTABLES -N REJECTLOG
  95. $IPTABLES -A REJECTLOG -j $LOG $RLIMIT --log-prefix "REJECT "
  96. $IPTABLES -A REJECTLOG -p tcp -j REJECT --reject-with tcp-reset
  97. $IPTABLES -A REJECTLOG -j REJECT
  98. $IPTABLES -N RELATED_ICMP
  99. $IPTABLES -A RELATED_ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT
  100. $IPTABLES -A RELATED_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
  101. $IPTABLES -A RELATED_ICMP -p icmp --icmp-type parameter-problem -j ACCEPT
  102. $IPTABLES -A RELATED_ICMP -j DROPLOG
  103. $IPTABLES  -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j ACCEPT
  104. $IPTABLES  -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j LOG --log-prefix PING-DROP:
  105. $IPTABLES  -A INPUT -p icmp -j DROP
  106. $IPTABLES  -A OUTPUT -p icmp -j ACCEPT
  107. $IPTABLES -A INPUT -p icmp --fragment -j DROPLOG
  108. $IPTABLES -A OUTPUT -p icmp --fragment -j DROPLOG
  109. $IPTABLES -A FORWARD -p icmp --fragment -j DROPLOG
  110. $IPTABLES -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT
  111. $IPTABLES -A OUTPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT
  112. $IPTABLES -A INPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT
  113. $IPTABLES -A OUTPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT
  114. $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT
  115. $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT
  116. $IPTABLES -A INPUT -p icmp -j DROPLOG
  117. $IPTABLES -A OUTPUT -p icmp -j DROPLOG
  118. $IPTABLES -A FORWARD -p icmp -j DROPLOG
  119. $IPTABLES -A INPUT -i lo -j ACCEPT
  120. $IPTABLES -A OUTPUT -o lo -j ACCEPT
  121. $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  122. $IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  123. $IPTABLES -A INPUT -p tcp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP
  124. $IPTABLES -A INPUT -p udp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP
  125. $IPTABLES -A INPUT -m state --state INVALID -j DROP
  126. $IPTABLES -A OUTPUT -m state --state INVALID -j DROP
  127. $IPTABLES -A FORWARD -m state --state INVALID -j DROP
  128. $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP
  129. $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP
  130. $IPTABLES -N SYN_FLOOD
  131. $IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD
  132. $IPTABLES -A SYN_FLOOD -m limit --limit 2/s --limit-burst 6 -j RETURN
  133. $IPTABLES -A SYN_FLOOD -j DROP
  134. $IPTABLES -A INPUT -s 0.0.0.0/7 -j DROP
  135. $IPTABLES -A INPUT -s 2.0.0.0/8 -j DROP
  136. $IPTABLES -A INPUT -s 5.0.0.0/8 -j DROP
  137. $IPTABLES -A INPUT -s 7.0.0.0/8 -j DROP
  138. $IPTABLES -A INPUT -s 10.0.0.0/8 -j DROP
  139. $IPTABLES -A INPUT -s 23.0.0.0/8 -j DROP
  140. $IPTABLES -A INPUT -s 27.0.0.0/8 -j DROP
  141. $IPTABLES -A INPUT -s 31.0.0.0/8 -j DROP
  142. $IPTABLES -A INPUT -s 36.0.0.0/7 -j DROP
  143. $IPTABLES -A INPUT -s 39.0.0.0/8 -j DROP
  144. $IPTABLES -A INPUT -s 42.0.0.0/8 -j DROP
  145. $IPTABLES -A INPUT -s 49.0.0.0/8 -j DROP
  146. $IPTABLES -A INPUT -s 50.0.0.0/8 -j DROP
  147. $IPTABLES -A INPUT -s 77.0.0.0/8 -j DROP
  148. $IPTABLES -A INPUT -s 78.0.0.0/7 -j DROP
  149. $IPTABLES -A INPUT -s 92.0.0.0/6 -j DROP
  150. $IPTABLES -A INPUT -s 96.0.0.0/4 -j DROP
  151. $IPTABLES -A INPUT -s 112.0.0.0/5 -j DROP
  152. $IPTABLES -A INPUT -s 120.0.0.0/8 -j DROP
  153. $IPTABLES -A INPUT -s 169.254.0.0/16 -j DROP
  154. $IPTABLES -A INPUT -s 172.16.0.0/12 -j DROP
  155. $IPTABLES -A INPUT -s 173.0.0.0/8 -j DROP
  156. $IPTABLES -A INPUT -s 174.0.0.0/7 -j DROP
  157. $IPTABLES -A INPUT -s 176.0.0.0/5 -j DROP
  158. $IPTABLES -A INPUT -s 184.0.0.0/6 -j DROP
  159. $IPTABLES -A INPUT -s 192.0.2.0/24 -j DROP
  160. $IPTABLES -A INPUT -s 197.0.0.0/8 -j DROP
  161. $IPTABLES -A INPUT -s 198.18.0.0/15 -j DROP
  162. $IPTABLES -A INPUT -s 223.0.0.0/8 -j DROP
  163. $IPTABLES -A INPUT -s 224.0.0.0/3 -j DROP
  164. #Permitimos acceso a nuestro sistema de resolucion de nombres de red e internet (normal y seguro)
  165. echo ""
  166. echo " Activamos DNS e Internet normalmente "
  167. $IPTABLES -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
  168. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
  169. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
  170. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
  171. $IPTABLES -A INPUT -j REJECTLOG
  172. $IPTABLES -A OUTPUT -j REJECTLOG
  173. $IPTABLES -A FORWARD -j REJECTLOG
  174.  
  175. #Cerramos el Script
  176. echo ""
  177. echo " Script Finalizado Correctamente "
  178.     exit 0
  179.  
  180.  
  181.  
Usuario Registrado
Newbie [1]
Registrado: Agosto 2011
Mensajes: 9
Aportes: 1

Nota » 18 Ago 2011 12:19

claro y el ao ta echo en C...

buen aporte..

daroh escribió:es porque no tiene los drivers de video ¬¬
Noi Due escribió:No se si lo reportaron, pero tácticas de combate y combate de armas, están al revez.


JAJAJAJA

Adf.ly

Imagen

• Acortar links.
• Gana dinero.

Haz click en la imagen de Adf.ly para registrarte.

TheFranK@hotmail.com.ar
316
Dragon Ancestral [4]
Registrado: Años de membresíaAños de membresía
Ubicación: Necochea
Mensajes: 3832
Aportes: 20
Premios: 1
Embajador (1)

Nota » 18 Ago 2011 12:45

eso deriva la conección cuando te tiran packets por lo que entiendo, los packets que te mandan al ddosearte los acepta igual el servidor, ya lo probé.

areloco
Aprendiz [1]
Registrado: 5 Años de membresía!
Ubicación: Don Torcuato City
Mensajes: 205

Nota » 18 Ago 2011 13:16

Se nota que no lo hiciste vos, si no sabrías que el AO ORIGINAL está hecho en VB.
Usuario Registrado
Newbie [2]
Registrado: Agosto 2011
Mensajes: 48
Aportes: 3

Nota » 18 Ago 2011 13:49

No es C eso chicos...
All we need is love
480
Oraculo [5]
Registrado: Años de membresíaAños de membresía
Ubicación: Mar del Plata
Mensajes: 2003
Aportes: 30
Premios: 1
Mister Programador AO (1)

Nota » 18 Ago 2011 13:55

Ni es C ni lo programó él.
172
Aprendiz [7]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 486
Aportes: 3

Nota » 18 Ago 2011 14:24

Fuente?

parece hecho en bat el codigo.
Newbie [5]
Registrado: Julio 2011
Mensajes: 164

Nota » 18 Ago 2011 14:26

El codigo es un script de linux..

Tranquilos que dentro de poco ya lo tendrán en C (;

Vicinity of obscenity
525
Legendario Inmortal [2]
Registrado: 5 Años de membresía!
Ubicación: España
Mensajes: 5580
Aportes: 50
Premios: 3
Mister Programador FreeForAll (3)

Nota » 18 Ago 2011 17:42

TheFranK escribió:claro y el ao ta echo en C...
buen aporte..


Lulz escribió:Fuente?
parece hecho en bat el codigo.


Dunkan escribió:No es C eso chicos...


Es Shell de BASH ... algo asi como BATCH en MSDOS/Windows 9x CMD/NT en Windows NT. Nada que ver con VB o C.

Zoom escribió:eso deriva la conección cuando te tiran packets por lo que entiendo, los packets que te mandan al ddosearte los acepta igual el servidor, ya lo probé.


Lo que hace es, en resumen, acepta 2 a 6 paquetes icmp por ronda de "escucha" de puerto por unidad de tiempo.
Despues, identifica paquetes TCP con encabezado SYN pero que no tengan logica... por eso dropea las ip no validas.
En caso de que alguien no se conecte debidamente, ejemplo cuando usan herramientas de ataque, el server le "REBOTA" los paquetes... en vez de quedarce esperando una respuesta que es lo que causa la DENEGACION DEL SERVICIO.

Obviamente, todo ese Script fue armado logicamente gracias al aporte e ideas de especialistas en GNU/Linux y recompilado y testeado por mi xD.

•Parra escribió:El codigo es un script de linux..
Tranquilos que dentro de poco ya lo tendrán en C (;


Lamentablemente, Parra, las limitaciones de las plataformas Windows no te permitiran hacer lo que hace este Script con la misma efectividad.

El problema no es el Lenguaje, es el Windows (alto papanata) :mrgreen:


El que quiera buena seguridad, ponga el SRV en 1 pc y agregue otra como Firewall. (con un sistema decente... Linux/FreeBSD,Novell, ETC)

Exitos!
Usuario Registrado
Newbie [1]
Registrado: Agosto 2011
Mensajes: 9
Aportes: 1

#NotaEste post ha sido eliminado por Franeg95 en 04 Oct 2011 12:07.
Razón: La respuesta era un Offtopic, sin relación con la tematica.

#NotaEste post ha sido eliminado por Franeg95 en 04 Oct 2011 12:06.
Razón: Lee antes de comentar

Nota » 19 Ago 2011 23:51

Buen aporte, aunque no se mucho de linux, puede que a alguien le sirvfa ^^

PointMe. ¿Serás el más votado?
Imagen


Publica tu ao en Ranking AO!
Imagen

© PointMe y Ranking AO by Dex Systems

Seguinos en Facebook: https://www.facebook.com/RankingAo

Cliente y servidor Dx7/Dx8 Optimizados
Programming my world
670
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Buenos Aires > Lanus Oeste
Mensajes: 3357
Aportes: 48
Premios: 2
Embajador (2)

Nota » 20 Ago 2011 17:54

Y si quiero proteger mi AO..donde pongo ese code? en cliente o server.

201.212.4.181:27015


Imagen
dame un kiz ♪♫
684
Oraculo [5]
Registrado: Años de membresía
Ubicación: Rearmando Seventh AO ~
Mensajes: 2290
Aportes: 26
Premios: 2
El más divertido (1) Embajador (1)

Nota » 20 Ago 2011 20:37

Excelente aporte!

Holis
ADM 2013
561
Dragon Ancestral [3]
Registrado: Años de membresíaAños de membresía
Ubicación: Argentina
Mensajes: 3112
Aportes: 9

Nota » 20 Ago 2011 23:19

brunorz escribió:Y si quiero proteger mi AO..donde pongo ese code? en cliente o server.


Estimado brunorz:
Ese codigo NO es compatible con VB ni tampoco con sistemas operativos de Microsoft.

Para usar ese codigo, necesitas una PC con sistema operativo Linux (kernel 2.6), preferentemente Debian o CentOS, y ademas necesitas algunos programas adicionales instalados en el sistema. (iptables, vim, nmap, apt, etc...)

En conclusion, para usar eso en un server de AO, necesitas 2 computadoras.

Pero vale la pena :P

Exitos
Usuario Registrado
Newbie [1]
Registrado: Agosto 2011
Mensajes: 9
Aportes: 1


Volver a Otras versiones

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados