Como atenuar ataques DDOS na AWS?

1

Eu tenho o aplicativo da web (NodeJS) e planejo implantá-lo na AWS. Para minimizar o custo, ele será executado em uma única instância do EC2. Estou preocupado, porém, com o que acontecerá se alguém decidir me abençoar com o ataque DDOS e, portanto, tiver poucas dúvidas. Agora, fiz um pouco de pesquisa, mas como claramente falta minha compreensão, peço desculpas se algumas das perguntas forem estúpidas:

  1. Eu quero evitar que pessoas inundem meu site com ataques da camada 4. Seria suficiente definir meu grupo de segurança para aceitar somente tráfego (em adição à porta 22 do SSH) de:

    Tipo HTTP

    Protocolo TCP

    Faixa de portas 80

Seria melhor impedir que o flood do UDP e outros atingissem minha instância do EC2?

  1. Por meio do Grupo de segurança, eu permitiria conexões SSH à porta 22 somente do meu endereço IP estático. Isso impediria que atacantes tentassem atacar a porta 22 completamente?

  2. Minha instância do EC2 executará o Ubuntu. Eu quero evitar ataques na camada de aplicação (camada 7) e estava planejando fazer isso diretamente do meu aplicativo, então de alguma forma detectar se determinado IP inunda URLs particulares e bloqueá-las se necessário. Isso, no entanto, parece um pouco atrasado, pois o tráfego já chega ao meu servidor web e meu servidor tem que fazer o trabalho de qualquer maneira. Então, ao invés de fazer isso diretamente do meu aplicativo, eu estava pensando se era possível usar tabelas de IP para bloquear qualquer tráfego desonesto antes que ele chegasse ao meu servidor web. Existe um conjunto de configurações comuns que poderiam reconhecer o comportamento desonesto e bloquear os criminosos? Eu estava planejando olhar para fail2ban na esperança de que isso simplificasse o processo. Agora, eu entendo que, se chegar tão longe, ele atingirá minha instância do EC2, mas eu quero proteger meu aplicativo também de, por exemplo, ataques de força bruta.

  3. O AWS CloudFront cuidaria da maioria dos ataques DDOS Layer 4? Se não, então, usar CloudFlare livre faria alguma diferença?

  4. Digamos que alguém inunde meu site e isso resulta em mais tráfego do que eu esperava. Existe alguma maneira de interromper as cobranças em algum momento? Há alertas de faturamento, mas não vejo como definir limites rígidos na AWS e dizer que coloque a instância off-line se a largura de banda for excedida.

Eu também percebo que agora existe uma maneira de evitar completamente os ataques de DDOS, mas quero protegê-los pelo menos contra tentativas básicas. Agradeço antecipadamente por qualquer ajuda.

    
por spirytus 27.12.2015 / 19:46

2 respostas

3

1) A configuração do Security Group é uma camada de segurança fácil e importante. Se você estiver executando qualquer aplicativo da Web, a porta 80/443 será uma que esteja aberta ao mundo e 22 para acessar o servidor remotamente via ssh deve ser permitida somente a partir de um determinado endereço IP. Além dessas 3 portas, todo o tráfego será bloqueado. Você pode testar com a ferramenta Port Scanning ou NMAP.

2) Limite o acesso do SSH apenas ao seu endereço IP estático e também para acessar a Instância do EC2 via ssh você precisa de uma chave. Se o atacante de alguma forma conhecer seu endereço IP, ele não poderá acessar seu servidor sem chave.

Observação: - Se você estiver usando o CDN (CloudFlare), o IP estático do EC2 já estará oculto.

3) Você pode limitar a quantidade de conexões simultâneas do mesmo endereço IP para o seu servidor.

Você pode usar regras de firewall do linux para isso: -

iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
iptables-save >/etc/iptables.up.rules

A primeira linha irá ver o IP se conectando à sua interface eth0. A segunda linha irá Verificar se a conexão é nova nos últimos 60 segundos e se o fluxo do pacote é maior do que dez e, se for o caso, a conexão será descartada. A terceira linha tornará as regras persistentes no caso de uma reinicialização.

Para verificar o número de conexões simultâneas de todos os clientes que estão conectados ao seu servidor: -

 netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head 

Ele mostrará uma lista das conexões ativas atuais por endereço IP e o IP incorreto é geralmente aquele com um alto número de conexões.

12  10.1.1.1
160 162.19.17.93

No exemplo acima, o primeiro número é o número de conexões seguidas pelo endereço IP de origem.

Nota: - Em um servidor altamente carregado, o número de conexões pode ser acima de 100, mas durante o ataque de DDOS, o número será ainda maior. Para um host médio, se você tiver mais de 30 conexões de um único IP, provavelmente você está sob ataque. Se mais de 5 desses IP / host estiverem conectados da mesma rede, isso é um sinal muito claro de ataque de DDOS.

A saída de lsof , netstat e tcpdump é muito útil para detectar esse tipo de problema.

Agora você obtém o endereço IP do cliente para poder usar IPtables para bloquear o comando IP ou tcpkill. O TCPKILL faz parte do pacote dsniff.

apt-get install dsniff

Em seguida, edite: -

tcpkill host x.x.x.x

O método acima é bom e ajudará a diminuir o pequeno ataque DDOS se aplicado corretamente. Agora, se você estiver usando o CDN (CloudFlare), poderá bloquear o invasor apenas nesse nível. Você pode usar a API CloudFlare para bloquear o endereço IP. Neste tráfego não chegará ao seu servidor.

Leia mais em Documento sobre a API do CloudFlare

Consulte o método acima e crie um script que o ajudará na automação.

4) Na minha opinião, CloudFlare é melhor que o CloudFront. CloudFlare é fácil de configurar e de um painel de controle você pode manipular tudo. Mesmo se você encontrar uma quantidade pesada de tráfego desnecessário, o modo "Estou Sob Ataque" irá reduzi-lo em menos de 5 a 10 segundos.

Leia mais sobre o DDOS e eu estou sob o modo de ataque nos Blogs do Cloudflare.

5) Você pode configurar os alarmes do AWS para parar / encerrar a instância do EC2 se a largura de banda da sua rede exceder o limite.

Amostra de alarme da AWS

Editar: - Uma coisa importante é tentar configurar a ferramenta de monitoramento (como o Nagios) e a ferramenta de gerenciamento de logs do acesso a aplicativos da web. Isso ajudará você a encontrar o gargalo.

    
por 28.12.2015 / 11:56
0

Os ataques DDOS podem ser mitigados de várias formas:

  1. Ao modificar a arquitetura (recursos da AWS)
  2. Usando ferramentas e utilitários (ferramentas embutidas em instâncias ec2)

Agora, quando você tem uma arquitetura complexa para seu servidor da Web, eu sugiro que você modifique sua arquitetura. Eu escrevi um blog de detalhes sobre quais serviços você deve usar para mitigar os ataques DDOS na AWS

Se você tiver esse problema com uma única instância e não quiser gastar muito em outros recursos da AWS, escreverei um outro blog que demonstrará maneiras de impede o DDOS em uma instância do EC2 sem usar nenhuma ferramenta de terceiros .

Espero que isso ajude, deixe-me saber se você precisa de mais informações sobre o mesmo assunto.

    
por 01.12.2016 / 12:49