SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
2013-02-15
                                           Técnicas para contención
                                            de ataques distribuídos


                     Derechos reservados © 2012-2013 Sandino Araico Sánchez
                     <sandino@1101.mx>

                     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.




Friday, February 15, 2013                                                                1
Distributed
                                           Denial
                            DDoS =
                                           of
                                           Service

                            Ataque de negación de servicio
                                     distribuído


Friday, February 15, 2013                                    2
Ataque de una botnet




Friday, February 15, 2013                          3
Ataque de Anonymous




Friday, February 15, 2013                         4
Ancho de banda de bajada




                       fuente: ddos.arbornetworks.com




Friday, February 15, 2013                               5
Ancho de banda de subida




Friday, February 15, 2013                        6
Uso de memoria




                            fuente: tumblr.com


Friday, February 15, 2013                                   7
Efecto del ataque




                        fuente: Netcraft




Friday, February 15, 2013                                 8
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




Friday, February 15, 2013                                    9
Uso de la nube




Friday, February 15, 2013                    10
Caché estático




Friday, February 15, 2013                    11
Imposición de límites




Friday, February 15, 2013                           12
Bloqueo de atacantes




Friday, February 15, 2013                          13
Integración




Friday, February 15, 2013                 14
Integración




Friday, February 15, 2013                 15
Integración




Friday, February 15, 2013                 16
Modelo experimental
                            Xen / KVM, 1 CPU, 1 GiB RAM, 25 GB HD

                            CentOS 6 64 bits

                            nginx

                            nagios

                            bash

                            iptables

                            bind


Friday, February 15, 2013                                           17
Instalador de nodos en
                                                         “La Nube”



                            for i in `cat hosts | sed “s/#.*$/ ` ; do
                                                              /”
                               ssh $i < scripts/install-key
                               ./scripts/install-node $i
                            done

                            ./sync-nginx-all




Friday, February 15, 2013                                                         18
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 reload
       done




Friday, February 15, 2013                                                              19
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 ; raicilla
              www! ! ! CNAME! a.cdn.1-1-0-1.net.
              origen!! CNAME! b.w.h.srvr.mx.




Friday, February 15, 2013                                                20
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 B
                            a! ! A! 50.97.145.147 ; Nodo H
                            a! ! A! 50.97.65.34 ; Nodo I
                            a! ! A! 50.19.77.249 ; Nodo J
                            a! ! A! 23.22.168.71 ; Nodo K




Friday, February 15, 2013                                                    21
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;




Friday, February 15, 2013                                                               22
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




Friday, February 15, 2013                                          23
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 ' ;




Friday, February 15, 2013                                                         24
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/ | -




Friday, February 15, 2013                                                                                                                                  25
Configuración de un sitio en el caché

        server {!
          listen 80; server_name ! nli.org.mx ;
                                   e
          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 ! ww.enli.org.mx ;
                                   w
          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;
        ! }




Friday, February 15, 2013                                                          26
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




Friday, February 15, 2013                                                               27
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;




Friday, February 15, 2013                                                                    28
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;




Friday, February 15, 2013                                                                    29
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;
                  !     }
                  }




Friday, February 15, 2013                                                                 30
Bloqueador de patrones conocidos
                  common-attack.conf

                            #Apache .htaccess
                            location ~ /.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;
                            }


Friday, February 15, 2013                                                              31
Bloqueador de patrones conocidos


                            # Bloqueo de cadenas muy largas
                            location ~ "(.{105})" {
                            ! return 414 "Request-URI Too Long";!
                            }
                            if ($query_string ~ "(.{105})" ) {
                            ! return 414 "Request-URI Too Long";
                            }
                            # Un abuso conocido
                            location = /wp-login.php {
                            ! return 464 "Acknowledged Brute Force attack";
                            }




Friday, February 15, 2013                                                     32
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";
                            }




Friday, February 15, 2013                                                            33
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_FILE
                            done
                            # ...




Friday, February 15, 2013                                                                       34
Resultados del uso individual de
                                  las técnicas propuestas

                            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



Friday, February 15, 2013                                                 35
Resultados del uso combinado
                                de las técnicas propuestas

                            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



