Qualquer maneira de bloquear spoofing de cabeçalho de host de endereço IP?

1

Já adicionei o seguinte à minha configuração nginx para lidar com domínios falsificados:

    if ($host !~* ^(.*example.org|\d+\.\d+\.\d+\.\d+)$ ) {
            return 444;
    }

No momento, ele coloca endereços IP na lista de permissões, pois eu preciso aceitá-los para determinadas solicitações.

Isso está por trás de um ELB da AWS, então ele precisa responder a um endereço IP também.

Idealmente, gostaria que apenas aceitasse o seu próprio público e o seu próprio endereço IP privado. No entanto, não quero codificar isso na configuração, pois são instâncias da AWS.

Então, acho que estou me perguntando se alguém encontrou uma solução para bloquear cabeçalhos de host falsificados que limita especificamente os IPs desejados.

A melhor idéia que posso criar é um script que gere os arquivos de configuração, adicione os IPs corretos na inicialização e, em seguida, copie-os para a pasta nginx config. Mas eu sinto que deve haver uma solução mais elegante que não me obrigue a escrever um script de inicialização.

O porquê

Como alguém perguntou por que eu quero fazer isso, basicamente tenho dois objetivos:

  • elimine os erros do Django que recebo como resultado de erros de SuspiciousOperation do HOST_HEADER
  • impede que os bots (que constituem 99,9% dessas solicitações de falsificação) atinjam a camada de meu aplicativo da web.
por Jordan Reiter 17.09.2014 / 16:24

1 resposta

4

Sua melhor opção é, de fato, gerar uma parte do arquivo de configuração e incluí-la, pois não há como o nginx saber os IPs autorizados no cabeçalho do Host sem ela.

server {

    listen 80;

    server_name mypublicdomain.com anotherdomain.com;
    include conf.d\domain-ips;  

    [ ... ]        

}

Com o arquivo domain-ips contendo:

server_name x.x.x.x; # Public IP
server_name x.x.x.x; # Private IP
    
por 20.09.2014 / 12:19