Como associar solicitações de DNS às solicitações ao servidor web que hospeda esse nome de domínio?

Como associar solicitações de DNS às solicitações ao servidor web que hospeda esse nome de domínio?

Registramos um nome de domínio (digamos 'exemplo.com') e o que queremos é ver quem está tentando resolver o nome de domínio e que tipo de solicitações ele envia ao servidor web desse nome de domínio.

Para isso, configuramos um servidor de nomes e coletamos os logs do BIND para descobrir quem está consultando o servidor de nomes para resolver 'example.com' (não nos importamos com os casos em que as pessoas resolvem o nome de domínio pelo cache dados nos resolvedores recursivos). Também coletamos os logs do servidor web Apache. Mas o problema é que não conseguimos descobrir qual solicitação de DNS corresponde a qual solicitação de servidor web?

Para mapear esses dois logs juntos, estava pensando em criar um subdomínio aleatório e retorná-lo como o CNAME de example.com para cada solicitação de DNS e, em seguida, configurar o Apache para redirecionar todos esses subdomínios para a página principal 'example.com'. então, se esse subdomínio específico for solicitado por alguém, eu sei qual é a consulta DNS correspondente.

É a maneira certa de fazer isso? Existe alguma outra maneira de fazer isso?

Agradeço qualquer pensamento ou ideia.

Responder1

Você não pode correlacionar o endereço IP.

Isso ocorre porque seu servidor de nomes autoritativo é consultado por servidores de nomes recursivos, e não diretamente por clientes finais. Assim, você obterá o endereço IP dos últimos servidores de nomes recursivos (eles podem ser encadeados) usados ​​pelo cliente.

Mesmo com a opção EDNS Subnet Client você obterá, na melhor das hipóteses, um bloco de IP, não o verdadeiro IP do cliente.

Da mesma forma, no front HTTP, seu servidor web não é necessariamente contatado diretamente pelo cliente, ele pode passar por um proxy.

Já respondi à sua outra pergunta ligada a essa com algumas dicas:Podemos atualizar o CNAME por solicitação? Veja especialmente o último parágrafo e todos os estudos feitos por Geoff Huston.

Você tem outra maneira: basta fornecer a todos, www.example.commas inserir no conteúdo alguma coisa dinâmica (seja uma imagem de 1x1 pixels ou um link para um arquivo CSS ou JS), com algum token exclusivo na parte do nome do host. Isso pode ser vinculado aos seus servidores de nomes com um curinga. Sem nenhum CNAME você poderá correlacionar facilmente o acesso:

  • algum cliente vai parahttp://www.example.com/
  • na resposta, o servidor da web adiciona um <img src="https://eecahquai5thuu9ji0iepha.tracking.example.net">e registra isso em seu arquivo de log (portanto, isso vincula o token exclusivo à troca HTTP atual)
  • configure servidores de nomes autorizados de tracking.example.net(recomendo que você use uma zona separada apenas para zona, caso contrário, os curingas podem ser cheios de surpresas) para ter um registro curinga; você terá então em seus arquivos de log do servidor de nomes esse token exclusivo e os dados DNS associados (IP do resolvedor recursivo, etc.)
  • (e para ser um verdadeiro internauta) configure de fato um servidor web respondendo neste endereço com um recurso e tipo de conteúdo adequados, mesmo que seja apenas uma imagem transparente de 1x1 pixel.

informação relacionada