Friday, February 15, 2013                                                 36
Resultados del uso combinado
                                de las técnicas propuestas


                            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é



Friday, February 15, 2013                                                 37
Resultados del uso combinado
                                de las técnicas propuestas


                            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



Friday, February 15, 2013                                                  38
Agradecimiento
                 A las personas que han aportado sus ideas
                              nahual <nahual@security-dojo.com>

                              gozner <mago@gozner.com>

                              puilli <dan@microbit.com>

                               A las personas que han
                             participado en el desarrollo
                            pajarito <gnu.yair@gmail.com>




Friday, February 15, 2013                                         39
Conclusiones
                            Conforme 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


Friday, February 15, 2013                                        40
Referencias

                            http://en.wikipedia.org/wiki/Ddos#Distributed_attack
                            http://netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html
                            http://www.tldp.org/HOWTO/DNS-HOWTO-5.html
                            http://wiki.nginx.org/HttpCoreModule
                            http://wiki.nginx.org/HttpProxyModule




 Sandino Araico Sánchez
 <sandino@1101.mx>                                                             #mendozaaaa
 @KBrown
Friday, February 15, 2013                                                                        41

Más contenido relacionado

Destacado (20)

LuisZarraluqui_Ejercicio 1
LuisZarraluqui_Ejercicio 1LuisZarraluqui_Ejercicio 1
LuisZarraluqui_Ejercicio 1
 
BookCover-Conrad
BookCover-ConradBookCover-Conrad
BookCover-Conrad
 
Etude qualitative Ecole de la 2ème Chance Dares
Etude qualitative Ecole de la 2ème Chance DaresEtude qualitative Ecole de la 2ème Chance Dares
Etude qualitative Ecole de la 2ème Chance Dares
 
Clase de la lectura
Clase de la lecturaClase de la lectura
Clase de la lectura
 
Presentación1
Presentación1Presentación1
Presentación1
 
Como subir documentos al internet
Como subir documentos al internetComo subir documentos al internet
Como subir documentos al internet
 
This is my_soul
This is my_soulThis is my_soul
This is my_soul
 
Los virus
Los virusLos virus
Los virus
 
Nau losson plan
Nau losson planNau losson plan
Nau losson plan
 
Juancarlosparedes
JuancarlosparedesJuancarlosparedes
Juancarlosparedes
 
Antonio Barceló
Antonio BarcelóAntonio Barceló
Antonio Barceló
 
Ventriloquia
VentriloquiaVentriloquia
Ventriloquia
 
09h30 EMDay 2014 - Introduction
09h30 EMDay 2014 - Introduction09h30 EMDay 2014 - Introduction
09h30 EMDay 2014 - Introduction
 
Tarea 4
Tarea 4Tarea 4
Tarea 4
 
Les intentions de vote pour l’élection présidentielle de 2017 - 05/09/14
Les intentions de vote pour l’élection présidentielle de 2017 - 05/09/14Les intentions de vote pour l’élection présidentielle de 2017 - 05/09/14
Les intentions de vote pour l’élection présidentielle de 2017 - 05/09/14
 
Navidad24
Navidad24Navidad24
Navidad24
 
Ppt dossier de production groupe 142
Ppt dossier de production groupe 142Ppt dossier de production groupe 142
Ppt dossier de production groupe 142
 
Celebración de bodas en madrid
Celebración de bodas en madridCelebración de bodas en madrid
Celebración de bodas en madrid
 
Si yo fuera invisible
Si yo fuera invisibleSi yo fuera invisible
Si yo fuera invisible
 
Guerrapacífico
GuerrapacíficoGuerrapacífico
Guerrapacífico
 

Último

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 

Último (20)

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 

