Por que meu servidor nginx recebe solicitações segmentando ads.yahoo.com?

4

Eu tenho um proxy nginx voltado para a Internet pública. Há alguns dias, comecei a receber uma quantidade torrencial de solicitações, segmentando URLs inválidas para meu domínio.

Um trecho de nginx access.log:

216.245.222.172 - - [07/Feb/2014:10:45:26 +0000] "GET http://ads.yahoo.com/st?ad_type=iframe&ad_size=300x250&section=5306841&pub_url=${PUB_URL} HTTP/1.0" 301 184 "http://www.echogap.com/index.php?option=com_content&view=article&id=1383:Credit-Report---How-Do-Late-Payments-Affect-My-Credit-Report-And-Score?&catid=154" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8"

Alguns pontos precisam de ajuda para entender / resolver:

  • Por que o URL da solicitação contém o URL completo com o nome do domínio, em vez do caminho usual?
  • Como é possível que as solicitações que nem sequer segmentam meu domínio cheguem ao meu servidor (ou seja, ads.yahoo.com)?
  • Qual seria a melhor maneira de evitar atender a essas solicitações? Eu acho que a lista negra dos ips originados está fora de questão, já que os pedidos vêm de muitos endereços diferentes.
  • O cenário descrito significa um ataque explícito?
por ccortezia 07.02.2014 / 13:01

1 resposta

7

Parece que eles estão tentando usar seu servidor da web como um proxy aberto . Contanto que você não veja seus servidores respondendo com 200 OK , você não deve se preocupar.

ATUALIZAÇÃO:

Embora possa haver maneiras de lidar com isso com a funcionalidade integrada do nginx, achei mais fácil instalar / ativar mod_security e deixe-o lidar com este e outros ataques desagradáveis. Como você verá nos logs abaixo, alguém está tentando acessar a wikipedia através do meu servidor, o mod_security sabe que isso é uma anomalia e toma uma ação apropriada (Retorna uma resposta 403 proibida). Este é um servidor Apache mas deve ser exatamente o mesmo em nginx.

--817ee627-A--
[03/Feb/2014:22:26:01 +0300] Uu-tScDjiOsAAALeENQAAAAA 178.19.107.26 52735 1.2.3.4 80
--817ee627-B--
GET http://wikipedia.pl HTTP/1.1
Host: wikipedia.pl
Accept: */*
Proxy-Connection: Keep-Alive

--817ee627-F--
HTTP/1.1 403 Forbidden
Content-Length: 202
Connection: close
Content-Type: text/html; charset=iso-8859-1

--817ee627-E--

--817ee627-H--
Message: Access denied with code 403 (phase 1). Match of "rx ^(?i:(?:[a-z]{3,10}\s+(?:\w{3,7}?://[\w\-\./]*(?::\d+)?)?/[^?#]*(?:\?[^#\s]*)?(?:#[\S]*)?|connect (?:\d{1,3}\.){3}\d{1,3}\.?(?::\d+)?|options \*)\s+[\w\./]+|get /[^?#]*(?:\?[^#\s]*)?(?:#[\S]*)?)$" against "REQUEST_LINE" required. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_20_protocol_violations.conf"] [line "52"] [id "960911"] [rev "2"] [msg "Invalid HTTP Request Line"] [data "GET http://wikipedia.pl HTTP/1.1"] [severity "WARNING"] [ver "OWASP_CRS/2.2.6"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/INVALID_REQ"] [tag "CAPEC-272"]
Action: Intercepted (phase 1)
Stopwatch: 1391455561096692 260049 (- - -)
Stopwatch2: 1391455561096692 260049; combined=104238, p1=104194, p2=0, p3=0, p4=0, p5=43, sr=104028, sw=1, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.7.3 (http://www.modsecurity.org/); OWASP_CRS/2.2.6.
Server: Apache
Engine-Mode: "ENABLED"

* 1.2.3.4 = Eu substituí meu endereço IP por esse IP falso. Eu não preciso de mais nenhum pacote estranho batendo na minha porta:)

    
por 07.02.2014 / 13:53

Tags