26.7. Comment éviter les problèmes de sécurité

Un serveur Web exposé à Internet nécessite des efforts d'administration incessants. Il est inévitable que des problèmes de sécurité surviennent, qu'ils soient liés aux logiciels ou à une erreur de configuration. Voici quelques conseils qui permettront de les gérer.

26.7.1. Mise à jour des logiciels

Si des failles sont détectées dans le logiciel Apache, un avertissement de sécurité est diffusé par SUSE. Il contient des instructions permettant de corriger les failles, qui doivent être appliquées dès que possible. Les annonces de sécurité de SUSE se trouvent aux emplacements suivants :

26.7.2. Autorisations DocumentRoot

Par défaut dans SUSE Linux, le répertoire DocumentRoot /srv/www/htdocs et le répertoire CGI /srv/www/cgi-bin appartiennent à l'utilisateur et au groupe root. Vous ne devez pas changer ces autorisations. Si tout le monde pouvait écrire dans les répertoires, n'importe quel utilisateur pourrait y placer des fichiers. Ces fichiers pourraient ensuite être exécutés par Apache avec les autorisations wwwrun, qui peuvent donner à l'utilisateur un accès involontaire aux ressources du système de fichiers. Utilisez les sous-répertoires /srv/www pour placer les répertoires DocumentRoot et CGI de vos hôtes virtuels et vous assurer que les répertoires et les fichiers appartiennent à l'utilisateur et au groupe root.

26.7.3. Accès au système de fichiers

Par défaut, l'accès à l'ensemble du système de fichiers est refusé dans /etc/apache2/httpd.conf. Ne remplacez jamais ces directives, mais activez spécifiquement l'accès à tous les répertoires qu'Apache doit pouvoir lire (reportez-vous à Section 26.2.1.2.3, « Configuration de base de l'hôte virtuel » pour plus de détails). De cette manière, vous vous assurez qu'aucun fichier critique, tels que des fichiers de mot de passe ou de configuration système, ne peut être lu depuis l'extérieur.

26.7.4. Scripts CGI

Les scripts interactifs en Perl, PHP, SSI ou n'importe quel autre langage de programmation peuvent surtout exécuter des commandes arbitraires et présentent de ce fait un problème général de sécurité. Les scripts qui seront exécutés à partir du serveur ne doivent être installés qu'à partir de sources approuvées par l'administrateur du serveur ; permettre aux utilisateurs d'exécuter leurs propres scripts n'est généralement pas une bonne idée. Il est également recommandé d'effectuer des audits de sécurité sur tous les scripts.

Pour simplifier le plus possible l'administration des scripts, il est courant de limiter l'exécution des scripts CGI à des répertoires spécifiques plutôt que de les autoriser globalement. Les directives ScriptAlias et Option ExecCGI sont utilisées pour la configuration. La configuration de SUSE Linux par défaut ne permet pas l'exécution de scripts CGI depuis n'importe où.

Tous les scripts CGI s'exécutent sous le même utilisateur. Des scripts différents peuvent donc entrer en conflit les uns avec les autres. Les module mod_suexec permet d'exécuter des scripts CGI sous un utilisateur et un groupe différents.

26.7.5. Répertoires utilisateur

Lorsque vous activez des répertoires utilisateur (avec mod_userdir ou mod_rewrite), vous devez réfléchir sérieusement à ne pas autoriser l'accès aux fichiers .htaccess, afin d'éviter que les utilisateurs remplacent les paramètres de sécurité. Vous devez au moins limiter l'engagement de l'utilisateur en utilisant la directive AllowOverRide. Dans SUSE Linux, les fichiers .htaccess sont activés par défaut, mais l'utilisateur n'est pas autorisé à remplacer les directives Option lorsqu'il utilise mod_userdir (reportez-vous au fichier de configuration /etc/apache2/mod_userdir.conf).