Bloquear o tráfego por trás do AWS ELB

4

Meus servidores da web estão por trás do ELB, quero bloquear o tráfego de algum agente de usuário específico que é um ataque de DDOS. O Apache sempre vê o endereço IP do ELB como um usuário final, então tentei abaixo das tentativas:

  1. O bloqueio do endereço IP no nível do ELB não é possível porque tem um limite de 20 endereços IP e endereços IP alterados em cada ataque.
  2. Bloqueie o acesso usando a condição de reescrita, isso funciona, mas se muitos acessos vierem, a carga do servidor ultrapassará 100 e todos os threads do apache ficarão ocupados ocupando toneladas de 403, de forma que o site apareça para solicitações legítimas.

    RewriteCond %{HTTP_USER_AGENT} ^SomeThing
    
    RewriteRule ^(.*)$ - [F]
    
  3. O bloco com mod_sec faz a mesma coisa de servir 403, que cria o mesmo efeito que o número 2 acima.

  4. Bloqueie pacotes com o módulo string iptables: Bloqueie pacotes que tenham um user agent específico. Neste cenário o iptables envia DROP / REJECT para o atacante, o apache não recebe sinal de que as conexões estão inativas e espera por um timeout que causa todos os threads do apache em uso para o timeout, então este método não é útil aqui.

    iptables -I INPUT -i eth0 -p tcp --dport 80 -m string --algo bm --string 'user-agent: SomeThing' -j REJECT
    

Posso usar o iptables de tal forma que ele obtenha o endereço IP do primeiro pacote que tenha user-agent: SomeThing e bloqueie todos os próximos pacotes que tenham X-Forwarded-For: someIP por 4-5 horas. Não quero manter o bloqueio de endereços IP sempre, pois esses endereços IP podem ser atribuídos a alguns usuários legítimos e isso será bloqueado.

Ou há alguma outra maneira melhor de lidar com esse ataque?

    
por Deepak Deore 12.12.2014 / 02:46

3 respostas

3

Como alternativa, não use o ELB, mas implemente seu próprio balanceador de carga usando o HAProxy.

Se você tiver implantado seu site usando AWS OpsWorks , deverá estar ciente de que o AWS OpsWorks suporta uma Camada de balanceador de carga baseada em HAProxy .

Sim, a preparação de uma Camada de Balanceador de Carga HAProxy é muito mais envolvente do que simplesmente girar um conjunto ELB, mas, no final, permite personalizar totalmente a configuração do iptables, mesmo usando o fail2ban.

Edit: Se configurar as receitas do Chef não é o seu prato (: D), eu tenho uma alternativa. Acabei de criar um projeto FOSS chamado haproxy-autoscaling , hospedado no bitbucket, se alguém quiser verificá-lo. Está quase terminado. Já utilizável, mas precisa de algum manuseio manual.

URL: link

    
por 17.12.2014 / 06:19
0

Bloquear os ip's no iptables é um bom plano, pois minimizará o impacto em seu servidor. Mas as regras no iptables estão lá para sempre, então você precisa de algo mais para gerenciar a expiração da lista negra. fail2ban parece ser a solução mais fácil para isso. Outro problema é que o IP de origem será o IP interno do ELB, então você precisa fazer a filtragem em um grupo de segurança na frente do ELB.

    
por 12.12.2014 / 03:33
0

O IP do cliente original é fornecido pela ELB no X-Forwarded -Para cabeçalho.

Você pode usar o X-Forwarded-For em suas regras de reescrita .

    
por 12.12.2014 / 04:38