Técnicas de CDN para la mitigación de ataques distribuídos

  • 1. 2013-02-15 Técnicas para contención de ataques distribuídos Derechos reservados © 2012-2013 Sandino Araico Sánchez <sandino@1101.mx> 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. Friday, February 15, 2013 1
  • 2. Distributed Denial DDoS = of Service Ataque de negación de servicio distribuído Friday, February 15, 2013 2
  • 3. Ataque de una botnet Friday, February 15, 2013 3
  • 4. Ataque de Anonymous Friday, February 15, 2013 4
  • 5. Ancho de banda de bajada fuente: ddos.arbornetworks.com Friday, February 15, 2013 5
  • 6. Ancho de banda de subida Friday, February 15, 2013 6
  • 7. Uso de memoria fuente: tumblr.com Friday, February 15, 2013 7
  • 8. Efecto del ataque fuente: Netcraft Friday, February 15, 2013 8
  • 9. 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 Friday, February 15, 2013 9
  • 10. Uso de la nube Friday, February 15, 2013 10
  • 12. Imposición de límites Friday, February 15, 2013 12
  • 13. Bloqueo de atacantes Friday, February 15, 2013 13
  • 17. Modelo experimental Xen / KVM, 1 CPU, 1 GiB RAM, 25 GB HD CentOS 6 64 bits nginx nagios bash iptables bind Friday, February 15, 2013 17
  • 18. Instalador de nodos en “La Nube” for i in `cat hosts | sed “s/#.*$/ ` ; do /” ssh $i < scripts/install-key ./scripts/install-node $i done ./sync-nginx-all Friday, February 15, 2013 18
  • 19. 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 reload done Friday, February 15, 2013 19
  • 20. 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 ; raicilla www! ! ! CNAME! a.cdn.1-1-0-1.net. origen!! CNAME! b.w.h.srvr.mx. Friday, February 15, 2013 20
  • 21. 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 B a! ! A! 50.97.145.147 ; Nodo H a! ! A! 50.97.65.34 ; Nodo I a! ! A! 50.19.77.249 ; Nodo J a! ! A! 23.22.168.71 ; Nodo K Friday, February 15, 2013 21
  • 22. 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; Friday, February 15, 2013 22
  • 23. 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 Friday, February 15, 2013 23
  • 24. 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 ' ; Friday, February 15, 2013 24
  • 25. 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/ | - Friday, February 15, 2013 25
  • 26. Configuración de un sitio en el caché server {! listen 80; server_name ! nli.org.mx ; e 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 ! ww.enli.org.mx ; w 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; ! } Friday, February 15, 2013 26
  • 27. 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 Friday, February 15, 2013 27
  • 28. 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; Friday, February 15, 2013 28
  • 29. 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; Friday, February 15, 2013 29
  • 30. 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; ! } } Friday, February 15, 2013 30
  • 31. Bloqueador de patrones conocidos common-attack.conf #Apache .htaccess location ~ /.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; } Friday, February 15, 2013 31
  • 32. Bloqueador de patrones conocidos # Bloqueo de cadenas muy largas location ~ "(.{105})" { ! return 414 "Request-URI Too Long";! } if ($query_string ~ "(.{105})" ) { ! return 414 "Request-URI Too Long"; } # Un abuso conocido location = /wp-login.php { ! return 464 "Acknowledged Brute Force attack"; } Friday, February 15, 2013 32
  • 33. 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"; } Friday, February 15, 2013 33
  • 34. 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_FILE done # ... Friday, February 15, 2013 34
  • 35. Resultados del uso individual de las técnicas propuestas 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 Friday, February 15, 2013 35
  • 36. Resultados del uso combinado de las técnicas propuestas 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 Friday, February 15, 2013 36
  • 37. Resultados del uso combinado de las técnicas propuestas 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é Friday, February 15, 2013 37
  • 38. Resultados del uso combinado de las técnicas propuestas 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 Friday, February 15, 2013 38
  • 39. Agradecimiento A las personas que han aportado sus ideas nahual <nahual@security-dojo.com> gozner <mago@gozner.com> puilli <dan@microbit.com> A las personas que han participado en el desarrollo pajarito <gnu.yair@gmail.com> Friday, February 15, 2013 39
  • 40. Conclusiones Conforme 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 Friday, February 15, 2013 40
  • 41. Referencias http://en.wikipedia.org/wiki/Ddos#Distributed_attack http://netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html http://www.tldp.org/HOWTO/DNS-HOWTO-5.html http://wiki.nginx.org/HttpCoreModule http://wiki.nginx.org/HttpProxyModule Sandino Araico Sánchez <sandino@1101.mx> #mendozaaaa @KBrown Friday, February 15, 2013 41