8.5. Sécurisation des serveurs HTTP
8.5.1. Améliorations de la sécurité dans httpd.conf Copier lienLien copié sur presse-papiers!
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
# 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
Apache/2.4.37 (Red Hat Enterprise Linux) MyMod/1.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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)
Apache/2.4.37 (Red Hat Enterprise Linux) (Release 41.module+el8.5.0+11772+c8e0c271)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ServerTokens Prod / ServerTokens ProductOnly
fournit le nom du serveur web, par exemple :
Apache
Apache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ServerTokens Major
fournit la version majeure du serveur web, par exemple :
Apache/2
Apache/2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ServerTokens Minor
fournit la version mineure du serveur web, par exemple :
Apache/2.4
Apache/2.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ServerTokens Min / ServerTokens Minimal
fournit la version minimale du serveur web, par exemple :
Apache/2.4.37
Apache/2.4.37
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ServerTokens OS
fournit la version du serveur web et le système d'exploitation, par exemple :
Apache/2.4.37 (Red Hat Enterprise Linux)
Apache/2.4.37 (Red Hat Enterprise Linux)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf
8.5.2. Sécuriser la configuration du serveur Nginx Copier lienLien copié sur presse-papiers!
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;
server_tokens off;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ curl -sI http://localhost | grep Server Server: nginx
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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";
add_header X-Frame-Options "SAMEORIGIN";
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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;
add_header X-Content-Type-Options nosniff;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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";
add_header X-XSS-Protection "1; mode=block";
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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; }
limit_except GET { allow 192.168.1.0/32; deny all; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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.
# Allow GET, PUT, POST; return "405 Method Not Allowed" for all others. if ( $request_method !~ ^(GET|PUT|POST)$ ) { return 405; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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.