Como nego todas as solicitações não da cloudflare?

3

Recentemente, recebi ataques de negação de serviço de vários ips de proxy, por isso instalei o cloudflare para evitar isso. Então comecei a perceber que eles estão ignorando o cloudflare, conectando-se diretamente ao endereço IP do servidor e forjando o cabeçalho do host.

Qual é a maneira mais eficaz de retornar 403 em conexões que não são dos 18 endereços IP usados pelo cloudflare?
Eu tentei deny ing explicitamente allow ing o cloudflare ips mas isso não funciona desde que eu configurei para que CF-Connecting-IP defina o ip allow tests para.

Estou usando o nginx 1.6.0.

    
por phillips1012 03.06.2014 / 03:38

3 respostas

3

A maneira mais eficaz é um firewall de hardware na frente do servidor. Ou pedindo ao seu provedor de datacenter / upstream para ajudar a atenuar o ataque.

Bloquear coisas no servidor da web ou iptables pode ajudar, mas ainda usa recursos de largura de banda e do sistema para que os ataques DoS ainda sejam possíveis. O que você quer é bloquear o tráfego o mais longe possível - assim o tráfego nunca chega ao seu servidor e não enche seu link com o resto do mundo. Um firewall de hardware pode filtrar muito, muito mais rápido que o seu servidor da web, e não usa recursos do servidor. Você desejará que eles permitam o tráfego do cloudflare, bem como do seu escritório ou de outros servidores, para quando você precisar se conectar diretamente.

Alterar o IP do servidor também pode ajudar - somente o cloudflare precisa saber o novo IP, não o publique em registros DNS públicos.

    
por 03.06.2014 / 04:44
0

A única solução que eu consegui fazer com o nginx por si só requer o nginx versão 1.9.7 ou superior.

Você pode usar o ngx_http_geo_module para identificar e retornar uma resposta 403 para qualquer ip que não seja ip da cloudflare.

Usando este bloco geográfico.

geo $realip_remote_addr $cloudflare_ip {
    default          0;
    103.21.244.0/22  1;
    103.22.200.0/22  1;
    103.31.4.0/22    1;
    104.16.0.0/12    1;
    108.162.192.0/18 1;
    131.0.72.0/22    1;
    141.101.64.0/18  1;
    162.158.0.0/15   1;
    172.64.0.0/13    1;
    173.245.48.0/20  1;
    188.114.96.0/20  1;
    190.93.240.0/20  1;
    197.234.240.0/22 1;
    198.41.128.0/17  1;
    199.27.128.0/21  1;
    2400:cb00::/32   1;
    2405:8100::/32   1;
    2405:b500::/32   1;
    2606:4700::/32   1;
    2803:f800::/32   1;
    2c0f:f248::/32   1;
    2a06:98c0::/29   1;
}

Você pode adicionar isso ao seu bloco de servidores.

if ($cloudflare_ip != 1) {
    return 403;
}

Que retornará um 403 para qualquer conexão que não seja originária de um $cloudflare_ip .

Isso funciona porque estou usando $realip_remote_addr no bloco geográfico que mantém o endereço do cliente original ao usar real_ip_header CF-Connecting-IP .

    
por 15.01.2017 / 19:36
0

Como descrito aqui, você só pode permitir endereços IP do cloudflare.

link

# https://www.cloudflare.com/ips
# IPv4
allow 199.27.128.0/21;
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;

# IPv6
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
    
por 08.12.2017 / 14:10