1 Introduction
Apache est un serveur Web très populaire, performant, et sa conception modulaire le dote d’une grande richesse fonctionnelle. Découvrez comment le sécuriser et le rôle de ses modules.
2 Le serveur Apache
Cacher le type et la version du serveur :
Il est très facile de découvrir le type et la version d’un serveur Web en utilisant la commande suivante:
# telnet @_IP_serveur_Apache 80
Exemple :
# telnet localhost 80
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
<!DOCTYPE HTML PUBLIC « -//IETF//DTD HTML 2.0//EN »>
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p> to /index.html.en not supported.<br />
</p>
<hr>
<address>Apache/2.0.61 (Unix) PHP/4.4.8 Server at localhost.localdomain Port 80</address>
</body></html>
Connection closed by foreign host.
Un pirate apprend que le serveur Apache tourne sous un système de type « Linux/Unix » et que le langages PHP est actif.
On limite la divulgation d’information en insérant dans le fichier de configuration httpd.conf la ligne ServerTokens Prod :
# vim/usr/local/apache2/conf/httpd.conf
ServerToken Prod
Limitations contre les DoS :
De façon à limiter la portée des attaques de type Denial of Service (DoS), il est conseillé de limiter le nombre de connexions simultanées MaxClients et en particulier le nombre de connexions persistantes MaxKeepAliveRequests. Celles-ci sont apparues avec la norme HTTP 1.1. Elles
permettent d’effectuer des requêtes successives lors de la même connexion, ce qui augmente les performances du serveur. L’utilisation d’un timeout empêche les connexions sans fin.
Exemple pour un petit serveur :
MaxClients 150
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Définition d’un « virtual host »
Apache permet la définition de Virtual Host, c’est-à-dire que le même serveur peut héberger, y compris sur une même adresse IP, plusieurs sites différenciés par leur nom. Pour limiter les risques liés à une panne des serveurs DNS ou à des manipulations frauduleuses, il convient de définir le VirtualHost par une adresse IP puis de préciser son nom. <VirtualHost 194.57.201.103>
ServerName www.AdresseWeb.com
….
</VirtualHost>
Gérer ses fichiers de log
Apache permet de définir ses propres formats LogFormat pour les enregistrements dans les fichiers de log.
LogFormat « %h %l %u %t \ »%r\ » %>s %b \ »%{Referer}i\ » \ »%{User-Agent}i\ » » combined
LogFormat « %h %l %u %t \ »%r\ » %>s %b » common
LogFormat « %{Referer}i -> %U » referer
LogFormat « %{User-agent}i » agent
….
Sécurisation du serveur Apache (299 Ko) (Cours DOC)