Como impedir um ataque DDOS no Amazon EC2?


46

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

A Amazon possui grupos de segurança e firewall, mas o que mais devo ter em um servidor EC2 para atenuar ou impedir um ataque?

De perguntas semelhantes que aprendi:

  • Limite a taxa de solicitações / minuto (ou segundos) de um endereço IP específico por meio de tabelas IP (ou talvez UFW?)
  • Tenha recursos suficientes para sobreviver a esse ataque - ou -
  • Possivelmente construa o aplicativo Web para que ele seja elástico / tenha um balanceador de carga elástico e possa ser dimensionado rapidamente para atender a uma demanda tão alta)
  • Se estiver usando o mySql, configure as conexões do mySql para que sejam executadas seqüencialmente, para que consultas lentas não atolem o sistema

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

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


Prevenir isso é quase impossível, mas você certamente pode diminuir sua vulnerabilidade.
Belmin Fernandez

1
Muito verdadeiro. E eu ficaria feliz com respostas que discutem diminuindo a vulnerabilidade :)
cwd

Para saber como evitá-lo, é preciso saber mais sobre a natureza do ataque. Foi um dilúvio? Havia uma página da web cara que estava sendo atingida? foi algum outro serviço?
stew

Eu acho que era uma página da web, mas não tenho certeza. Eu também gostaria de receber dicas sobre como monitorar e investigá-las. Alguns dos logs de acesso já foram excluídos - o que mais devo procurar?
Cwd

e, na verdade, se uma reinicialização resolver o problema, não sei o que poderia ser, exceto, talvez, que seu servidor tenha um vazamento de recurso em algum lugar. Uma reinicialização certamente não pode parar um DDoS por conta própria. Como você sabe que isso é um DDoS?
ensopado de

Respostas:


36

Um DDOS (ou mesmo um DOS), em sua essência, é uma exaustão de recursos. Você nunca será capaz de eliminar gargalos, pois só poderá empurrá-los para mais longe.

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

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

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


Convém verificar a seção "com base em carga" em serverfault.com/a/531942/87017
Pacerier

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 o tráfego da instância ELB. Isso coloca mais ônus 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, a menos que 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 fail2ban, que pode monitorar logs e modificar temporariamente suas tabelas de ip para bloquear IPs específicos (por exemplo, se houve 6 tentativas falhas de SSH no host a partir de um único endereço IP, ele pode bloquear esse IP por 30 minutos ou mais). Lembre-se de que (como Jordan astutamente comentou) 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 o usei, mas o Apache mod_evasive também pode valer a pena investigar; no entanto, pode ter a mesma fraqueza do fail2ban quando se trata de bloqueio baseado em IP.


+1 obrigado. Na verdade, eu tinha o ssh fechado;)
cwd

1
Observe que se você estiver atrás de um ELB, o fail2ban não funcionará - porque geralmente funciona bloqueando um IP nas tabelas de ip. Mas o IP sempre será o do seu ELB. Percebi que depois de tentar adicionar fail2ban à minha instalação. Não funciona se o usuário estiver acessando apenas através do ELB.
Re: Jordan Reiter

5

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

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


incrível - essas parecem opções fantásticas, obrigado!
Cwd

2

A solução que eu uso para bloquear IPs de atividades ruins em tempo real saindo da AWS e de outras empresas é essa ... No meu Firewall do CSF ​​na configuração das Listas de bloqueio LFD, uso uma lista encontrada aqui - http://myip.ms/browse/blacklist/ Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real time

Faça o download da lista negra do firewall do CSF ​​» http://myip.ms/files/blacklist/csf/latest_blacklist.txt

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


1
Isso não responde à pergunta.
precisa saber é

2

Sou tendencioso, pois trabalho em uma rede de entrega de conteúdo como engenheiro de pré-vendas de segurança.

No entanto, aproveitar uma solução de mitigaçã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 espalha por milhares de locais em todo o mundo.

Um bom cdn permitirá que você esconda a origem com uma lista de permissões que você instala no firewall do aws. Portanto, quando os invasores fizerem seu reconhecimento na Amazon, seu endereço IP ficará vazio, pois tudo será bloqueado.

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

Um bom CDN também pode executar verificações de integridade e tráfego de failover para outros locais, como outro ego, Azure, espaço em rack, camada flexível, um controlador de domínio físico etc. Ele também deve ter um WAF para garantir que você possa bloquear ataques de exaustão da camada de aplicativos, como RUDY, slowpost, slowloris, bem como sqli, xss, rfi, lfi etc.

Por padrão, o cdn também bloqueia ataques da camada de rede, como teardrop, icmp, synfloods, etc. Portanto, ataques amplificadores 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, também houve um ataque de protocolo DNS a 20gbps. Portanto, você precisará garantir que a infraestrutura do DNS também seja resistente 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 thr attack abriu muitos threads, de modo que todos os threads foram consumidos no servidor web, servidor de aplicativos ou firewall. É semelhante a algo como um slowpost, slowloris ou RUDY.

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



0

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

http://configserver.com/cp/csf.html


Bem-vindo à falha do servidor! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Scott Pacote
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.