Como posso evitar um ataque DDOS no Amazon EC2?

46

Um dos servidores que uso está hospedado na nuvem do Amazon EC2. A cada poucos meses, parece que temos um ataque de DDOS a esse servidor. Isso atrasa o servidor incrivelmente. Após cerca de 30 minutos e, às vezes, uma reinicialização posterior, tudo volta ao normal.

A Amazon tem grupos de segurança e firewall, mas o que mais eu deveria ter em um servidor EC2 para mitigar ou impedir um ataque?

De perguntas semelhantes que aprendi:

  • Limite a taxa de solicitações / minuto (ou segundos) de um determinado endereço IP através de algo como tabelas de IP (ou talvez UFW?)
  • Ter recursos suficientes para sobreviver a um ataque desse tipo - ou -
  • Possivelmente, construa o aplicativo da Web para que ele seja elástico / tenha um balanceador de carga elástico e possa escalar rapidamente para atender a uma demanda tão alta)
  • Se estiver usando o mySql, configure as conexões mySql para que elas sejam executadas sequencialmente para que as consultas lentas não sobrecarreguem o sistema

O que mais eu estou sentindo falta? Eu adoraria informações sobre ferramentas específicas e opções de configuração (novamente, usando o Linux aqui), e / ou qualquer coisa que seja específica para o Amazon EC2.

ps: Notas sobre monitoramento para DDOS também seriam bem-vindas - talvez com nagios? ;)

    
por cwd 13.12.2011 / 02:08

7 respostas

36

Um DDOS (ou mesmo um DOS), em sua essência, é um esgotamento de recursos. Você nunca será capaz de eliminar os gargalos, pois você só pode empurrá-los para mais longe.

Na AWS, você tem sorte porque o componente de rede é muito strong - seria muito surpreendente saber que o link do upstream estava saturado. No entanto, a CPU, bem como os discos I / O, são muito mais fáceis de inundar.

O melhor curso de ação seria iniciar algum monitoramento (local, como SAR, remoto com Nagios e / ou ScoutApp) e alguns recursos de registro remoto (Syslog-ng). Com essa configuração, você será capaz de identificar quais recursos ficam saturados (soquete de rede devido a inundação Syn; CPU devido a consultas SQL ou rastreadores, ram devido a…). Não se esqueça de ter sua partição de registro (se você não tiver o registro remoto ativado) em um volume do EBS (para estudar posteriormente os registros).

Se o ataque vier através das páginas da web, o log de acesso (ou o equivalente) pode ser muito útil.

    
por 13.12.2011 / 03:20
24

Você também pode isolar ainda mais suas instâncias do EC2 colocando-as atrás de um Elastic Load Balancer e aceitando apenas tráfego da instância do ELB. Isso coloca mais responsabilidade na Amazon para gerenciar ataques DDOS.

Suponho que você ainda terá o SSH aberto para todos, por isso, é provável que você ainda veja algum tráfego invasor lá, a menos que você possa bloquear essa porta para alguns IPs estáticos. Você pode alterar a porta SSHd para algo mais obscuro (ou seja, algo diferente de 22) para reduzir ainda mais as ocorrências de DDOS (a maioria dos bots verifica apenas as portas conhecidas).

Também mencionarei o fail2ban, que pode monitorar logs e modificar temporariamente suas tabelas de IP para bloquear IPs específicos (por exemplo, se houver 6 tentativas fracassadas de SSH em seu host a partir de um único endereço IP, ele pode bloquear isso IP por 30 minutos ou mais). Tenha em mente que (como Jordan comentou astutamente) o fail2ban provavelmente não é apropriado para bloquear o tráfego em proxy (por exemplo, o de um ELB) porque ele bloqueará o IP do proxy, não necessariamente o IP remoto original.

Eu não usei, mas o mod_evasive do Apache também pode valer a pena ser investigado; no entanto, pode ter a mesma fraqueza do fail2ban quando se trata de bloqueio baseado em IP.

    
por 13.12.2011 / 20:52
5

