Permitir acesso ao servidor da web somente através do CloudFlare (iptables)


O Cloudflare é ótimo para proteger sites de diferentes bandidos de computadores - hackers. No entanto, se eles reconhecerem de alguma forma o IP original do servidor da web no qual o site está localizado, eles tentarão pelo menos atacá-lo por IP, ignorando o proxy. Você pode bloquear redirecionamentos, enviar redefinições 444 NGINX ao tentar acessar domínios inexistentes, mas a solução mais difícil é a seguinte: abra o tráfego http / https no servidor apenas para os endereços IP do nosso proxy de segurança.

A propósito, esse método também pode tornar parcialmente inútil todos os tipos de sites como o crimeflare.org . Bem, o “detetive” descobriu que o domínio já foi acessível por esse IP - verificar se ele ainda está lá tentando fazer login no IP: 443 ou IP: 80 será inútil.
E se você fechar todas as portas do servidor, desativar o ICMP e permitir apenas o acesso através do IPMI / VNC, ninguém saberá que há algo em nosso IP.

Vamos fazer isso no iptables.

O CloudFlare possui um grande número de endereços, mas todos são compactados em um pequeno número de sub-redes. Antecipando tal solicitação, os caras publicaram um artigo dizendo onde você pode encontrar as sub-redes atuais e até o que escrever nas tabelas de ip. Um problema é que isso deve ser feito manualmente, o que é bastante inconveniente e não confiável: o endereçamento no CloudFlare pode mudar com o tempo e, algum dia, pode acontecer que o proxy localizado nos novos endereços não seja permitido no seu servidor. Dessa forma, os clientes cujas sessões passarão por esses novos endereços não poderão acessar seu site.

Felizmente, o problema é automatizado. Então:

1. Proibimos todo o tráfego HTTP / HTTPS no iptables:

iptables -I INPUT 1 -p tcp -m multiport --dports http,https -j DROP 

2. Coloque em algum lugar, por exemplo, via /root/cloudflare-update.sh o script cloudflare-update.sh com o seguinte conteúdo:

 #!/bin/bash while read ip ; do iptables -D INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT ; done <<< "$(curl https://www.cloudflare.com/ips-v4)" while read ip ; do iptables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT ; done <<< "$(curl https://www.cloudflare.com/ips-v4)" iptables-save > /etc/iptables/rules.v4 

Ou seja, excluímos todas as entradas existentes adicionadas anteriormente, adicionamos tudo o que está na lista de endereços do CloudFlare. Dessa forma, evitamos regras duplicadas. Até o final - salve.

3. Tornamos o script executável:

 chmod +x /root/cloudflare-update.sh 

4. Em coroas (por exemplo, no final do arquivo / etc / crontab), adicionamos a tarefa de atualizar endereços a cada 12 horas:

 0 */12 * * * root /root/cloudflare-update.sh &> /dev/null 

Isso é tudo! Agora você pode acessar as portas 80 e 443 no servidor apenas por meio de um proxy, porque a qualquer momento, apenas endereços pertencentes ao proxy são permitidos no servidor.

Source: https://habr.com/ru/post/pt414837/


All Articles