técnicas de cdn para la mitigación de ataques distribuídos
DESCRIPTION
Este es el material de la presentación que hicimos el 13 de Febrero en Bugcon. Existen en el mercado muchos servicios con distintas técnicas para contener ataques distribuídos (todos ellos muy caros), pero ésta técnica es la única 100% Open Source y es la misma técnica que utilizamos en 1101 para nuestro servicio de protección contra ataques distribuídos. Hemos tenido muy buenos resultados pero los ataques evolucionan contínuamente por lo que tenemos que seguir agregando mejoras de donde esperamos poder presentar los nuevos nuevos avances con nuevos resultados para el Bugcon de 2014.TRANSCRIPT
![Page 1: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/1.jpg)
Derechos reservados © 2012-2013 Sandino Araico Sánchez <[email protected]>
Se permite ilimitadamente el uso, copia, redistribución con o sin modificaciones siempre y cuando se mantenga el aviso de derecho de autor y se anoten al final de la presentación todas las modificaciones que se llevan a cabo conservando la historia de las modificaciones que hagan las demás personas e indicando la fecha de cada modificación y el nombre de la persona que la llevó a cabo.
2013-02-15Técnicas para contención
de ataques distribuídos
1Friday, February 15, 2013
![Page 2: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/2.jpg)
DDoS =
Distributed
Denial
of
Service
Ataque de negación de servicio distribuído
2Friday, February 15, 2013
![Page 3: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/3.jpg)
Ataque de una botnet
3Friday, February 15, 2013
![Page 4: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/4.jpg)
Ataque de Anonymous
4Friday, February 15, 2013
![Page 5: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/5.jpg)
Ancho de banda de bajada
fuente: ddos.arbornetworks.com
5Friday, February 15, 2013
![Page 6: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/6.jpg)
Ancho de banda de subida
6Friday, February 15, 2013
![Page 7: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/7.jpg)
Uso de memoria
fuente: tumblr.com
7Friday, February 15, 2013
![Page 8: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/8.jpg)
Efecto del ataque
fuente: Netcraft
8Friday, February 15, 2013
![Page 9: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/9.jpg)
Hipótesis
Dilución del ataque en la nube
Uso de caché estático
Uso de límites de conexiones
Uso de límites de peticiones
Bloqueador de direcciones IP
9Friday, February 15, 2013
![Page 10: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/10.jpg)
Uso de la nube
10Friday, February 15, 2013
![Page 11: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/11.jpg)
Caché estático
11Friday, February 15, 2013
![Page 12: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/12.jpg)
Imposición de límites
12Friday, February 15, 2013
![Page 13: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/13.jpg)
Bloqueo de atacantes
13Friday, February 15, 2013
![Page 14: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/14.jpg)
Integración
14Friday, February 15, 2013
![Page 15: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/15.jpg)
Integración
15Friday, February 15, 2013
![Page 16: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/16.jpg)
Integración
16Friday, February 15, 2013
![Page 17: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/17.jpg)
Modelo experimentalXen / KVM, 1 CPU, 1 GiB RAM, 25 GB HD
CentOS 6 64 bits
nginx
nagios
bash
iptables
bind
17Friday, February 15, 2013
![Page 18: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/18.jpg)
Instalador de nodos en “La Nube”
for i in `cat hosts | sed “s/#.*$//” ` ; dossh $i < scripts/install-key./scripts/install-node $i
done
./sync-nginx-all
18Friday, February 15, 2013
![Page 19: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/19.jpg)
Propagador de configuración hacia “La Nube”
#sync-nginx-all RSYNC_PARAMS='-vacH --progress '
for i in `cat ./hosts | sed 's/#.*$//'` ; do! echo "===> rsync to: $i"! rsync $RSYNC_PARAMS ./etc/nginx/*conf root@$i:/etc/nginx/! rsync $RSYNC_PARAMS --delete ./etc/nginx/vhosts/ root@$i:/etc/nginx/vhosts/! ssh root@$i service nginx reloaddone
19Friday, February 15, 2013
![Page 20: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/20.jpg)
Adaptación de una zona para ”La Nube”
;$TTL 86400!; 1 day$TTL 3600! ; 1 hour$ORIGIN enli.org.mx.
;@!! A! 75.126.210.124! ; hosting;www!CNAME! @! ! ;@! ! A! 50.30.46.179 ; raicillawww! ! ! CNAME! a.cdn.1-1-0-1.net.origen!! CNAME! b.w.h.srvr.mx.
20Friday, February 15, 2013
![Page 21: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/21.jpg)
CDN por DNS Round Robin
;$TTL 3600! ; 1 hour$TTL 300!; 5 min$ORIGIN cdn.1-1-0-1.net.; A;a! ! A! 67.202.53.77 ; Nodo A;a! ! A! 23.22.63.20 ; Nodo Ba! ! A! 50.97.145.147 ; Nodo Ha! ! A! 50.97.65.34 ; Nodo I a! ! A! 50.19.77.249 ; Nodo Ja! ! A! 23.22.168.71 ; Nodo K
21Friday, February 15, 2013
![Page 22: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/22.jpg)
Configuración del caché estático
user nginx;worker_processes 1;worker_rlimit_nofile 250000;events { worker_connections 65536;}! proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:16m inactive=24h max_size=15g;! proxy_temp_path ! /data/nginx/tmp ;! !! open_file_cache max=10000 inactive=200s; ! open_file_cache_valid 300s; ! open_file_cache_min_uses 5;! open_file_cache_errors on;
22Friday, February 15, 2013
![Page 23: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/23.jpg)
Origen del caché estático
upstream local ! ! { server 127.0.0.1:8080; }
upstream mendozaaaa !{ server 50.22.23.151:80; server 74.86.82.177:80; } #c.w.h
upstream mozillamexico ! { server 50.22.23.151:80; server 74.86.82.177:80; } #c.w.h
upstream enli! ! ! { server 50.22.23.151:80; server 74.86.82.177:80; } #c.w.h
23Friday, February 15, 2013
![Page 24: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/24.jpg)
accounting.log
log_format accounting '$msec $time_local ' '| $remote_addr ' '| $status ' '| $bytes_sent ' '| $request_time ' '| $pipe ' '| $upstream_cache_status ' '| $upstream_status ' '| $upstream_response_time ' '| $host ' '| $uri ' '| $query_string ' ;
24Friday, February 15, 2013
![Page 25: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/25.jpg)
tail -f /var/log/accounting.log
1351169751.490 25/Oct/2012:07:55:51 -0500 | 174.129.84.42 | 301 | 410 | 0.000 | . | - | - | - | mendozaaaa.net | / | - 1351169803.465 25/Oct/2012:07:56:43 -0500 | 123.125.71.31 | 200 | 17787 | 6.436 | . | EXPIRED | 200 | 1.611 | mozilla-mexico.org | / | - 1351169803.990 25/Oct/2012:07:56:43 -0500 | 100.43.83.140 | 302 | 665 | 0.858 | . | MISS | 302 | 0.858 | mozilla-mexico.org | /activity/p/968/ | - 1351169807.008 25/Oct/2012:07:56:47 -0500 | 100.43.83.140 | 200 | 4910 | 0.721 | . | MISS | 200 | 0.721 | mozilla-mexico.org | /members/lu15g3orge/activity/968/ | - 1351169807.667 25/Oct/2012:07:56:47 -0500 | 180.76.5.169 | 302 | 631 | 1.655 | . | MISS | 302 | 1.439 | mozilla-mexico.org | /activity/p/865/ | - 1351169811.958 25/Oct/2012:07:56:51 -0500 | 180.76.5.143 | 200 | 5074 | 4.069 | . | MISS | 200 | 3.635 | mozilla-mexico.org | /members/jusai/activity/865/ | -
25Friday, February 15, 2013
![Page 26: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/26.jpg)
Configuración de un sitio en el caché
server {!listen 80; server_name !enli.org.mx ; access_log /var/log/nginx/accounting.log accounting; include /etc/nginx/common-attack.conf; location / { rewrite ^/(.*)$ http://www.$server_name/$1 permanent; } }
server {listen 80; server_name !www.enli.org.mx ;access_log /var/log/nginx/accounting.log accounting;error_log /var/log/nginx/error.log;include /etc/nginx/common-attack.conf; location / {
! ! include /etc/nginx/proxy-common.conf ;! ! proxy_pass http://enli; break; ! }
26Friday, February 15, 2013
![Page 27: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/27.jpg)
Limitador de conexiones
# HTTP port 80-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent \
--set --name DEFAULT --rsource -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent \
--update --seconds 1 --hitcount 20 --name DEFAULT --rsource -j DROP -A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN
-m connlimit --connlimit-above 255 --connlimit-mask 24 -j DROP -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited
27Friday, February 15, 2013
![Page 28: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/28.jpg)
Límite de peticiones - proxy-common
! ! proxy_set_header X-Real-IP $remote_addr;! ! proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! ! proxy_set_header Host $http_host;! ! proxy_redirect off; proxy_cache STATIC; proxy_cache_valid 1d; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;! ! proxy_buffering on;! ! proxy_buffer_size 8k;! ! proxy_buffers 8 8k;! ! proxy_busy_buffers_size 16k;
28Friday, February 15, 2013
![Page 29: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/29.jpg)
Límite de peticiones - proxy-micro
! ! proxy_set_header X-Real-IP $remote_addr;! ! proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! ! proxy_set_header Host $http_host;! ! proxy_redirect off;
proxy_cache STATIC; proxy_cache_valid 15; proxy_cache_valid 200 5; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;! ! proxy_buffering on;! ! proxy_buffer_size 8k;! ! proxy_buffers 8 8k;! ! proxy_busy_buffers_size 16k;
29Friday, February 15, 2013
![Page 30: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/30.jpg)
Reglas personalizadas por sitio
! location = /programa.html {! ! include /etc/nginx/proxy-micro.conf ;! ! proxy_pass http://enli; break; ! }
location ~ \.php {! ! include /etc/nginx/proxy-micro.conf ;! ! proxy_pass http://enli; break; ! }! location ~* \.(jpg|jpeg|gif|png|ico|css|js|ico)$ {! ! include /etc/nginx/proxy-common.conf ;! ! proxy_ignore_headers "Expires" "Cache-Control" "Set-Cookie" ;! ! proxy_pass http://enli; break; ! }}
30Friday, February 15, 2013
![Page 31: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/31.jpg)
Bloqueador de patrones conocidos common-attack.conf
#Apache .htaccesslocation ~ /\.ht {! deny all;}## Only allow these request methods #### Do not accept DELETE, SEARCH and other methods ## if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; }#Directory trasversal ../../../../../! if ($query_string ~ \.\.\/\.\.\/\.\.\/\.\.\/\.\.\/ ) {! ! return 404;! }location ~ url\(data:image\/png\;base64, {! return 404;}
31Friday, February 15, 2013
![Page 32: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/32.jpg)
Bloqueador de patrones conocidos
# Bloqueo de cadenas muy largaslocation ~ "(.{105})" {! return 414 "Request-URI Too Long";!}if ($query_string ~ "(.{105})" ) {! return 414 "Request-URI Too Long";}# Un abuso conocidolocation = /wp-login.php {! return 464 "Acknowledged Brute Force attack";}
32Friday, February 15, 2013
![Page 33: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/33.jpg)
Bloqueador de patrones conocidos
if ($query_string ~ Anonymous ) {! return 454 "Acknowledged DDoS attack";}#if ($query_string ~ Esperanos ) {#! return 454 "Acknowledged DDoS attack";#}if ($query_string ~ "Nunca%20bajaremos%20los%20brazos!%20Anonymous%20apoyando" ) {! return 454 "Acknowledged DDoS attack";}if ($query_string ~ "Somos%20El%20pueblo" ) {! return 454 "Acknowledged DDoS attack";}
33Friday, February 15, 2013
![Page 34: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/34.jpg)
Blocker cronjob
# ...# Known strings used in brute force attacks 454 464 # Too long strings used in brute force attacks 414 for ERR in '414' '454' '464' ; do! for IP in `tac /var/log/nginx/accounting.log | head -25000 | grep "$LAST_999_SEC" | cut -d '|' -f 2,3 | grep " $ERR " | cut -d '|' -f 1 | sort | uniq -c | sort -nr | grep '[0-9][0-9][0-9] \+[0-9]' | cut -b 8-99` ; do! echo -n "Blocking IP | $IP | 100+ $ERR | " >> $LOG_FILE! $IPTABLES -I INPUT -s $IP -j DROP ; ! date >> $LOG_FILEdone# ...
34Friday, February 15, 2013
![Page 35: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/35.jpg)
Replicación en la nube: Complejidad y costo
Caché estático: Evadible y abusable
Límite de conexiones: Puede afectar la respuesta hacia los visitantes auténticos
Límite de peticiones: El uso de CPU se dispara con ab, siege y fhttp
Bloqueador: Rissgo de falsos positivos
Resultados del uso individual de las técnicas propuestas
35Friday, February 15, 2013
![Page 36: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/36.jpg)
300 peticiones por segundo antes de fallar
Uso de CPU entre 10% y 15% en nodos de caché
Uso de caché entre 6 y 10 GiB
El tamaño de los logs aumenta muy rápido
800 Mbps de bajada antes del null route del centro de datos
Resultados del uso combinado de las técnicas propuestas
36Friday, February 15, 2013
![Page 37: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/37.jpg)
Picos de subida entre 25 y 80 Mbps
El blocker reduce efectivamente el uso de CPU y de ancho de banda de subida
El uso de CPU de los nodos de DNS es menor al 1%
Patrones de ataque no previstos han logrado evadir el caché
Resultados del uso combinado de las técnicas propuestas
37Friday, February 15, 2013
![Page 38: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/38.jpg)
Provisionamiento de nuevos nodos de caché en menos de 15 min.
Efectos secundarios benéficos como uso menor de recursos de la base de datos
Cambio del origen a una red distinta entre 5 y 10 min.
Tolerancia a interrupciones del origen
Resultados del uso combinado de las técnicas propuestas
38Friday, February 15, 2013
![Page 39: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/39.jpg)
Agradecimiento
nahual <[email protected]>
gozner <[email protected]>
puilli <[email protected]>
A las personas que han aportado sus ideas
pajarito <[email protected]>
A las personas que han participado en el desarrollo
39Friday, February 15, 2013
![Page 40: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/40.jpg)
ConclusionesConforme aumenta la intensidad del ataque distribuído mejora la capacidad de aislarlo y contenerlo
Siempre existen nuevas técnicas para evadir las técnicas de contención de ataques
El software libre y “la nube” han puesto la contención de ataques distribuídos al alcance de la población
40Friday, February 15, 2013
![Page 41: Técnicas de CDN para la mitigación de ataques distribuídos](https://reader033.vdocumento.com/reader033/viewer/2022052910/559c5e3a1a28abe13d8b459f/html5/thumbnails/41.jpg)
Referencias
http://en.wikipedia.org/wiki/Ddos#Distributed_attack
http://netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.htmlhttp://www.tldp.org/HOWTO/DNS-HOWTO-5.html
http://wiki.nginx.org/HttpCoreModulehttp://wiki.nginx.org/HttpProxyModule
Sandino Araico Sánchez <[email protected]>@KBrown
#mendozaaaa
41Friday, February 15, 2013