8.5. Sécurisation des serveurs HTTP
8.5.1. Améliorations de la sécurité dans httpd.conf
Vous pouvez renforcer la sécurité du serveur HTTP Apache en configurant les options de sécurité dans le fichier /etc/httpd/conf/httpd.conf
.
Vérifiez toujours que tous les scripts exécutés sur le système fonctionnent correctement avant de les mettre en production.
Assurez-vous que seul l'utilisateur root
dispose des droits d'écriture sur tout répertoire contenant des scripts ou des Common Gateway Interfaces (CGI). Pour changer la propriété du répertoire en faveur de l'utilisateur root
avec des droits d'écriture, entrez les commandes suivantes :
# chown root directory-name # chmod 755 directory-name
Dans le fichier /etc/httpd/conf/httpd.conf
, vous pouvez configurer les options suivantes :
- FollowSymLinks
- Cette directive est activée par défaut et suit les liens symboliques dans le répertoire.
- Index
- Cette directive est activée par défaut. Désactivez cette directive pour empêcher les visiteurs de parcourir les fichiers du serveur.
- Dossier de l'utilisateur
-
Cette directive est désactivée par défaut car elle peut confirmer la présence d'un compte utilisateur sur le système. Pour activer la consultation des répertoires d'utilisateurs autres que
/root/
, utilisez les directives racineUserDir enabled
etUserDir disabled
. Pour ajouter des utilisateurs à la liste des comptes désactivés, ajoutez une liste d'utilisateurs délimitée par des espaces sur la ligneUserDir disabled
. - Jetons de serveur
Cette directive contrôle le champ d'en-tête de la réponse du serveur qui est renvoyée aux clients. Vous pouvez utiliser les paramètres suivants pour personnaliser les informations :
- ServerTokens Complet
fournit toutes les informations disponibles, telles que le numéro de version du serveur web, les détails du système d'exploitation du serveur, les modules Apache installés, par exemple :
Apache/2.4.37 (Red Hat Enterprise Linux) MyMod/1.2
- ServerTokens Full-Release
fournit toutes les informations disponibles sur les versions, par exemple :
Apache/2.4.37 (Red Hat Enterprise Linux) (Release 41.module+el8.5.0+11772+c8e0c271)
- ServerTokens Prod / ServerTokens ProductOnly
fournit le nom du serveur web, par exemple :
Apache
- ServerTokens Major
fournit la version majeure du serveur web, par exemple :
Apache/2
- ServerTokens Minor
fournit la version mineure du serveur web, par exemple :
Apache/2.4
- ServerTokens Min / ServerTokens Minimal
fournit la version minimale du serveur web, par exemple :
Apache/2.4.37
- ServerTokens OS
fournit la version du serveur web et le système d'exploitation, par exemple :
Apache/2.4.37 (Red Hat Enterprise Linux)
Utilisez l'option
ServerTokens Prod
pour réduire le risque que des pirates obtiennent des informations précieuses sur votre système.
Ne supprimez pas la directive IncludesNoExec
. Par défaut, le module Server Side Includes (SSI) ne peut pas exécuter de commandes. Modifier cela peut permettre à un attaquant d'entrer des commandes sur le système.
Suppression des modules httpd
Vous pouvez supprimer les modules httpd
pour limiter les fonctionnalités du serveur HTTP. Pour ce faire, modifiez les fichiers de configuration dans le répertoire /etc/httpd/conf.modules.d/
ou /etc/httpd/conf.d/
. Par exemple, pour supprimer le module proxy :
echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf
Ressources supplémentaires
8.5.2. Sécuriser la configuration du serveur Nginx
Nginx est un serveur HTTP et proxy très performant. Vous pouvez renforcer votre configuration Nginx avec les options de configuration suivantes.
Procédure
Pour désactiver les chaînes de version, modifiez l'option de configuration
server_tokens
:server_tokens off;
Cette option arrête l'affichage de détails supplémentaires tels que le numéro de version du serveur. Cette configuration n'affiche que le nom du serveur dans toutes les requêtes servies par Nginx, par exemple :
$ curl -sI http://localhost | grep Server Server: nginx
Ajouter des en-têtes de sécurité supplémentaires qui atténuent certaines vulnérabilités connues des applications web dans des fichiers conf spécifiques de
/etc/nginx/
:Par exemple, l'option d'en-tête
X-Frame-Options
interdit à toute page extérieure à votre domaine d'encadrer tout contenu servi par Nginx, ce qui atténue les attaques par détournement de clics :add_header X-Frame-Options "SAMEORIGIN";
Par exemple, l'en-tête
x-content-type
empêche le reniflage du type MIME dans certains navigateurs plus anciens :add_header X-Content-Type-Options nosniff;
Par exemple, l'en-tête
X-XSS-Protection
permet le filtrage des scripts intersites (XSS), qui empêche les navigateurs de rendre un contenu potentiellement malveillant inclus dans une réponse de Nginx :add_header X-XSS-Protection "1; mode=block";
Vous pouvez limiter les services exposés au public et limiter ce qu'ils font et acceptent des visiteurs, par exemple :
limit_except GET { allow 192.168.1.0/32; deny all; }
L'extrait limitera l'accès à toutes les méthodes, à l'exception de
GET
etHEAD
.Vous pouvez désactiver les méthodes HTTP, par exemple :
# Allow GET, PUT, POST; return "405 Method Not Allowed" for all others. if ( $request_method !~ ^(GET|PUT|POST)$ ) { return 405; }
- Vous pouvez configurer SSL pour protéger les données servies par votre serveur web Nginx, en envisageant de les servir uniquement via HTTPS. En outre, vous pouvez générer un profil de configuration sécurisé pour activer SSL dans votre serveur Nginx à l'aide du générateur de configuration SSL de Mozilla. La configuration générée garantit que les protocoles vulnérables connus (par exemple, SSLv2 et SSLv3), les algorithmes de chiffrement et de hachage (par exemple, 3DES et MD5) sont désactivés. Vous pouvez également utiliser le test du serveur SSL pour vérifier que votre configuration répond aux exigences de sécurité modernes.
Ressources supplémentaires