Tutoriales y Manuales
Entradas Mensuales
-
►
2024
(Total:
1058
)
- ► septiembre (Total: 50 )
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
►
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
▼
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
▼
abril
(Total:
42
)
- Resumen Reporte de Kaspersky sobre ataques DDoS Q1...
- La actualización de Windows 10 interrumpe en direc...
- 7 millones de cuentas hackeadas de la comunidad Li...
- Hackeada la base de datos del Banco Nacional de Qatar
- Las ventas del iPhone caen por primera vez en su h...
- Disponible para la venta el nuevo Meizu Pro 5 Ubun...
- La mitad de los adultos británicos no saben distin...
- Mitigación de ataques DDoS Syn Flood con iptables-...
- Error de configuración en MongoDB expone los regis...
- Huawei confirma dos versiones del P9 Lite, fecha d...
- GoAccess es un analizador en tiempo real del log d...
- PenQ: navegador basado en Mozilla Firefox para rea...
- El creador ruso del Exploit Kit Blackhole condenad...
- Microsoft alerta de e-mails con adjuntos malicioso...
- Google presenta Informe anual de Seguridad en Andr...
- Hacker imprime cartel Neo-Nazi a impresoras abiert...
- La policía de Canadá espió más de un millón de men...
- Jornadas X1RedMasSegura 4ª Edición 20 y 21 de Mayo...
- Phineas Fisher explica cómo hackeó a Hacking Team
- La 2 estrena hoy sábado el programa sobre ciberseg...
- EastMadH4ck arranca en Arganda (sureste de Madrid)...
- Etiopía propone cinco años de prisión a quien mand...
- Departamento de Seguridad de Estados Unidos pide a...
- Un hombre borra todos los datos de su empresa al h...
- Presentados los nuevos terminales Meizu Pro 6 y HT...
- Jigsaw, el ransomware que va borrando a tus archiv...
- Google Chrome versión 50 deja sin soporte a Window...
- Cómo evitar que un ransomware cifre los ficheros e...
- Desarolladores de Google crean una API para accede...
- Zerodium, el traficante de exploits que compra vul...
- Tres ejemplos de incidentes reales de acoso utiliz...
- Un fallo informático permite ver el borrador de la...
- La historia detrás de la creación de WhatsApp
- Diferencias velocidad y clases tarjetas de memoria...
- WhatsApp activa el cifrado de extremo a extremo
- Nueva oleada del virus Crypt0l0cker con aviso de C...
- Un padre suplica a Apple para que desbloquee el iP...
- Los enfrentamientos por el peering llegan al IPv6
- Módulo Anti-DDoS para servidor web Nginx
- Herramientas automatizadas para ataques SQL injection
- Gestión de librerías compartidas en GNU/Linux
- Un alumno robó datos de 16.000 personas de la Univ...
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
seguridad
(
396
)
privacidad
(
364
)
google
(
354
)
ransomware
(
340
)
vulnerabilidad
(
303
)
Malware
(
264
)
Windows
(
244
)
android
(
243
)
cve
(
235
)
tutorial
(
235
)
manual
(
220
)
software
(
204
)
hardware
(
193
)
linux
(
125
)
twitter
(
116
)
ddos
(
95
)
WhatsApp
(
91
)
Wifi
(
85
)
cifrado
(
77
)
herramientas
(
75
)
hacking
(
73
)
sysadmin
(
67
)
app
(
65
)
Networking
(
56
)
nvidia
(
52
)
ssd
(
51
)
youtube
(
50
)
adobe
(
43
)
firmware
(
43
)
office
(
41
)
hack
(
40
)
firefox
(
36
)
contraseñas
(
32
)
eventos
(
32
)
antivirus
(
31
)
juegos
(
31
)
cms
(
30
)
flash
(
28
)
anonymous
(
27
)
MAC
(
25
)
apache
(
25
)
programación
(
25
)
exploit
(
23
)
multimedia
(
23
)
javascript
(
22
)
Kernel
(
20
)
ssl
(
19
)
SeguridadWireless
(
17
)
documental
(
16
)
Forense
(
15
)
conferencia
(
15
)
Debugger
(
14
)
lizard squad
(
14
)
técnicas hacking
(
13
)
auditoría
(
12
)
delitos
(
11
)
metasploit
(
11
)
Virtualización
(
10
)
adamo
(
9
)
reversing
(
9
)
Rootkit
(
8
)
Ehn-Dev
(
7
)
MAC Adress
(
6
)
antimalware
(
6
)
oclHashcat
(
5
)
Entradas populares
-
Después de ver qué es una vCPU y la diferencia entre núcleos (cores) e hilos en los procesadores, pasamos a explicar toda la nomenclatura d...
-
Un fallo de diseño en el mecanismo de registro del servidor VPN de Fortinet puede aprovecharse para ocultar la verificación exitosa de cre...
-
Trinity asegura haber robado 560 GB de datos de la Agencia Tributaria (AEAT) española, así como haber secuestrado parte de sus sistemas, ci...
Mitigación de ataques DDoS Syn Flood con iptables-SYNPROXY
lunes, 25 de abril de 2016
|
Publicado por
el-brujo
|
Editar entrada
Ya hemos visto a lo largo de estos años, entradas anteriores con algunas contra-medidas para intentar detener ataques DDoS, diferentes scripts bash como DDoS Deflate y FloodMon para mitigar ataques de flood, módulos Anti-DDoS para servidor web Nginx, usar CloudFlare para proteger el tráfico web, y mitigaciones (sobretodo basadas en iptables y el kernel de Linux) contra ataques basados en UDP y ahora le toca el turno a las inundaciones basadas en TCP usando SYNPROXY (iptables/netfilter)
SYN-DDoS – es el conjunto de escenarios de ataques DDoS que explotan las peculiaridades de la realización del protocolo TCP (Transmission Control Protocol, protocolo de control de transmisión). El establecimiento de una conexión TCP transcurre en tres etapas, que recuerdan el proceso de dar un apretón de manos: El cliente envía un paquete con la bandera SYN. El servidor, al recibir el paquete SYN, responde con un paquete con encabezados SYN y ACK. Después, el cliente envía un paquete ACK, con lo que confirma la conexión. Durante el proceso de SYN-flood el atacante envía un paquete con la bandera SYN, pero no exige un paquete de respuesta con las banderas SYN+ACK para establecer la conexión, lo que obliga al servidor de la víctima a gastar recursos en el procesamiento de estas solicitudes y el envío de paquetes de respuesta.
TCP-DDoS – es el conjunto de escenarios de ataques que de la misma manera que SYN-flood, explotan las peculiaridades de la realización del protocolo TCP, pero al mismo tiempo establecen conexión con el servidor de la víctima. En los ataques de tipo TCP-flood, después de la realización del procedimiento del “apretón de manos” (handshake), la parte atacante envía datos “basura” de gran tamaño y de una forma muy lenta por la conexión establecida. Esto recarga el servidor y no le permite dar recursos a las conexiones legítimas.
SYNPROXY es una novedad de iptables que se ha añadido en la versión del kernel 3.12 de Linux e iptables 1.4.21. CentOS 7 ha portado la característica y está disponible por defecto en su kernel 3.10.
El propósito de synproxy es comprobar si el host que envió el paquete SYN en realidad establece una conexión TCP completa o simplemente no hace nada después del envío del paquete SYN. Si no hace nada, se descarta el paquete con un impacto mínimo en el rendimiento.
Configurar synproxy puede ser complicado sin una guía paso a paso, ya que se necesitan algunos ajustes previos.
Podemos usar un script bash de configuración:
Por otra parte tenemos que ajustar la configuración del conntrack, ya que una parte importante de la función "synproxy" es la de no realizar un seguimiento de las conexiones TCP que no estén constituidos por completo, debido a que necesita una gran cantidad de recursos. La siguiente configuración excluirá paquetes ACK de seguimiento de conexiones y los marcará como no válido.
Si ese comando anterior devuelve un error, tratar de aplicarlo más tarde, cuando el módulo conntrack del núcleo está realmente activo.
Ahora sentido el aumento de tamaño conntrack hash y el ajuste conntrack_max, ya que si tienes un sitio con mucho tráfico, se recomienda realizar el ajuste de entrada del conntrack para aumentar el límite de 64 K conn predeterminado. Sin embargo, es crucial para el rendimiento que también recuerda a aumentar el tamaño conntrack hash.
Estos son sólo dos de los ajustes más importantes, hay un montón de otras configuraciones del kernel que pueden ser ajustadas con el fin de aumentar el rendimiento de la red para soportar muchas conexiones / paquetes
Recuerda que debes establecer sus propios límites y calcular el uso de la memoria. En este ejemplo, 2 millones de entradas veces 288 bytes = max 576,0 MB de uso de la memoria potencial. Para el hash, cada lista de hash "cabeza" es sólo 8 bytes por 1 millón es sólo 8 MB de memoria asignada fija (importaría L3 cache-size de la CPU al elegir el tamaño de hash).
Mientras que las reglas de iptables que hemos proporcionado otras veces ya bloquean la mayoría de los ataques basados en TCP, el tipo de ataque todavía puede complicarse si es lo suficientemente sofisticado ataque de inundación SYN. Es importante tener en cuenta que el rendimiento de las reglas siempre será mejor si nos encontramos con un cierto patrón o firma a bloquear, tales como la longitud del paquete (longitud -m), TOS (-m tos), TTL (TTL -m) o cadenas y los valores hexadecimales (cadena -m y u32 -m para los usuarios más avanzados). Sin embargo, en algunos casos raros, no es posible o al menos no es fácil de archivar. Por lo tanto, en estos casos, se puede hacer uso de synproxy.
Aquí están las reglas de iptables synproxy que ayudan a mitigar las inundaciones SYN que traspasan otras reglas:
La primera regla que insertamos, excluye paquetes SYN del seguimiento de conexiones, porque eso sería utilizar una gran cantidad de recursos y, obviamente no es lo que queremos. Le decimos a la tabla "raw" maneja las conexiones sin seguimiento, el objetivo "CT" es sinónimo de "conntrack" y la opción "--notrack" los excluye de seguimiento. Es para asegurarse de que las conexiones que necesitan protección no crean nuevas entradas conntrack para paquetes SYN.
La segunda regla se aplica a los paquetes SYN (sin seguimiento (UNTRACKED) según la regla anterior) y los paquetes ACK (inválidos por "nf_conntrack_tcp_loose = 0") y los reenvía al destino synproxy, que los verifica los syncookies (en paralelo, lo que no era posible anteriormente) y establece las conexiones TCP completas.
La tercera y última regla que añadimos elimina (DROP).
Estas reglas se aplican a todos los puertos. Si desea utilizar synproxy sólo en determinados puertos TCP que están activas (recomendado - También se debe bloquear todos los puertos TCP que no están en uso utilizando la tabla mangle y la cadena PREROUTING), puede simplemente añadir -- dport 80 a cada una de las reglas si quieren utilizar synproxy en el puerto 80 solamente.
Para verificar que synproxy está trabajando, puedes hacerlo con:
Si los valores cambian cuando se establece una nueva conexión TCP con el puerto que utiliza el synproxy, es que entonces funciona.
Fuentes:
http://rhelblog.redhat.com/2014/04/11/mitigate-tcp-syn-flood-attacks-with-red-hat-enterprise-linux-7-beta/
https://r00t-services.net/knowledgebase/14/Homemade-DDoS-Protection-Using-IPTables-SYNPROXY.html
https://javapipe.com/iptables-ddos-protection
Vía:
http://www.hackplayers.com/2016/04/proteccion-ddos-mediante-iptables.html
Ataques Denegación de Servicio (DoS) basados en TCP
- SYN Flood
- SYN-ACK Flood
- ACK & PUSH ACK Flood
- ACK Fragmentation Flood
- RST/FIN Flood
- Ataques usando 3-Way HandShake (3WHS)
SYN-DDoS – es el conjunto de escenarios de ataques DDoS que explotan las peculiaridades de la realización del protocolo TCP (Transmission Control Protocol, protocolo de control de transmisión). El establecimiento de una conexión TCP transcurre en tres etapas, que recuerdan el proceso de dar un apretón de manos: El cliente envía un paquete con la bandera SYN. El servidor, al recibir el paquete SYN, responde con un paquete con encabezados SYN y ACK. Después, el cliente envía un paquete ACK, con lo que confirma la conexión. Durante el proceso de SYN-flood el atacante envía un paquete con la bandera SYN, pero no exige un paquete de respuesta con las banderas SYN+ACK para establecer la conexión, lo que obliga al servidor de la víctima a gastar recursos en el procesamiento de estas solicitudes y el envío de paquetes de respuesta.
TCP-DDoS – es el conjunto de escenarios de ataques que de la misma manera que SYN-flood, explotan las peculiaridades de la realización del protocolo TCP, pero al mismo tiempo establecen conexión con el servidor de la víctima. En los ataques de tipo TCP-flood, después de la realización del procedimiento del “apretón de manos” (handshake), la parte atacante envía datos “basura” de gran tamaño y de una forma muy lenta por la conexión establecida. Esto recarga el servidor y no le permite dar recursos a las conexiones legítimas.
Mitigación de inundaciones (Flood) SYN con iptables - SYNPROXY
SYNPROXY es una novedad de iptables que se ha añadido en la versión del kernel 3.12 de Linux e iptables 1.4.21. CentOS 7 ha portado la característica y está disponible por defecto en su kernel 3.10.
El propósito de synproxy es comprobar si el host que envió el paquete SYN en realidad establece una conexión TCP completa o simplemente no hace nada después del envío del paquete SYN. Si no hace nada, se descarta el paquete con un impacto mínimo en el rendimiento.
Configurar synproxy puede ser complicado sin una guía paso a paso, ya que se necesitan algunos ajustes previos.
Podemos usar un script bash de configuración:
Ajuste de la configuración del kernel
Debido a la característica de "synproxy" utiliza syncookies y syncookies utilizan marcas de tiempo, lo tenemos que habilitar en nuestra configuración del kernel. Puedes editar tu fichero /etc/sysctl.conf para reflejar estos ajustes o aplicarlos directamente con:sysctl -w net/ipv4/tcp_syncookies=1
sysctl -w net/ipv4/tcp_timestamps=1
Por otra parte tenemos que ajustar la configuración del conntrack, ya que una parte importante de la función "synproxy" es la de no realizar un seguimiento de las conexiones TCP que no estén constituidos por completo, debido a que necesita una gran cantidad de recursos. La siguiente configuración excluirá paquetes ACK de seguimiento de conexiones y los marcará como no válido.
sysctl -w net/netfilter/nf_conntrack_tcp_loose=0
Si ese comando anterior devuelve un error, tratar de aplicarlo más tarde, cuando el módulo conntrack del núcleo está realmente activo.
Ahora sentido el aumento de tamaño conntrack hash y el ajuste conntrack_max, ya que si tienes un sitio con mucho tráfico, se recomienda realizar el ajuste de entrada del conntrack para aumentar el límite de 64 K conn predeterminado. Sin embargo, es crucial para el rendimiento que también recuerda a aumentar el tamaño conntrack hash.
echo 2500000 > /sys/module/nf_conntrack/parameters/hashsize
sysctl -w net/netfilter/nf_conntrack_max=2000000
Estos son sólo dos de los ajustes más importantes, hay un montón de otras configuraciones del kernel que pueden ser ajustadas con el fin de aumentar el rendimiento de la red para soportar muchas conexiones / paquetes
Recuerda que debes establecer sus propios límites y calcular el uso de la memoria. En este ejemplo, 2 millones de entradas veces 288 bytes = max 576,0 MB de uso de la memoria potencial. Para el hash, cada lista de hash "cabeza" es sólo 8 bytes por 1 millón es sólo 8 MB de memoria asignada fija (importaría L3 cache-size de la CPU al elegir el tamaño de hash).
Mientras que las reglas de iptables que hemos proporcionado otras veces ya bloquean la mayoría de los ataques basados en TCP, el tipo de ataque todavía puede complicarse si es lo suficientemente sofisticado ataque de inundación SYN. Es importante tener en cuenta que el rendimiento de las reglas siempre será mejor si nos encontramos con un cierto patrón o firma a bloquear, tales como la longitud del paquete (longitud -m), TOS (-m tos), TTL (TTL -m) o cadenas y los valores hexadecimales (cadena -m y u32 -m para los usuarios más avanzados). Sin embargo, en algunos casos raros, no es posible o al menos no es fácil de archivar. Por lo tanto, en estos casos, se puede hacer uso de synproxy.
Aquí están las reglas de iptables synproxy que ayudan a mitigar las inundaciones SYN que traspasan otras reglas:
iptables -t raw -D PREROUTING -p tcp -m tcp --syn -j CT --notrack
iptables -D INPUT -p tcp -m tcp -m conntrack --ctstate INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
La primera regla que insertamos, excluye paquetes SYN del seguimiento de conexiones, porque eso sería utilizar una gran cantidad de recursos y, obviamente no es lo que queremos. Le decimos a la tabla "raw" maneja las conexiones sin seguimiento, el objetivo "CT" es sinónimo de "conntrack" y la opción "--notrack" los excluye de seguimiento. Es para asegurarse de que las conexiones que necesitan protección no crean nuevas entradas conntrack para paquetes SYN.
La segunda regla se aplica a los paquetes SYN (sin seguimiento (UNTRACKED) según la regla anterior) y los paquetes ACK (inválidos por "nf_conntrack_tcp_loose = 0") y los reenvía al destino synproxy, que los verifica los syncookies (en paralelo, lo que no era posible anteriormente) y establece las conexiones TCP completas.
La tercera y última regla que añadimos elimina (DROP).
Estas reglas se aplican a todos los puertos. Si desea utilizar synproxy sólo en determinados puertos TCP que están activas (recomendado - También se debe bloquear todos los puertos TCP que no están en uso utilizando la tabla mangle y la cadena PREROUTING), puede simplemente añadir -- dport 80 a cada una de las reglas si quieren utilizar synproxy en el puerto 80 solamente.
Para verificar que synproxy está trabajando, puedes hacerlo con:
watch -n1 cat /proc/net/stat/synproxy
Si los valores cambian cuando se establece una nueva conexión TCP con el puerto que utiliza el synproxy, es que entonces funciona.
Fuentes:
http://rhelblog.redhat.com/2014/04/11/mitigate-tcp-syn-flood-attacks-with-red-hat-enterprise-linux-7-beta/
https://r00t-services.net/knowledgebase/14/Homemade-DDoS-Protection-Using-IPTables-SYNPROXY.html
https://javapipe.com/iptables-ddos-protection
Vía:
http://www.hackplayers.com/2016/04/proteccion-ddos-mediante-iptables.html
Enviar por correo electrónico
Escribe un blog
Compartir en X
Compartir con Facebook
Compartir en Pinterest
0 comentarios :
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.