Estamos usando o proxy Cloudflare, então o IP real está oculto. Mas se você souber o IP real, ainda poderá acessar o site usando-o. Existe uma maneira de limitar o acesso por esse IP?
Quero dizer:
by domain: https://some-domain.com -> OK
by proxy IP: https://1.2.3.4 -> OK
by real IP: https://5.6.7.8 -> to restrict.
Ou é inútil tentar restringi-lo?
Exemplo de blocos do servidor nginx.conf:
server {
listen 80 default_server;
server_name some-domain.com;
return 301 https://$host$request_uri;
}
charset utf-8;
server {
server_name some-domain.com;
listen 443 ssl http2;
...
...
}
Você está misturando duas coisas diferentes aqui. A primeira é restringir o acesso para clientes que não têm o
Host
cabeçalho correto definido em suas solicitações (geralmente são bots, scanners de rede, etc.). Para conseguir isso, você precisa de algum tipo de bloco de servidor catch-all para negar tais solicitações. Consulte esta resposta do StackOverflow para obter exemplos.O segundo é restringir solicitações com o
Host
cabeçalho correto, mas originárias de fontes diferentes dos servidores de borda do Cloudflare. Essa é geralmente uma boa prática, pois o Cloudflare atua como um serviço anti-DDoS (e possivelmente WAF) para seu site. A lista oficial de intervalos de IP do Cloudflare está disponível em seu site: IP Ranges , ou em texto simples em endereços da web IPv4 e IPv6 . Você pode usar essa lista para negar essas solicitações usando ongx_http_geo_module
seguinte:A lista de intervalos de IP é atualizada periodicamente, então eu uso o seguinte script para gerar a lista de intervalos automaticamente:
Você pode então incluir esta lista na sua configuração nginx da seguinte maneira:
Você também pode usar a lista de intervalos de IP para restaurar os IPs originais dos visitantes (veja o artigo oficial "Restaurando IPs originais dos visitantes" do Cloudflare para detalhes). Na verdade, hoje em dia eu uso outro script para gerar automaticamente dois arquivos:
Você pode usar o segundo arquivo da seguinte maneira:
Pode haver casos em que essa configuração seja necessária ( aqui está um problema que encontrei uma vez).