Liste de contrôle des meilleures pratiques de sécurité Apache en 14 étapes (livre électronique PDF inclus)
Publié: 2017-11-22chemin de ferfx / stock.adobe.com
Apache reste actuellement le premier logiciel de serveur Web au monde avec une part de marché de 45,8 %. Cela représente environ 80 millions de sites Web dont les serveurs Web sont alimentés par Apache. Assez impressionnant, non ?
Apache est un logiciel de serveur Web open source qui existe depuis 1995, ce qui en dit long sur sa fiabilité et sa longévité. Ensuite, il y a les sites Web prestigieux qui fonctionnent sur des serveurs Apache : Apple, Adobe et Paypal ne sont que quelques-unes des grandes marques qui confient leurs sites Web à Apache.
Bien sûr, cela ne rend pas Apache 100 % sécurisé, car aucun logiciel ne sera jamais à 100 % à l'abri des pirates informatiques, surtout lorsqu'il s'agit d'une plate-forme aussi connue et fiable (un peu comme WordPress). Mais si vous recherchez un livre électronique PDF sur la sécurité Apache, un module, un guide, un didacticiel, un framework ou une liste de contrôle de sécurité du serveur Web, vous êtes au bon endroit.
Si vous souhaitez renforcer votre sécurité Apache, rencontrez des problèmes de sécurité Apache ou essayez de corriger une ou deux vulnérabilités, la liste de contrôle suivante vous fournira 14 bonnes pratiques de sécurité à ajouter au plan de sécurité de votre site Web.
La liste de contrôle ultime des meilleures pratiques de sécurité Apache
Pour ceux d’entre vous qui souhaitent véritablement renforcer leur site Web WordPress, il est essentiel de sécuriser Apache comme vous le feriez pour n’importe quel autre logiciel qui se connecte à votre site Web et l’alimente. Ne pas le faire peut même affecter la vitesse de votre site. Alors, voici comment procéder :
1. Mettre à jour Apache
Savez-vous comment WordPress et tous les plugins et thèmes que vous avez installés doivent être mis à jour régulièrement ? Il en va de même pour votre serveur Web.
Si vous craignez que votre site ne fonctionne pas sur la version la plus récente d'Apache, vous pouvez le vérifier avec une ligne de commande httpd -v. Si la version générée ne correspond pas à celle actuelle d'Apache, vous pouvez la mettre à jour avec ce qui suit :
# yum update httpd
# apt-get install [add Apache version here]c
2. Activez les journaux
Si vous travaillez avec un fournisseur d'hébergement WordPress géré, il se chargera de surveiller votre serveur et WordPress pour détecter les vulnérabilités et autres signes d'avertissement. Cela dit, vous devez également garder un œil sur le trafic de votre serveur.
Avec Apache, vous pouvez accéder à ce journal d'activité en mettant à jour votre module mod_log_config. Fondamentalement, il vous dira ce que font les utilisateurs chaque fois qu’ils touchent votre serveur.
3. Obtenez un certificat SSL
Étant donné que votre serveur Web gère toutes les requêtes du navigateur/serveur vers votre site Web, il est important de le sécuriser avec un certificat SSL. La bonne nouvelle est que vous pouvez désormais obtenir un certificat SSL gratuitement. C'est plus important que jamais, donc si vous n'avez pas la capacité technique de l'installer vous-même, n'importe quel fournisseur d'hébergement de qualité pourra le faire pour vous.
4. Ajouter un pare-feu
En plus de la protection supplémentaire du cryptage SSL, votre serveur Web doit être renforcé par un pare-feu. Pour Apache, cela signifie activer ModSecurity.
Pour l'installer sur votre serveur, vous pouvez exécuter ce qui suit :
# yum install mod_security
# /etc/init.d/httpd restart
Une fois le pare-feu opérationnel, il empêchera un certain nombre d'activités malveillantes d'atteindre votre serveur, comme l'injection SQL, le détournement de session et les scripts intersites.
5. Installez mod_evasive
Mod_evasive est le module qui protégera votre serveur Apache contre la force brute et les attaques DDoS, alors assurez-vous qu'il est également activé. Il mettra sur liste noire les tentatives de connexion simultanées et échouées et surveillera les adresses IP malveillantes.
6. Définir les limites HTTP
Les attaques par déni de service distribué (DDoS) sont assez simples à bloquer si vous savez quel type d'actions surveiller. Étant donné que les attaques DDoS ont tendance à se produire en frappant votre serveur à plusieurs reprises avec des requêtes volumineuses, votre objectif devrait être de fixer des limites qui empêchent que cela ne se produise.
Voici quelques-unes des limites que vous souhaiterez établir :
- KeepAlive = activé
- KeepAliveTimeout
- LimitRequestBody
- LimitRequestFields
- LimitRequestFieldSize
- LimitRequestLine
- LimitXMLRequestBody
- Les clients de Max
- MaxKeepAliveRequests
- MaxRequestWorkers
- RequestReadTimeout
- Temps mort
7. Supprimer les modules inutilisés
En laissant des modules inutilisés, non entretenus ou expirés sur votre serveur Apache, vous laissez votre site ouvert aux pirates via un point d'entrée qui n'a même pas besoin d'être là.
La première chose à faire est de découvrir quels modules sont réellement actifs. Vous pouvez le faire en utilisant une commande LoadModule. Une fois que vous avez parcouru la liste et identifié les modules dont vous n'avez pas besoin, ajoutez simplement le symbole « # » devant chaque module que vous souhaitez désactiver, puis redémarrez.
8. Modifier l'utilisateur et le groupe par défaut
Les paramètres par défaut et les utilisateurs laissés sur n’importe quel logiciel constituent en général une mauvaise pratique de sécurité. La raison en est simple : si vous utilisez le nom d'utilisateur ou de groupe par défaut d'Apache, vous pouvez être sûr que les pirates connaissent également ces noms par défaut.
Plutôt que de laisser les valeurs par défaut en place, vous devez créer un nouveau compte non privilégié pour exécuter vos processus Apache. À l'aide des commandes # groupadd et # useradd, vous pouvez définir les nouvelles entités. N'oubliez pas de mettre à jour votre httpd.conf avec les nouveaux noms d'utilisateurs et de groupes que vous avez créés.
9. Bloquer l'accès au répertoire
Voici un autre exemple de paramètres par défaut qui doivent être modifiés. Dans ce cas, c'est l'accès accordé aux fichiers de votre répertoire qui permet à chacun d'explorer où bon lui semble.
Pour mettre en place un blocage total, utilisez la commande suivante :
<Directory "/">
Require all denied
</Directory>
Si vous souhaitez autoriser l'accès à certains utilisateurs, vous pouvez le faire avec ceci :
<Directory "/usr/users/*/public_html">
Require all granted
</Directory>
Si vous souhaitez activer l'accès à certains dossiers du répertoire, vous pouvez le faire avec ceci :
<Directory "/usr/local/httpd">
Require all granted
</Directory>
Vous pouvez également consulter le référentiel du module Apache pour peaufiner davantage les droits d'accès des utilisateurs.
10. Ne publiez pas l'annuaire
Saviez-vous que si votre serveur ne dispose pas de fichier d'index, les utilisateurs pourront voir tout le contenu que vous avez stocké dans votre répertoire racine ? Ce n'est évidemment pas bon, vous devrez donc désactiver ce paramètre par défaut avec ce qui suit :
<Directory /var/www/html>
Options -Indexes
</Directory>
11. Masquer les détails du serveur
Apache étant un logiciel open source, les détails sur la version utilisée sont facilement disponibles si ces paramètres ne sont pas désactivés côté serveur. Étant donné que les pirates peuvent utiliser ces informations sensibles pour comprendre comment pénétrer dans votre serveur, vous souhaiterez bloquer ces informations.
Il y a deux choses que vous souhaiterez désactiver :
- ServerSignature – qui est la version d'Apache
- ServerTokens – qui inclut la version du système d'exploitation, entre autres détails sensibles du serveur
Ces informations peuvent être trouvées par d'autres utilisateurs simplement en affichant une page d'erreur sur votre site Web, il est donc très important de bloquer leur affichage. Pour ce faire, mettez à jour le httpd.conf avec ce qui suit :
ServerSignature Off
ServerTokens Prod
12. Masquer l'ETag
L’en-tête ETag d’Apache inclut malheureusement un certain nombre de détails sensibles sur votre serveur. Évidemment, tout ce qui partage ce genre d’informations avec le monde extérieur doit être caché. De plus, si vous exploitez un site Web de commerce électronique, vous devrez le masquer afin d'être conforme à la norme PCI.
Pour ce faire, ajoutez la directive suivante à votre httpd.conf :
FileETag None
13. Désactiver le remplacement de .htaccess
Le .htaccess est un fichier important pour tout site Web WordPress. C'est pourquoi vous devez le verrouiller et vous assurer que personne d'autre ne peut modifier vos paramètres de configuration.
Pour désactiver cela, ajoutez ce qui suit à votre httpd.conf à la racine :
<Directory />
Options -Indexes
AllowOverride None
</Directory>
14. Désactivez SSI et CGI
Les fichiers compatibles SSI (Server Side Include) peuvent ouvrir votre site à un certain nombre de problèmes de sécurité s'ils ne sont pas cochés. Il en va de même pour les scripts CGI. Afin d'éviter que l'un ou l'autre de ces éléments ne permette aux pirates informatiques de surcharger votre serveur ou d'injecter des scripts malveillants dans votre code, n'oubliez pas de les désactiver ou de restreindre leurs actions via la directive Options.
Voici quelques valeurs d'options que vous pouvez utiliser :
- Options Tout
- Les options comprennentNOEXEC
- Options -Comprend
- Options-ExecCGI
- Options -Inclut -ExecCGI
- Options MultiVues
Prendre soin de votre serveur Apache
Afin de renforcer la sécurité de votre site Web, portez une attention particulière à votre serveur Apache. Des problèmes tels qu'une mauvaise configuration du serveur et le maintien des paramètres par défaut peuvent mettre votre site en danger tout autant qu'un noyau non mis à jour ou des pratiques de codage PHP dangereuses.
Vous souhaitez donner votre avis ou participer à la conversation ?Ajoutez vos commentaires sur Twitter.