Recentemente, atualizei as configurações em uma instância NGINX voltada para o público para adicionar suporte para http2. Ao olhar para os logs depois para sentir com que frequência ele estava sendo usado, vi um rápido aumento em novas entradas de log não relacionadas ao site hospedado.
Primeiro, havia várias entradas fazendo CONNECT
solicitações, todas falhando com 400 erros porque a instância NGINX não está configurada como um proxy de encaminhamento. Configurei regras fail2ban para descartar o tráfego de muitos endereços IP de origem. Eu não estou particularmente preocupado com isso (por favor, adicione um comentário se eu deveria estar).
O próximo conjunto de entradas são GET
solicitações, mas em vez de ter caminhos, eles têm URLs completos como destino, por exemplo
222.223.121.231 - - [16/Jul/2020:12:57:37 +0100] "GET http://api.gxout.com/proxy/check.aspx HTTP/1.1" 404 199 "http://api.gxout.com/proxy/check.aspx" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
A maioria deles está recebendo 404 respostas novamente como esperado e eu adicionei outra regra fail2ban para descartar pacotes dos endereços IP de origem (novamente não me preocupei muito com isso).
Existem alguns mais semelhantes que estão recebendo 200 respostas e são essas que me preocupam, por exemplo
35.236.60.202 - - [16/Jul/2020:11:52:28 +0100] "GET http://www.nike.com/ HTTP/1.1" 200 396 "-" "python-requests/2.20.0"
Tenho as seguintes perguntas:
- Por que o NGINX retornaria um 200 para essa solicitação?
- Sugestões de como depurar isso?
Todo o tráfego de entrada deve ser https (obrigatório ou http2) e estou fixado em TLS 1.2 ou 1.3, então não acho que capturar o tráfego com tcpdump vá ajudar (suponho que não posso alimentar a chave privada em wireshark e decodificar os pacotes?).
A única outra opção em que posso pensar é adicionar algum log personalizado ( é possível registrar os dados de resposta no log de acesso do nginx? ) ao NGINX para registrar toda a solicitação/resposta. Eu fiz isso no passado para depurar problemas de troca de token oAuth2.0, mas apenas em um sistema em que eu tinha controle total sobre todo o tráfego de entrada.