Comment sécuriser votre serveur Apache

Comment sécuriser votre serveur Apache
Apache est un serveur Web populaire et open source disponible pour les systèmes Linux et Windows. Il permet une configuration pour une gamme diversifiée de cas d'utilisation, des pages Web HTML à un contenu d'application Web dynamique du préprocesseur hypertexte (PHP).Apache fournit une plate-forme sécurisée et robuste pour déployer vos applications Web. Cependant, il est toujours important d'installer les derniers correctifs de sécurité et de configurer correctement le serveur pour établir un environnement sécurisé pour vos applications Web.
Dans cet article, vous trouverez quelques conseils et astuces pour renforcer les configurations de votre serveur Web Apache et améliorer la sécurité générale.

Compte d'utilisateur non privilégié

Le but d'un compte d'utilisateur non racinaire ou non privilégié est de limiter l'utilisateur de l'accès inutile à certaines tâches d'un système. Dans le contexte d'un serveur Web Apache, cela signifie qu'il devrait fonctionner dans un environnement restreint avec uniquement les autorisations nécessaires. Par défaut, Apache fonctionne avec les privilèges de compte Daemon. Vous pouvez créer un compte d'utilisateur non racinaire distinct pour éviter les menaces en cas de vulnérabilités de sécurité.

De plus, si Apache2 et MySQL sont sous les mêmes informations d'identification de l'utilisateur, tout problème en cours de service aura un impact sur l'autre. Pour modifier les privilèges de l'utilisateur et du groupe pour le serveur Web, accédez à / etc / apache2, ouvrez le fichier Envvars et définissez l'utilisateur et le groupe sur un nouvel utilisateur de compte non privilégié, disons «Apache» et enregistrez le fichier.

ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / envvars
… Snip…
exporter apache_run_user = apache
exporter apache_run_group = apache
… Snip…

Vous pouvez également utiliser la commande suivante pour modifier la propriété du répertoire d'installation vers le nouvel utilisateur non root.

ubuntu @ ubuntu ~: $ sudo chown -r apache: apache / etc / apache2
Émettez la commande suivante pour enregistrer les modifications:
ubuntu @ ubuntu ~: $ sudo service apache2 redémarrer

Gardez Apache à jour

Apache est célèbre pour fournir une plate-forme sécurisée avec une communauté de développeurs très concernée qui est rarement confrontée à tous les bogues de sécurité. Néanmoins, il est normal de découvrir des problèmes une fois le logiciel. Par conséquent, il est essentiel de garder le serveur Web à jour pour bénéficier des dernières fonctionnalités de sécurité. Il est également conseillé de suivre les listes d'annonces du serveur Apache pour vous tenir au courant de nouvelles annonces, versions et mises à jour de sécurité de la communauté du développement Apache.

Pour mettre à jour votre Apache à l'aide d'APT, saisissez ce qui suit:

ubuntu @ ubuntu ~: $ sudo apt-get update
Ubuntu @ Ubuntu ~: $ sudo apt-get upgrade

Désactiver la signature du serveur

La configuration par défaut d'un serveur Apache expose beaucoup de détails sur le serveur et ses paramètres. Par exemple, les directives SERVERSIGNATURE ET SERVERTOKENS ont activé dans le / etc / apache2 / apache2.fichier conf, ajoutez un en-tête supplémentaire à la réponse HTTP qui expose des informations potentiellement sensibles. Ces informations incluent les détails du paramètre de serveur, tels que la version serveur et l'hébergement OS, qui peuvent aider l'attaquant avec le processus de reconnaissance. Vous pouvez désactiver ces directives en modifiant l'Apache2.Fichier Conf via VIM / NANO et ajoutez la directive suivante:

ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.confli
… Snip…
SERVERSIGNATURE OFF
… Snip…
Servertokens prod
… Snip…

Redémarrez Apache pour mettre à jour les modifications.

Désactiver les listes de répertoires de serveurs

Les annonces de répertoires affichent tous les contenus enregistrés dans le dossier racine ou les sous-répertoires. Les fichiers d'annuaire peuvent inclure des informations sensibles non destinées à l'affichage public, telles que les scripts PHP, les fichiers de configuration, les fichiers contenant des mots de passe, des journaux, etc.
Pour interdire les listes de répertoires, modifiez le fichier de configuration du serveur Apache en modifiant l'APACHE2.Fichier Conf comme:

ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.confli
… Snip…

Options - Indexes

… Snip…

OU

… Snip…

Options - Indexes

… Snip…

Vous pouvez également ajouter cette directive dans le .Fichier htaccess de votre répertoire de site Web principal.

Protéger les paramètres du système

