Varnish e Flood Connection (DoS - DDoS) [duplicado]

1

Tenho andado a brincar com o servidor de cache Varnish e a minha página web ficou muito rápida, obtém 97 pontos na página do Google e 100 @ Pingdom. Eu usei Varnish (proxies para nginx), NGINX (apenas disponível localmente, proxies * .php para php-fpm (mas eu penso em mudar para o compilador PHP HipHop)).

Então, como minha página era rápida e apenas ~ 500 / 1GB de RAM eram usados, pedi a um amigo meu que fizesse um teste de estresse no servidor HTTP dessa máquina. Eu configurei os seguintes mecanismos do Anti-DDoS:

  • iptables limitação de firewall Conexões / segundo
  • mais algumas verificações de iptables (Sessões começando com um SYN, ICMP e assim por diante)
  • Armazenamento em cache de verniz
  • Codifiquei novamente a pequena página da Web para armazenar alguns valores que podem ser buscados com frequência no cache alternativo do php (por exemplo, a música que está sendo reproduzida, ttl de 120 deve ficar bem)

Não há dados dinâmicos na página, exceto a música que está sendo reproduzida no momento, que é alimentada por APC, e definitivamente não há necessidade de sessões.

Então, agora para o meu problema, meu amigo começou um ataque DoS de alguma máquina que ele estava autorizado a usar e meu servidor caiu muito rápido. Eu era umble para entrar no SSH, então usei um console serial e verifiquei os logs do varnishd, que mostravam: início de sessão final da sessão

E isso repetindo o tempo todo. Eu peguei o meu acesso ao console e bani os IPs, e voila minha página estava de volta.

Agora, como não há necessidade de sessão, eu preciso da Sintaxe VCL para proibir todas as sessões, exceto para scripts no subdir / user.

    
por Jonny Mild 01.05.2012 / 22:30

2 respostas

4

O verniz IIRC usa threads para lidar com conexões e é configurado com um limite. Assim, tudo que um invasor precisa fazer é abrir, digamos, 200 conexões ao cache para bloquear todos os segmentos (veja também slowloris ). Por outro lado, o nginx (que será executado como um proxy reverso de armazenamento em cache ) é um servidor baseado em eventos; a mudança de contexto é impulsionada pela demanda - ela é limitada apenas pelo número de soquetes que ela pode ter aberta e, portanto, é muito, MUITO mais resistente a esses ataques.

(o verniz ainda é melhor do que o pré-fork ou mesmo o apache do trabalhador ao girar as solicitações sem uma grande pegada por requisição, portanto você verá muitas pessoas falando sobre usá-lo para mitigar tais ataques DOS).

Você pode fazer algumas coisas para mitigar os ataques DOS na camada de rede usando iptables e / ou roteamento baseado em QOS , mas eu recomendo começar usando nginx como proxy.

    
por 02.05.2012 / 00:28
2

Você pode instalar uma ferramenta como o fail2ban ou o OSSEC (meu favorito) para bloquear automaticamente esse tipo de ataque. Ele não salva você de ataques com IP's falsificados (é muito difícil se defender deles), mas é um começo.

    
por 01.05.2012 / 23:49