Eu tenho um servidor Ubuntu 14.04 com o Apache 2.4.7 sendo executado lá, hospedando um site na porta 80.
Hoje descobri que todas as solicitações para 80 portas redirecionam para outro site com resposta:
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.2
Date: Thu, 15 Jan 2015 13:37:18 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: some.website.com
Eu não tenho o nginx instalado, o bit ainda procurou por um processo nginx com o comando ps ax | grep nginx
com um resultado: 25759 pts/1 S+ 0:00 grep --color=auto nginx
. Não parecia o processo ofensivo, mas ainda: kill 25759
produziu -bash: kill: (25759) - No such process
Em seguida, parei o apache (ele não mudou nada sobre redirecionamentos), e decidi ver, quem escuta a 80 porta com o comando lsof -i :80 | grep LISTEN
que não me disse nada, e se listo todos os listeners com o comando: lsof -i | grep LISTEN
Eu obtenho a seguinte lista:
sshd 673 root 3u IPv4 7078 0t0 TCP *:ssh (LISTEN)
tinyproxy 972 root 0u IPv4 7654 0t0 TCP *:9582 (LISTEN)
Xtightvnc 1173 root 0u IPv4 7914 0t0 TCP *:x11-1 (LISTEN)
Todos eles são entidades conhecidas. Se eu iniciar o apache, a seguinte linha também está lá:
apache2 25926 root 4u IPv6 139312 0t0 TCP *:http (LISTEN)
Em seguida, pensei sobre o iptables, mas iptables -L
mostra uma lista vazia:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Então, a questão é como encontrar o que causa esse redirecionamento (verificado em vários computadores diferentes com provedores de internet diferentes) e removê-lo?
Atualização:
1. iptables -t nat -L
produz esta lista:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
Como obtive a resposta de redirecionamento que você colou na sua pergunta? Cinco maneiras:
-
No computador remoto via Google Chrome e Proxy Charles
Pedido com ip:
GET / HTTP/1.1
Host: 37.139.9.156
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US;q=0.6,en;q=0.4
A resposta foi descrita no início da pergunta.
-
Mas o computador remoto via Google Chrome e o proxy Charles com hostname estavam corretos (sem redirecionamento). Pedido:
GET / HTTP/1.1
Host: hostname
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US;q=0.6,en;q=0.4
-
No servidor via curl -v http://ip
* Rebuilt URL to: http://ip/
* Hostname was NOT found in DNS cache
* Trying ip...
* Connected to ip (ip) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: ip
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
* Server nginx/1.6.2 is not blacklisted
< Server: nginx/1.6.2
< Date: Thu, 15 Jan 2015 14:25:20 GMT
< Content-Type: text/html
< Content-Length: 184
< Connection: keep-alive
< Location: http://www.sputton.com/
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
* Connection #0 to host ip left intact
-
No servidor via curl -v http://localhost
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Thu, 15 Jan 2015 14:24:48 GMT
* Server Apache/2.4.7 (Ubuntu) is not blacklisted
< Server: Apache/2.4.7 (Ubuntu)
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: Authorization
< Access-Control-Allow-Methods: POST, GET, OPTIONS
< CACHE-CONTROL: no-cache
< EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT
< PRAGMA: no-cache
< CONTENT-LENGTH: 7134
< Vary: Accept-Encoding
< Content-Type: text/html; charset=utf-8
< Correct body output
* Connection #0 to host localhost left intact
-
No servidor via curl -v http://hostname
* Rebuilt URL to: hostname
* Hostname was NOT found in DNS cache
* Trying ip...
* Connected to hostname (ip) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: hostname
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Thu, 15 Jan 2015 14:32:01 GMT
* Server Apache/2.4.7 (Ubuntu) is not blacklisted
< Server: Apache/2.4.7 (Ubuntu)
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: Authorization
< Access-Control-Allow-Methods: POST, GET, OPTIONS
< CACHE-CONTROL: no-cache
< EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT
< PRAGMA: no-cache
< CONTENT-LENGTH: 7134
< Vary: Accept-Encoding
< Content-Type: text/html; charset=utf-8
< Correct body output
* Connection #0 to host hostname left intact
Portanto, a solicitação de páginas por meio do nome do host funciona, mas a solicitação ip direta falha.