Linux - Contra medida contra ferramentas de estresse

1

Eu tenho um VPS executando Ngix e atualmente hospedando alguns sites. Como você sabe, o VPS tem baixo recurso e as medidas de segurança devem ser feitas pelo cliente.

Acabei de notar que muitas ferramentas de stress estão disponíveis, o que pode causar uma falha no servidor da web ou o servidor consome todos os recursos que podem ser interrompidos. Eu tenho LoadUI no meu pc do windows. Também existem serviços similares on-line, como o LoadImpact.com

Ele nem precisa executar 10 ou milhares de ferramentas ao mesmo tempo. Mesmo apenas uma criança pode inserir o nome de domínio nessas ferramentas e executar o teste com toneladas de conexões simultâneas e fazer uso total da largura de banda do servidor, hardware recursos, etc.

Eu quero saber Como devo evitar esses ataques de inundação? É algo que deve ser tratado por Iptables? Ou Nginx?

    
por xperator 10.05.2012 / 23:40

2 respostas

3

O fato de você já rodar o nginx é um bom começo - servidores baseados em eventos são muito mais resistentes a ataques do tipo slolor.

Ainda assim, é uma boa idéia evitar ataques do DOS o mais longe possível do seu aplicativo. O próximo passo é o iptables.

Você precisa pensar sobre como clssificar ataques e diferenciá-los do tráfego real - a velocidade na qual novas conexões estão sendo criadas é um indicador muito bom - e você pode configurar o iptables para limitar novas conexões em uma base por ip:

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent \
         --update --seconds 30 --hitcount 80  -j DROP

(descarta novas solicitações de conexão quando a taxa aumenta acima de 80 a cada 30 segundos)

Você pode limitar o número de conexões simultâneas por endereço IP:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit \
      --connlimit-above 20 -j REJECT --reject-with tcp-reset

Também é uma boa ideia limitar a largura de banda, dependendo do seu perfil de tráfego para, digamos, 10% da largura de banda disponível - isso é feito usando tc ao invés de iptables.

Em seguida, para as conexões que passarem, pode haver características na solicitação HTTP que identificam um ataque (referenciador, URL solicitado, user agent, accept language ...). Não importa qual específico valores que você escolhe para estes apenas agora - você só precisa garantir que você tem o maquinário no lugar onde você pode alterar rapidamente os parâmetros no primeiro sinal de um ataque. Embora você possa manipular a solicitação no servidor da Web, uma solução melhor é bloquear o acesso do endereço IP remoto usando o iptables - fail2ban é a ferramenta para unir seus dados de log à sua configuração do iptables.

É claro que para um DDOS de grande escala isso não resolverá o problema dos invasores enchendo seu canal de internet com pacotes que seu servidor ignora - para isso você precisa falar com seu provedor de upstream.

    
por 11.05.2012 / 00:13
1

2 coisa que eu recomendaria investigar é a limitação de taxa do iptables e fail2ban . O Fail2ban dará a você um bom bloqueio automático de IPs que estão atingindo muito o seu servidor e permite que você personalize por quanto tempo deseja que eles sejam banidos. A limitação de taxa do Iptables permitirá que você estrangule todos os tipos de tráfego que chegam ao seu servidor. Eu encontrei um artigo decente sobre isso aqui . No entanto, se você fizer uma pesquisa básica no Google, verá muito mais.

Editar: Embora eu não tenha nenhuma experiência pessoal com o nginx, vejo que ele tem um HttpLimitReqModule que você deve analisar bem.

    
por 10.05.2012 / 23:46