evita X-Forwarded-Para spoofing em haproxy

1

Ontem fomos atingidos por um ataque DDoS que atingiu nossos back-ends do servidor da Web (apache2). O frontend consiste em conexões de balanceamento de carga haproxy para os servidores da web. No access.log do apache vimos milhares de solicitações de dois ips e depois de algumas horas percebemos que eram falsas / falsificadas e não eram os ips reais.

Por razões de esclarecimento, fizemos um "curl GET /" com um ip de "137.137.136.136" e de fato esse é o ip (falso) que vimos em nossos weblogs

Agora, em outro cluster em que usamos nginx como proxy reverso, a alteração / criação do cabeçalho X-Forwarded-For não funciona. Significado, mesmo se você digitar um ip aleatório no cabeçalho específico nginx ainda vai passar o ip correto para o servidor web backend?

Isso tem a ver com haproxy?
Qualquer um pode confirmar que cabeçalhos X-Forwarded-For criados podem passar pelo haproxy?
Por que isso não está acontecendo no nginx?
Como você evita isso?

    
por giomanda 13.08.2017 / 01:43

1 resposta

5

No haproxy, se você não tem nada para impedir isso, isso é normal, eu não sei ngnix, mas eu resolvi desta forma com haproxy:

nas opções padrão:

forwardfor

Na minha definição de frontend haproxy, tenho:

reqidel ^X-Forwarded-For:.*

Isso exclui X-Forwarded-For no pedido http se o cliente tentar falsificar e haproxy retornar o cabeçalho real na resposta http com endereço IP verdadeiro

Se você quiser usar X-Forwarded-For para verificar o endereço IP de clientes http, será necessário excluí-lo se existir na solicitação http, porque o cliente que usa um proxy http em algum momento definiu o endereço IP local em X-Forwarded-For

    
por 13.08.2017 / 02:02