Comment sécuriser un serveur Apache ?
Nous sommes tous très familiers avec le serveur web Apache , c’est un serveur web très populaire pour héberger vos fichiers web ou votre site Web sur le web. Voici quelques liens qui peuvent vous aider à configurer le serveur Web Apache sur votre boîte Linux.
Conseils de sécurité Apache
A lire aussi : Guide ultime pour éviter les arnaques en ligne les plus courantes
- Installer le serveur Web Apache
- Configurez votre site Web dans votre Linux Box
Lire également : Comment supprimer les fichiers indésirables Avast ?
Ici, dans ce tutoriel, je vais couvrir quelques conseils principaux pour sécuriser votre serveur web. Avant d’appliquer ces modifications à votre serveur Web, vous devriez avoir quelques bases du serveur Apache.
- Répertoire racine du document : /var/www/html ou /var/www
- Fichier de configuration principal : /etc/httpd/conf/httpd.conf (RHEL/Centos/Fedora) et /etc/apache2/apache2.conf (Debian/Ubuntu).
- Port HTTP par défaut : 80 TCP
- Port HTTPS par défaut : 443 TCP
- Testez les paramètres et la syntaxe de votre fichier de configuration : httpd -t
- Accès aux fichiers journaux du serveur Web : /var/log/httpd/access_log
- Fichiers journaux des erreurs du serveur Web : /var/log/httpd/error_log
Plan de l'article
- 1. Comment masquer la version Apache et l’identité du système d’exploitation des erreurs
- Masquer la version Apache 2. Désactiver l’annuaire
- Masquer la liste des annuaires Apache 3. Continuer à mettre à jour Apache régulièrement
- 4. Désactiver les modules in
- 5. Exécuter Apache en tant qu’utilisateur et groupe distincts
- Utilisateur http-web Groupe http-web 6. Utiliser Autoriser et Refuser pour restreindre l’accès aux répertoires
- 7. Utiliser les modules mod_security et mod_evasive pour sécuriser Apache
- 8. Désactiver la suite Apache des liens symboliques
- 9. Désactiver les inclutions côté serveur et l’exécution CGI
- 10. Limiter la taille des demandes
- 11. Protégez les attaques DDOS et durcissement
- 12. Activer la journalisation Apache
- 13. Sécurisation d’Apache avec des certificats SSL
- Conseil bonus : faites appel à une prestation d’infogérance serveur (OVH, …)
- Configurer correctement les permissions des fichiers et des répertoires sur le serveur
- Utiliser un certificat SSL pour sécuriser les connexions HTTPS et protéger les données échangées entre le serveur et les utilisateurs
1. Comment masquer la version Apache et l’identité du système d’exploitation des erreurs
Lorsque vous installez Apache avec le programme d’installation source ou tout autre package comme yum , il affiche la version de votre serveur Web Apache installée sur votre serveur avec le nom du système d’exploitation de votre serveur dans Erreurs . Il affiche également les informations sur les modules Apache installés sur votre serveur.
Dans l’image ci-dessus, vous pouvez voir qu’ Apache affiche sa version avec le système d’exploitation installé sur votre serveur. Cela peut constituer une menace majeure pour la sécurité de votre serveur Web ainsi que pour votre boîte Linux. Pour empêcher Apache d’afficher la version Apache de ne pas afficher ces au monde, nous devons apporter quelques changements dans le fichier de configuration principal Apache.
Ouvrez le fichier de configuration avec l’éditeur vim et recherchez « ServerSignature« , par défaut On. Nous devons Off ces signature de serveur et la deuxième ligne « ServerTokens Prod » dit Apache de retourner seulement Apache comme produit dans l’en-tête de réponse du serveur sur la requête de chaque page, Il supprime le système d’exploitation, informations de version majeure et mineure.
# vim /etc/httpd/conf/httpd.conf (RHEL/Centos/Fedora)
# vim /etc/apache2/apache2.conf (Debian/Ubuntu) ServerSignature désactivée Prod ServerTokens
# service httpd redémarrage (RHEL/Centos/Fedora)
# service apache2 redémarrage (Debian/Ubuntu)
Masquer la version Apache 2. Désactiver l’annuaire
Par défaut, Apache répertorie tout le contenu du répertoire racine du document en l’absence de fichier d’index . S’il vous plaît voir l’image ci-dessous.
Nous peut désactiver la liste des répertoires à l’aide de la directive Options dans le fichier de configuration d’un répertoire spécifique. Pour cela, nous devons faire une entrée dans le fichier httpd.conf ou apache2.confListe du répertoire Apache .
Options -Index
Masquer la liste des annuaires Apache 3. Continuer à mettre à jour Apache régulièrement
La communauté des développeurs Apache travaille en permanence sur les problèmes de sécurité et publie sa version mise à jour avec de nouvelles options de sécurité . Il est donc toujours recommandé d’utiliser la dernière version d’ Apache comme serveur web.
Pour vérifier la version d’Apache : Vous pouvez vérifier votre version actuelle avec la commande httpd -v .
# httpd -v Version du serveur : Apache/2.2.15 (Unix) Serveur construit : Aug 13 2013 17:29:28 Vous pouvez mettre à jour votre version à l’aide de la commande suivante.
Il est également recommandé de garder votre noyau et votre système d’ exploitation # miam mise à jour httpd # apt-get installer apache2 à jour vers les dernières versions stables si vous n’exécutez aucune application spécifique fonctionnant uniquement sur un système d’exploitation ou un noyau spécifique.
4. Désactiver les modules in
Il est toujours bon de minimiser les chances d’être victime d’une attaque Web. Il est donc recommandé de désactiver tous les modules qui ne sont pas utilisés actuellement. Vous pouvez lister tous les modules compilés du serveur Web, en utilisant la commande suivante.
Ci-dessus est la liste des modules qui sont activés par défaut mais souvent pas nécessaires : mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex.
5. Exécuter Apache en tant qu’utilisateur et groupe distincts
Avec une installation par défaut, Apache exécute son processus avec aucun utilisateur ou démon . Pour des raisons de sécurité, il est recommandé d’exécuter Apache dans son propre compte non privilégié . Par exemple : http-web .
Maintenant, vous devez dire à Apache de fonctionner avec ce nouvel utilisateur et pour ce faire, nous devons faire une entrée dans /etc/httpd/conf/httpd.conf Créer un utilisateur et un groupe Apache # groupadd http-web # useradd -d /var/www/ -g http-web -s /bin/nologin http-web et redémarrer le service.
Ouvrez /etc/httpd/conf/httpd.conf avec l’éditeur vim et recherchez des mots clés « Utilisateur » et « Groupe » et là, vous devrez spécifier le nom d’utilisateur et le nom de groupe à utiliser.
Utilisateur http-web Groupe http-web 6. Utiliser Autoriser et Refuser pour restreindre l’accès aux répertoires
Nous pouvons restreindre l’accès aux répertoires avec les options « Autoriser » et « Refuser » dans le fichierhttpd.conf. Ici, dans cet exemple, nous allons sécuriser le répertoire racine, pour cela en définissant ce qui suit dans le fichier httpd.conf .
/ Options Aucun Order refuser, autoriser Refuser de tous
- Options « Aucun » : cette option ne permet pas aux utilisateurs d’activer des fonctionnalités facultatives.
- Order refuser, allow — C’est l’ordre dans lequel les directives « Deny » et « Autoriser » seront traitées. Ici, il va « nier » d’abord et « permettre » ensuite.
- Refuser de tous – Cela refusera la demande de tout le monde vers lerépertoire racine , personne ne pourra accéder au répertoire racine.
7. Utiliser les modules mod_security et mod_evasive pour sécuriser Apache
Ces deux modules « mod_security » et « mod_evasive » sont des modules très populaires d’Apache en termes de sécurité.
Mod_security
Où mod_security fonctionne comme un pare-feu pour nos applications web et nous permet de surveiller le trafic en temps réel. Il nous aide également à protéger nos sites Web ou notre serveur web contre les attaques de force brute. Vous pouvez simplement installer mod_security sur votre serveur à l’aide de vos installateurs de paquets par défaut.
mod_evasive fonctionne très efficacement, il faut une requête pour traiter et la traite très bien. Il empêche les attaques DDOS de faire autant de dégâts. Cette fonctionnalité de mod_evasive lui permet de gérer la force brute HTTP et l’attaque Dos ou DDoS Installer mod_security sur Ubuntu/Debian $ sudo apt-get install libapache2-modsecurity $ sudo a2enmod mod-security $ sudo /etc/init.d/apache2 force-recharger Installer mod_security sur RHEL/Centos/Fedora/ # yum install mod_security # /etc/init.d/httpd redémarrage Mod_Evasive . Ce module détecte les attaques avec trois méthodes.
- Si tant de demandes arrivent à une même page en quelques fois par seconde.
- Si un processus enfant essayant de faire plus de 50 demandes simultanées.
- Si une adresse IP essaie toujours de faire de nouvelles requêtes lorsque sa temporairement liste noire .
mod_evasive peut être installé directement à partir de la source. Ici, nous avons un guide d’installation et de configuration de ces modules qui vous aidera à configurer ces modules Apache dans votre boîte Linux.
- Protégez Apache à l’aide de Mod_Security et Mod_Evasive
8. Désactiver la suite Apache des liens symboliques
Par défaut Apache suit des liens symboliques , nous pouvons désactiver cette fonctionnalité avec FollowSymlinks avec la directive Options . Et pour ce faire, nous devons faire l’entrée suivante dans le fichier de configuration principal.
Et, si un utilisateur particulier ou un site Web a besoin de FollowSymlinks activer, nous pouvons simplement écrire une règle dans le fichier « .htaccess Options -FollowSymlinks » à partir de ce site Web.
Remarque : Pour activer les règles de réécriture dans le fichier « .htaccess » « AllowOverride All # Activer les liens symboliques Options Liens symboliques suivis » devrait être présents dans la configuration principale globalement.
9. Désactiver les inclutions côté serveur et l’exécution CGI
Nous pouvons désactiver les inclusions côté serveur ( mod_include ) et CGI si ce n’est pas nécessaire et pour ce faire, nous devons modifier le fichier de configuration principal.
Nous pouvons le faire pour un répertoire particulier aussi avec la balise Directory. Ici Dans cet exemple, nous désactivons les exécutions de fichiers Inclusions et Cgi pour le répertoire « /var/www/html/web1 Options -Inclut Options -ExecCGI ».
Options -Inclut -ExecCGI
Voici d’autres valeurs avec peuvent être activées ou désactivées avec la directive Options.
- Toutes les options — Pour activer toutes les options à la fois. Il s’agit de la valeur par défaut, Si vous ne voulez pas spécifier de valeurs explicitement dans le fichier de conf Apache ou .htaccess.
- Options IncludeNoexec — Cette option permet les inclusions côté serveur sans autorisation d’exécution pour une commande ou des fichiers cgi.
- Options MultiViews — Permet le contenu des multivues négociées avec le module mod_négocié.
- Options SymlinksiFowNerMatch – Il est similaire à FollowSymlinks. Mais, cela ne suivra que lorsque le propriétaire est le même entre le lien et le répertoire d’origine auquel il est lié.
10. Limiter la taille des demandes
Par défaut, Apache n’a aucune limite sur la taille totale de la requête HTTP, c’est-à-dire illimitée et lorsque vous autorisez des requêtes volumineuses sur un serveur Web, il est possible que vous soyez victime d’ attaques par déni de service . Nous pouvons limiter la taille des requêtes d’une directive Apache « LimitRequestBody » avec la balise de répertoire.
Vous pouvez définir la valeur en octets de 0 ( illimité ) à 2147483647 (2 Go ) autorisés dans un corps de requête. Vous pouvez définir cette limite en fonction des besoins de votre site, Supposons que vous ayez un site où vous autorisez les téléchargements et que vous voulez limiter la taille de téléchargement pour un répertoire particulier.
Ici, dans cet exemple, user_uploads est un répertoire qui contient des fichiers téléchargés par les utilisateurs. Nous mettons une limite de 500K pour cela.
LimitRequestBody 512000
11. Protégez les attaques DDOS et durcissement
Eh bien, il est vrai que vous ne pouvez pas protéger complètement votre site Web contre les attaques DDoS . Voici quelques directives qui peuvent vous aider à avoir un contrôle dessus.
- TimeOut : Cette directive vous permet de définir la durée pendant laquelle le serveur attend que certains événements se terminent avant qu’il échoue. Sa valeur par défaut est de 300 secondes. Il est bon de garder cette valeur faible sur les sites qui sont soumis à des attaques DDOS. Cette valeur dépend totalement du type de demande que vous obtenez sur votre site Web. Note : Cela pourrait poser des problèmes avec les scriptsCGI venir.
- MaxClients : Cette directive vous permet de définir la limite des connexions qui seront servies simultanément. Chaque nouvelle connexion sera mise en file d’attente après cette limite. Il est disponible avec Prefork et Worker tous les deux MPM . La valeur par défaut est 256 .
- KeepAliveTimeout : Il s’agit du temps pendant lequel le serveur attend une requête ultérieure avant de fermer la connexion. La valeur par défaut est de 5 secondes .
- LimitRequestFields : Cela nous aide à définir une limite sur le nombre de champs d’en-tête de la requête HTTP qui seront acceptés par les clients. Sa valeur par défaut est 100. Il est recommandé d’abaisser cette valeur si les attaques DDoS se produisent à la suite d’un si grand nombre d’en-têtes de requête http.
- LimitRequestFieldSize : Cela nous aide à définir une limite de taille sur l’en-tête de requête HTTP.
12. Activer la journalisation Apache
Apache vous permet de journaliser indépendamment de la journalisation de votre système d’exploitation . Il est judicieux d’activer la journalisation Apache, car elle fournit plus d’informations, telles que les commandes saisies par les utilisateurs qui ont interagi avec votre serveur Web.
Pour ce faire, vous devez inclure le module mod_log_config . Il existe trois directives principales liées à l’enregistrement disponibles avec Apache.
- TransferLog : création d’un fichier journal.
- LogFormat : spécification d’un format personnalisé.
- CustomLog : création et mise en forme d’un fichier journal.
Vous pouvez également les utiliser pour un site Web particulier que vous faites hébergement virtuel et pour cela vous devez le spécifier dans la section hôte virtuel. Par exemple, voici la configuration de l’hôte virtuel de mon site Web avec la journalisation activée.
DocumentRoot /var/www/html/exemple.com/ NomServerName www.exemple.com
DirectoryIndex index.htm index.html index.php ServerAlias exemple.com
ErreurDocument 404 /story.php
ErrorLog /var/log/httpd/example.com_error_log
CustomLog /var/log/httpd/example.com_access_log
13. Sécurisation d’Apache avec des certificats SSL
Enfin, mais pas le moindre certificat SSL, vous pouvez sécuriser toutes vos communications d’une manière cryptée sur Internet avec certificat SSL. Supposons que vous ayez un site Web sur lequel les gens se connectent en prouvant leurs identifiants de connexion ou que vous ayez un site Web E-Commerce où les gens fournissent leurs coordonnées bancaires ou les détails de la carte de débit ou de crédit pour acheter des produits, par défaut votre serveur web envoyer ces détails au format texte brut, mais lorsque vous utilisez des certificats SSL sur vos sites Web, Apache envoie toutes ces informations sous forme de texte chiffré.
Vous pouvez acheter des certificats SSL auprès de tant de fournisseurs SSL différents comme namecheap.com . Si vous exploitez une très petite entreprise Web et que vous ne souhaitez pas acheter un certificat SSL , vous pouvez toujours attribuer un certificat auto-signé à votre site Web. Apache utilise le module mod_ssl pour prendre en charge le certificat SSL .
Ouvrez votre navigateur, tapez https://example.com, et vous pourrez voir le nouveau certificat auto-signé .
Voici quelques conseils de sécurité que vous pouvez utiliser pour sécuriser l’installation de votre serveur Web Apache. Pour plus d’astuces et idées de sécurité utiles, consultez la documentation en ligne officielle d’Apache HttpServer.
Conseil bonus : faites appel à une prestation d’infogérance serveur (OVH, …)
Avec des attaques dans le monde de l’informatique qui peuvent être de plus en plus présentes, le moins que l’on puisse dire c’est que vous avez tout intérêt à prendre vos dispositions pour sécuriser les serveurs de votre entreprise. En effet, avec la digitalisation de plus en plus d’opérations dans certains milieux professionnels, il est de plus en plus fréquent de voir certaines sociétés complètement mises à mal dès lors qu’elles sont attaquées. Dans ce cas là, c’est la santé financière de l’entreprise qui est directement menacée, mais également des emplois qui peuvent se compter par centaines ou par milliers. Pour éviter cette situation catastrophique, nous ne pourrions que vous recommander de faire appel à une prestation d’infogérance serveur, comme celle-ci si vous avez un serveur OVH : https://www.dutiko.com/infogerance/infogerance-ovh/
Comme vous pourrez le constater, en faisant appel à une offre comme celle-ci qui est encore à ce jour très abordable, vous serez bien plus serein au quotidien : vous n’aurez plus du tout à vous occuper de la sécurité de votre serveur Apache ! Si vous vous demandez pour quelle raison faire appel à un professionnel de l’infogérance serveur plutôt que de tout gérer par vos soins, voici les principales raisons que nous pouvons vous donner pour vous convaincre :
- les entreprises qui font de l’infogérance OVH ont l’habitude de travailler avec des centaines de clients, qui ont eux même plusieurs centaines de serveurs
- ils proposent des astreintes et une supervision tous les jours de l’année et à toutes heures pour couvrir les urgences les plus extrêmes
- ils bénéficient souvent d’une expérience de plusieurs années, parfois même de plus de 10 ans
- ils concentrent toute l’infogérance sur une équipe dédiée, afin que tout ne repose pas sur les épaules d’une seule et unique personne
Configurer correctement les permissions des fichiers et des répertoires sur le serveur
La sécurité de votre serveur Apache dépend aussi de la manière dont vous avez configuré les permissions des fichiers et des répertoires. Effectivement, si ces dernières sont mal paramétrées, cela peut constituer une véritable faille pour les hackers qui cherchent à s’infiltrer dans vos systèmes.
• Utilisez le principe du moindre privilège : ne donnez que les droits dont chaque utilisateur a besoin pour effectuer sa tâche
• N’utilisez pas le compte root ou admin comme compte utilisateur standard
• Désactivez l’option d’exécution automatique (auto-exec) sur tous vos périphériques externes pour éviter la propagation de virus informatiques par ce biais-là.
Sous Linux, chaque fichier est associé à un propriétaire et à un groupe. Il y a trois types d’autorisations possibles pour un fichier : lecture, écriture et exécution.
• Limitez autant que possible les accès aux fichiers sensibles en changeant leurs autorisations avec chmod.
Utiliser un certificat SSL pour sécuriser les connexions HTTPS et protéger les données échangées entre le serveur et les utilisateurs
La sécurité de votre serveur Apache repose aussi sur la sécurisation des données échangées entre les utilisateurs et le serveur. Pour protéger ces informations, il est indispensable d’utiliser un certificat SSL (Secure Socket Layer).
Le certificat SSL permet de sécuriser les connexions HTTPS en chiffrant les données échangées entre le navigateur web de l’utilisateur et le serveur. En clair, cela signifie que toutes les informations transmises via ce canal sont codées et ne peuvent pas être interceptées ou modifiées par des tiers.
Pour installer un certificat SSL sur votre site web hébergé sur un serveur Apache, vous pouvez suivre ces étapes :
Il vous faut générer une demande de signature du certificat auprès d’une autorité reconnue pour cela. Vous aurez besoin pour cela des informations relatives à votre entreprise ainsi qu’à votre nom de domaine.
Une fois que vous avez obtenu la signature du certificat, téléchargez-le au format . crt depuis l’autorité ayant délivré celui-ci.
Installez le module mod_ssl dans apache avec sudo apt-get install libapache2-mod-ssl.
Modifiez ensuite les fichiers liés aux virtual hosts pour activer SSL : sous /etc/apache2/sites-available/, créez deux nouveaux fichiers subdomain.example.com.conf.ssl et www.subdomain.example.com.conf.ssl, puis rajoutez-y cet extrait :
En utilisant un certificat SSL, vous garantissez à vos visiteurs que leur navigation sur votre site web est sécurisée et protégée contre tout risque d’interception ou de modification des données échangées.