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 ...