Le .Le fichier htaccess est une fonctionnalité pratique et puissante qui permet la configuration en dehors de la principale apache2.fichier de confr. Cependant, dans les cas où un utilisateur peut télécharger des fichiers sur le serveur, cela peut être exploité par un attaquant pour télécharger son propre ".Fichier HTACCESS »avec des configurations malveillantes. Donc, si vous n'utilisez pas cette fonctionnalité, vous pouvez désactiver le .directive htaccess, je.e.:

ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.confli
… Snip…
#AccessFileName .htaccess
… Snip…

OU
Désactiver le .Fichier HTACCESS à l'exception des répertoires spécifiquement activés en modifiant Apache2.FICHIER DE LA CONFIR ET TRAPORT DE LA directive Override en aucun;

ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.confli
… Snip…

Autoverride Aucun

… Snip…

Répertories sécurisées avec authentification

Vous pouvez créer des informations d'identification utilisateur pour protéger tout ou partie des répertoires à l'aide de l'utilitaire HTPassWD. Accédez à votre dossier de serveur et utilisez la commande suivante pour créer un .Fichier htpasswd pour stocker des hachages de mot de passe pour les informations d'identification attribuées, disons, un utilisateur nommé Dev.

ubuntu @ ubuntu ~: $ sudo htpasswd -c / etc / apache2 / -htpasswd dev

La commande ci-dessus demandera la nouvelle confirmation de mot de passe et de mot de passe. Vous pouvez voir le chat ./ HTPassWD Fichier pour vérifier le hachage des informations d'identification utilisateur stockées.

Maintenant, vous pouvez automatiquement définir le fichier de configuration dans le répertoire Your_Website que vous devez protéger en modifiant le .fichier htaccess. Utilisez la commande et les directives suivantes pour activer l'authentification:

ubuntu @ ubuntu ~: $ sudo nano / var / www / your_website /.htaccess
… Snip…
AuthType Basic
AuthName "Ajouter l'invite de dialogue"
AuthUserFile / etc / apache2 / user_name / domain_name /.htpasswd
Exiger un utilisateur valide
… Snip…

N'oubliez pas d'ajouter le chemin selon le vôtre.

Exécuter les modules nécessaires

La configuration Apache par défaut inclut des modules activés dont vous n'avez peut-être pas besoin. Ces modules préinstallés ouvrent des portes pour les problèmes de sécurité Apache qui existent déjà ou peuvent exister à l'avenir. Pour désactiver tous ces modules, vous devez d'abord comprendre quels modules sont requis pour le bon fonctionnement de votre serveur Web. À cette fin, consultez la documentation du module Apache qui couvre tous les modules disponibles.

Ensuite, utilisez la commande suivante pour déterminer quels modules fonctionnent sur votre serveur.

ubuntu @ ubuntu ~: $ sudo ls / etc / apache2 / mods-compatible

Apache est livré avec la puissante commande A2Dismod pour désactiver le module. Il empêche le chargement du module et vous invite à avertir lors de la désactivation du module que l'action peut avoir un impact négatif sur votre serveur.

ubuntu @ ubuntu ~: $ sudo a2Dismod module_name

Vous pouvez également désactiver le module en commentant la ligne de chargement de chargement.

Empêcher les loris lents et l'attaque DOS

L'installation par défaut d'un serveur Apache le force à attendre trop longtemps les demandes des clients, ce qui soumet au serveur le ralentissement des loris et des attaques DOS. L'Apache2.Le fichier de configuration de Conf fournit une directive que vous pouvez utiliser pour abaisser la valeur de délai d'expiration à quelques secondes pour empêcher ces types d'attaques, i.e.:

ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.confli
Timeout 60

En outre, le nouveau serveur Apache est livré avec un module pratique mod_reqtimeout qui fournit une directive requestReadTimeout pour sécuriser le serveur à partir des demandes illégitimes. Cette directive est livrée avec quelques configurations délicates, vous pouvez donc lire les informations connexes disponibles sur la page de documentation.

Désactiver les demandes HTTP inutiles

Les demandes illimitées HTTP / HTTPS peuvent également conduire à de faibles performances du serveur ou à une attaque DOS. Vous pouvez limiter la réception des demandes HTTP par directrice en utilisant LimitRequestbody à moins de 100K. Par exemple, pour créer une directive pour le dossier / var / www / your_website, vous pouvez ajouter la directive LimitRequestBody ci-dessous.e.:

… Snip…

Options - Indexes
Allaiter tout
LimitRequestbody 995367

… Snip…

Remarque: n'oubliez pas de redémarrer Apache après les modifications appliquées pour la mettre à jour en conséquence.

Conclusion

L'installation par défaut du serveur Apache peut fournir de nombreuses informations sensibles pour aider les attaquants à une attaque. En attendant, il existe de nombreuses autres façons (non répertoriées ci-dessus) pour sécuriser le serveur Web Apache, également. Continuez à rechercher et à vous tenir au courant de nouvelles directives et modules pour sécuriser votre serveur.