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.
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.