Voici ce qu'un pirate peut apprendre sur ton serveur via la séquence de code suivante :
telnet localhost 80
Trying 83.167.35.48...
Connected to localhost.
Escape character is '^]'.
GET /page-qui-n-existe-pas.html HTTP/1.0
HTTP/1.1 404 Not Found
Date: Fri, 17 Dec 2010 10:13:46 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch
Content-Length: 342
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /page-qui-n-existe-pas.html was not found on this server.</p>
<hr>
<address>Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch Server at localhost Port 80</address>
</body></html>
Connection closed by foreign host.
1 - la version de ton serveur Apache est 2.2.8
2 - le service Apache tourne sous une distribution Ubuntu
3 - mod_php est activé sur ce service en version 5.2.4
Le but ici est de limiter la divulgation d'informations en insérant le code suivant :
ServerTokens Prod
ServerSignature Off
TraceEnable Off
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</IfModule>
dans un des fichiers de configuration disponible en fonction de ta version d'apache :
/etc/apache/httpd.conf
/etc/apache/apache.conf
/etc/apache2/httpd.conf
/etc/apache2/apache2.conf
/etc/apache2/conf.d/security
...
ServerTokens Prod
Cette directive va limiter les informations au niveau de l'entête HTTP
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch
va devenir ...
Server: Apache
ServerSignature Off
va supprimer la seciotn de pied de page...
<address>Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch Server at localhost Port 80</address>
Par défaut sous Apache, la méthode TRACE est activée ce qui peut conduire à des vulnérabilités de type XSS :
telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
TRACE / HTTP/1.0
HTTP/1.1 200 OK
Date: Thu, 16 Dec 2010 11:08:56 GMT
Server: Apache (ServerTokens Prod)
Connection: close
Content-Type: message/http
TRACE / HTTP1.1
Connection closed by foreign host.
Ce trou de securité peut etre comblé, en ajoutant la directive suivante dans le fichier de conf apache :
#pour la version d'apache >= 1.3.34
TraceEnable Off
#pour les versions ne supportant pas la directive ci dessus...
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</IfModule>
Voila a partir de maintenant, ton serveur est relativement bien protégé...
telnet localhost 80
Trying 213.152.4.93...
Connected to localhost.
Escape character is '^]'.
GET /page-qui-n-existe-pas.html HTTP/1.0
HTTP/1.1 404 Not Found
Date: Fri, 17 Dec 2010 10:35:05 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 218
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL page-qui-n-existe-pas.html was not found on this server.</p>
</body></html>
Connection closed by foreign host.
Les seules informations qui nous sont delivrés :
- le service http est Apache
- page-qui-n-existe-pas.html n'existe pas
Attention tout de même a bien maintenir Apache a jour et aux directives contenues dans la configuration des virtualhosts.
Aucun commentaire:
Enregistrer un commentaire