Se você estiver usando o Apache, sugiro usar o mod_security . Empacotado pela maioria dos fornecedores, o conjunto de regras básicas faz um trabalho fantástico.

Outra etapa de fortalecimento é limitar as solicitações no nível do servidor da web. Nginx . Apache pode limitar e limitar os pedidos recebidos.

    
por 07.03.2012 / 20:57
2

A solução que eu uso para bloquear IPs de atividades ruins em tempo real saindo da AWS e outros é ... No meu Firewall CSF na configuração de LFD Blocklists eu uso uma lista encontrada aqui - link

Faça o download da Lista Negra para o Firewall do CSF » link

Não há mais tráfego da AWS escandalosamente desagradável.

    
por 14.08.2014 / 08:05
2

Sou parcial, pois trabalho em uma rede de distribuição de conteúdo como engenheiro de pré-vendas de segurança.

No entanto, aproveitar uma solução de atenuação de DDoS em uma rede de entrega de conteúdo garante que você nunca fique sem recursos na origem. É semelhante a colocar um balanceador de carga F5 na frente do site, mas se espalhar para milhares de locais em todo o mundo.

Um bom cdn permitirá encobrir a origem com uma lista branca que você instala no firewall aws. Assim, quando os invasores realizarem seu reconhecimento na Amazon, seu endereço IP aparecerá vazio, pois tudo será bloqueado.

Assim, os ataques de DDoS são bloqueados quando o tráfego atinge um nó o mais próximo possível do invasor. Isso garante que você reduza os ataques de DDoS tão longe do ativo que está tentando proteger.

Um bom cdn também pode executar verificações de integridade e tráfego de failover em outros locais, por exemplo, outro ego, Azure, espaço em rack, camada flexível, dc etc. Também deve haver um WAF para garantir que você possa bloquear a camada de aplicativo ataques de exaustão como RUDY, slowpostis, slowlois, bem como sqli, xss, rfi, lfi etc.

Por padrão, o cdn também bloqueia ataques de camada de rede, como teardrop, icmp attacks, synfloods etc. Um cdn é capaz de mitigar os ataques de DDoS, porque a trey tem uma grande capacidade de aceitar as solicitações, filtrar o tráfego ruim e transmitir o bom tráfego. Assim, ataques amplificados como ataques volumétricos ntp, DNS, ssdp, chargen e snmp podem ser bloqueados.

O maior ataque que vi até agora foi de 321gbps em julho de 2014. Durante esse ataque, houve também um ataque ao protocolo DNS a 20gbps. Portanto, você precisará garantir que a infraestrutura de DNS também seja resiliente para suportar um grande número de solicitações.

A partir da descrição que você forneceu, parece que você estava sujeito a um ataque de exaustão, em que o invasor abriu vários segmentos, de modo que todos os segmentos foram consumidos no servidor Web, no servidor de aplicativos ou no firewall. É semelhante a algo como um slowpostis, slowloris ou RUDY.

Para bloquear os ataques de exaustão da camada de aplicativos, você precisará obter um firewall de aplicativo da web (WAF). Um firewall de rede típico (incluindo firewalls da Amazon e firewalls de próxima geração) não poderá bloqueá-lo. Os firewalls de trabalho enviados atualmente bloqueiam apenas 30% de todos os ataques nos dias de hoje (novembro de 2014).

    
por 12.11.2014 / 13:12
1

Aqui está uma ferramenta que eu fiz para aqueles que querem usar o Fail2Ban no aws com apache, ELB e ACL: link

É útil para detectar e prevenir ataques DoS e abuso de instâncias do ec2.

    
por 19.09.2016 / 18:20
0

O firewall do servidor de configuração é o melhor que já vi para a mitigação de DDoS em VMs baseadas em software no EC2. Se você combinar o recurso syslog, ele poderá proteger contra um ambiente com carga balanceada.

link

    
por 10.10.2013 / 18:27