6 votes

Interprétation du fichier access.log d'Apache

Dans le fichier journal d'apache (access.log), je trouve des entrées comme les suivantes :

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"

Dont la signification est claire : Le client avec l'IP 10.20.30.40 a appliqué une méthode HTTP GET sur /index.php (c'est à dire http://mysite.org/index.php ) reçoit un code d'état 404 en utilisant Opera comme client/navigateur. Ce que je ne comprends pas, ce sont des entrées comme celles qui suivent :

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"

Donc ici, ce que je vois, c'est que quelqu'un (client avec l'IP 174.34.231.19) a accédé à http://www.siasatema.com et j'ai obtenu un code d'état HTTP 200( ?). Cela n'a aucun sens pour moi... la seule interprétation à laquelle je peux penser est que mon serveur Apache agit comme un proxy ! Voici d'autres requêtes qui n'ont pas mon site comme destination...

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

Je pense que tout cela est lié à une sorte d'attaque ou d'abus du serveur. Quelqu'un pourrait-il m'expliquer ce qui se passe et comment faire face à cette situation ?

Mise à jour 1 :

J'ai désactivé mod_proxy pour être sûr que je n'ai pas un proxy ouvert :

# a2dismod proxy

D'où vient le message :

Module proxy already disabled

Je me suis assuré qu'il n'y a pas de fichier proxy.conf sous $APACHE/mods-enabled . Finalement, j'ai configuré sur mon navigateur (Mozzila) mon IP comme un proxy et j'ai essayé d'accéder à http://google.com . Je n'ai pas été redirigé vers google.com mais ma page Web est apparue. La même chose s'est produite lorsque j'ai essayé d'accéder à http://a.b ( !). Mon serveur ne fonctionne donc pas vraiment comme un proxy puisqu'il ne transmet pas les demandes... Mais je pense que ce serait mieux si, d'une manière ou d'une autre, je pouvais le configurer pour qu'il renvoie une réponse de type code d'état 403 .

Voici mon fichier de configuration 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>

Mise à jour 2 :

En utilisant un bloc, je limite l'utilisation d'autres méthodes que GET et 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>

Maintenant, les méthodes autres que GET sont interdites (403). Ma seule question maintenant est de savoir s'il existe une astuce pour faire sortir ceux qui essaient d'utiliser mon serveur comme un proxy...

6voto

Ted Mielczarek Points 1996

Ok, je peux obtenir ce message exact en utilisant le code Python suivant

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

Ce qui me donne l'entrée de journal

192.168.0.28 - - [18/Mar/2011:14:40:40 +0200] "GET http://www.siasatema.com HTTP/1.0" 200 453 "-" "Python-urllib/1.17"

D'ailleurs, tout ce que je reçois en retour est le contenu de ma page web par défaut,

Donc, si quelque chose utilise un proxy sur votre serveur web, il s'agit probablement de pirates qui cherchent des proxys ouverts, mal configurés, pour se connecter à un autre site et en abuser. Pour arrêter cela, configurez :-

ProxyRequests Off 

D'ailleurs, je peux reproduire les autres en faisant

$ nc ubuntuvm 80
telnet 64.12.244.203 80

Ce qui donne :- 192.168.0.28 - - [18/Mar/2011:14:58:47 +0200] "telnet 64.12.244.203 80" 400 505 "-" "-"

4voto

Sacx Points 2531

Votre serveur est un proxy ouvert, ce qui constitue un problème de sécurité. Les spammeurs peuvent envoyer des mails à travers votre serveur. D'autres peuvent regarder de la pornographie enfantine à partir de votre serveur. Réparez-le dès que possible.

Changement

ProxyRequests Off

,dans la configuration du proxy, pour le corriger.

2voto

jcollum Points 10236

Je ne pense pas que votre apache soit un proxy ouvert.

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"

Il se peut que quelqu'un envoie une requête HTTP à votre serveur apache en utilisant www.siasatema.com comme nom d'hôte dans la requête. Le serveur apache servira dans ce cas la page par défaut (le premier hôte virtuel). Vous pouvez configurer apache pour qu'il rejette ce type de requête ou qu'il redirige vers votre page principale.

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

Ce sont des requêtes infructueuses qu'Apache a écartées.

1voto

Arvi Points 11

Je pense que le cas est très simple : quelqu'un arrive sur votre serveur, avec une IP correcte mais pas avec le nom que vous attendez, et obtient la page d'accueil. Cela peut être généré par exemple avec ce qui suit :

Un utilisateur à large bande ajoute à son fichier hosts (/etc/hosts, ou /Windows/system32/drivers/etc/hosts) l'entrée suivante

aa.bb.cc.dd rubbishrubbishrubbish.com

où aa.bb.cc.dd est votre adresse IP, et après cela utilise n'importe quel navigateur pour accéder à http://rubbishrubbishrubbish.com

Vous verrez dans le fichier journal l'accès, et le "GET" pour le / de rubbishrubbishrubbish.com. Les installations apache typiques ne sont pas intéressées par la partie nom d'hôte de l'URL, mais seulement par le reste de celle-ci, renvoyant ainsi votre page d'accueil.

Notez également que votre serveur peut bien sûr être accessible en utilisant son adresse IP ou son FQDN, ou d'éventuels surnoms, qui (à moins d'être forcés explicitement) n'ont pas besoin d'être connus du serveur apache. Le serveur web de ma maison peut être atteint avec plusieurs noms sur ipv4 et ipv6, mais mon serveur lui-même ne connaît aucun de ces noms de domaine.

La question qui reste est : pourquoi ? Je suppose que la réponse est : pour tester si vous agissez par procuration. Et ce n'est pas le cas. Et Python-urllib/2.4 a également été signalé comme étant un BOT (mais pas toujours).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X