interpretação Apache access.log

6

No arquivo de log do apache (access.log), eu encontro entradas de log como as seguintes:

10.20.30.40 - - [18/Mar/2011:02:12:44 +0200] 
"GET /index.php HTTP/1.1" 404 505 "-" "Opera/9.80 (Windows NT 6.1; U; en) 
Presto/2.7.62 Version/11.01"

Cujo significado é claro: O cliente com IP 10.20.30.40 aplicou um método HTTP GET em /index.php (isto é, link ) recebendo um código de status 404 usando o Opera como cliente / navegador. O que não entendo são entradas como as seguintes:

174.34.231.19 - - [18/Mar/2011:02:24:56 +0200] 
"GET http://www.siasatema.com HTTP/1.1" 200 469 "-" 
"Python-urllib/2.4"

Então, o que eu vejo é que alguém (cliente com IP 174.34.231.19) acessou o link e obteve um código de status HTTP 200 (? ). Não faz sentido para mim ... a única interpretação que posso pensar é que o meu servidor apache age como proxy! Aqui estão algumas outras solicitações que não têm meu site como destino ...

187.35.50.61 - - [18/Mar/2011:01:28:20 +0200] "POST http://72.26.198.222:80/log/normal/ HTTP/1.0" 404 491 "-" "Octoshape-sua/1010120"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "CONNECT 64.12.244.203:80 HTTP/1.0" 405 556 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "open 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:04 +0200] "telnet 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:09 +0200] "64.12.244.203 80" 400 301 "-" "-"

Acredito que tudo isso esteja relacionado a algum tipo de ataque ou abuso do servidor. Alguém poderia explicar o que está acontecendo e como lidar com essa situação?

Atualização 1:

Desabilitei mod_proxy para ter certeza de que não tenho um proxy aberto:

# a2dismod proxy

De onde recebi a mensagem:

Module proxy already disabled

Assegurei que não há arquivo proxy.conf em $APACHE/mods-enabled . Por fim, eu coloquei no meu navegador (Mozzila) o meu IP como proxy e tentei acessar o http://google.com . Não fui redirecionado para o google.com, mas minha página da web apareceu. O mesmo aconteceu ao tentar acessar o link (!). Então, meu servidor não funciona como um proxy, já que ele não encaminha as solicitações ... Mas eu acho que seria melhor se de alguma forma eu pudesse configurá-lo para retornar um código de status 403 .

Aqui está o meu arquivo de configuração do Apache:

<VirtualHost *:80>
    ServerName mysite.org
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/  
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log    
    LogLevel warn    
    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

Atualização 2:

Usando um bloco, eu restringi o uso de outros métodos além de GET e POST ...

<Limit POST PUT CONNECT HEAD OPTIONS DELETE 
  PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Order deny,allow
  Deny from all
</Limit>
<LimitExcept GET>
  Order deny,allow
  Deny from all
</LimitExcept>

Agora, outros métodos que o GET é proibido (403). Minha única pergunta agora é se existe algum truque para inicializar aqueles que tentam usar meu servidor como um proxy ...

    
por Pantelis Sopasakis 18.03.2011 / 13:18

4 respostas

5

Ok, bem, posso obter essa mensagem de log exata usando o seguinte código python

import urllib
proxies = {'http':'http://myapacheserevr'}
file_handle = urllib.urlopen('http://www.siasatema.com',proxies=proxies)

O que me dá a entrada de log

192.168.0.28 - - [18 / Mar / 2011: 14: 40: 40 +0200] "Obtenha link HTTP / 1.0" 200 453 "-" "Python-urllib / 1,17"

Incidentemente, tudo que eu recebo de volta disso é o conteúdo da minha página da Web padrão,

Então, sim, algo está fazendo proxy por meio de seu servidor da Web. Provavelmente, é o fato de os hackers procurarem proxies abertos e mal configurados para se conectarem e abusarem de outro site. Para parar, defina: -

ProxyRequests Off 

Incidentalmente eu posso replicar o outro fazendo

$ nc ubuntuvm 80
telnet 64.12.244.203 80

Que dá: - 192.168.0.28 - - [18 / Mar / 2011: 14: 58: 47 +0200] "telnet 64.12.244.203 80" 400 505 "-" "-"

    
por 18.03.2011 / 13:44
4

Seu servidor é um proxy aberto, que é um problema de segurança. Os spammers podem enviar e-mails através do seu servidor. Outros podem olhar para criança pr0n do seu servidor. Corrigi-lo o mais cedo possível.

Alterar

ProxyRequests Off

, na configuração de proxy, para corrigir isso.

    
por 18.03.2011 / 13:34
2

Eu não acho que o seu apache seja um proxy aberto.

174.34.231.19 - - [18/Mar/2011:02:24:56 +0200] "GET http://www.siasatema.com HTTP/1.1" 200 469 "-" "Python-urllib/2.4"

Pode ser alguém que está enviando uma solicitação HTTP para seu servidor apache usando www.siasatema.com como nome do host na solicitação. O servidor apache servirá neste caso a página padrão (o primeiro host virtual). Você pode configurar o apache para descartar esse tipo de solicitação ou para redirecionar para sua página principal.

187.35.50.61 - - [18/Mar/2011:01:28:20 +0200] "POST http://72.26.198.222:80/log/normal/ HTTP/1.0" 404 491 "-" "Octoshape-sua/1010120"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "CONNECT 64.12.244.203:80 HTTP/1.0" 405 556 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:29:59 +0200] "open 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:04 +0200] "telnet 64.12.244.203 80" 400 506 "-" "-"
87.117.203.177 - - [18/Mar/2011:01:30:09 +0200] "64.12.244.203 80" 400 301 "-" "-"

Essas são solicitações malsucedidas que o apache descartou.

    
por 18.03.2011 / 14:55
1

Eu acredito que o caso é muito simples: alguém chega ao seu servidor, com o IP correto, mas não com o nome que você espera, e recebe a primeira página. Isso pode ser gerado por exemplo com o seguinte:

Um usuário de banda larga adiciona ao seu arquivo hosts (/ etc / hosts, ou / windows / system32 / drivers / etc / hosts) a entrada

aa.bb.cc.dd rubbishrubbishrubbish.com

em que aa.bb.cc.dd é o seu endereço IP e, depois disso, usa qualquer navegador para acessar o link

Você verá no arquivo de log o acesso e o "GET" para o / do rubbishrubbishrubbish.com. As instalações típicas do apache não estão interessadas na parte do nome do host da URL, mas apenas no restante, retornando sua página inicial.

Note também que o seu servidor pode obviamente ser acessado usando seu endereço IP ou FQDN, ou possíveis apelidos, que (a menos que sejam forçados explicitamente) não precisam ser conhecidos pelo servidor apache. Meu servidor da web pode ser acessado com vários nomes em ipv4 e ipv6, mas o meu próprio servidor não conhece nenhum desses nomes de domínio.

A questão restante é: por quê? Eu acho que a resposta é: testar se você age como proxy. E você não. E o Python-urllib / 2.4 também foi relatado como um BOT (mas nem sempre).

    
por 20.05.2013 / 09:44