Publié le: 2011-02-10

Introduction

Apache est libre et gratuit. Néanmoins la liberté n’accorde pas le privilège de sécurité.

Apache souffre de lacunes au niveau sécurités élémentaires, et la variété des modules que l’on peut installer dessus ne permet pas d’obtenir la parfaite garantie de la fiabilité du système. Je vais vous exposer diverses techniques de sécurité permettant à votre Apache de devenir moins sensibles aux attaques Web.

VirtualHosts et séparation des sites

Apache étant une source très courante d’attaques, nous allons tout d’abord utiliser une méthode très simple mais néanmoins permettant de complexifier votre installation dans le cas ou un hacker aurait potentiellement compris l’architecture de votre machine.

Si vous hébergez plusieurs sites avec des domaines différents, vous connaissez sûrement la notion de VirtualHost.

Cela consiste à créer plusieurs fichiers de configuration afin de séparer la configuration de chacun de vos sites.

Afin que vos sites soient réellement séparés, je vous suggère de mettre leur racine dans des rérpetoires différents et de ne mettre aucune racine commune à plusieurs sites.

Admettons que vous ayez 5 sites (A,B,C,D,E) à héberger, la fonction la plus simple serait de répartir de cette façon :

/var/www/
- ./A
- ./B
- ./C
- ./D
- ./E

Il est déjà bien plus propre de se dire que /var/www correspond au site mère de la machine (ici A).

Séparez les virtualhosts et placez les dans le dossier /var/vhosts que vous aurez préalablement créé. Cette configuration étant moins utilisée elle permettra de gagner en sécurité.

Vous voilà déjà avec un rempart supplémentaire.

Vous pouvez gagner en sécurité en changeant le chemin /var/vhosts et en répartissant dans plusieurs dossiers de /var.

Confidentialité du serveur

Apache est très bavard, surtout lors d’erreurs 404, 403 et autres. Pour le faire taire, le fichier /etc/apache2/conf.d/security sera d’une grande aide.

Première modification, le ServerTokens. Celui-ci permettra de cacher lors des requêtes HTTP le gentil message d’accueil : Debian Jessie (Apache v 2.2.24). Configuration recommandée :

ServerTokens Prod

Seconde modification, ServerSignature. Placer l’option à Off permettra de cacher lors d’erreurs Apache (403,404, etc…) les données que j’ai citées ci-dessus.

ServerSignature Off