Nginx muitos arquivos abertos DDOS

2

Estou tendo um problema com ddos no momento. Meu servidor web está por trás de um proxy reverso (cloudflare), que eu sei que não deve ser invocado com o seu plano livre. O Cloudflare está no modo sob ataque, o que faz com que os visitantes concluam uma verificação do navegador. Acessar o site por meio de IP direto só os redirecionará. Estou usando o recurso de limitação de solicitações do nginx, mas isso não parece ajudar, pois o invasor está usando uma enorme lista de proxy. Não há grandes bandeiras vermelhas na solicitação, então não tenho certeza se um WAF ajudaria. O que é interessante, porém, é que quando eu olho no log de erros; Eu vejo que o que está causando o DOS é o seguinte erro (que o arquivo é completamente preenchido com)

2015/09/03 19:22:12 [crit] 3427#0: accept4() failed (24: Too many open files)
Estou pensando agora que eles estão atacando através do IP direto, mas o redirecionamento não é suficiente para impedi-los de atingir o limite de arquivos abertos. Existe alguma coisa que eu possa fazer para parar isso?

Obrigado

EDIT: Eu não acredito que eles estão atacando o IP diretamente porque o software que eu tenho rodando no site ainda detectou a enorme quantidade de tráfego que o invasor causou.

EDIT: Aqui estão algumas linhas do tráfego que ele está enviando por spam. O WAF out-of-the-box do cloudflare bloquearia isso?

87.135.112.116 - - [05/Sep/2015:14:47:53 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; Media Center PC 6.0)"

113.22.35.98 - - [05/Sep/2015:14:47:53 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16"

2.50.56.236 - - [05/Sep/2015:14:47:54 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"

93.170.133.26 - - [05/Sep/2015:14:47:54 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0"
    
por user3161223 04.09.2015 / 00:46

1 resposta

2

Muitos arquivos abertos significam que você atingiu a variável ulimit para o nginx definido pelo padrão em /etc/nginx/nginx.conf (se estiver usando o linux baseado em RHEL). O que isto significa é que o nginx tem muitas conexões abertas e não pode servir mais nenhuma requisição. Você pode corrigir isso aumentando a seguinte variável:

worker_rlimit_nofile <enter value here>;

você pode substituir as informações nos colchetes angulares pelo novo valor (o padrão é 1024). Isso aumentará sua contagem de arquivos abertos (e, portanto, aumentará sua contagem de conexões abertas, já que cada conexão é um arquivo).

Três coisas:

  1. calcule os limites do seu servidor (isso dependerá do número de CPUs e da quantidade de memória RAM que você possui).

  2. o worker_rlimit_nofile fica no topo do seu arquivo de configuração logo abaixo da variável "worker_processes".

  3. depois de definir a variável no arquivo, você precisará reiniciar o nginx.

por 04.09.2015 / 01:48