Durcir la configuration de son serveur Apache2

Hello 🙂 Dans cet article nous allons aborder la sécurité de Apache2, par l’intermédiaire de son fichier de configuration apache2.conf , et des fichiers spéciaux que nous allons découvrir plus bas.
Fichier de configuration apache2
Commençons par « les bases » : Pour des raisons de sécurités évidentes , il est nécessaire de masquer la version d’Apache.
Éditez le fichier suivant /etc/apache2/apache2.conf
, et ajoutez les deux instances suivantes :
ServerTokens Prod
ServerSignature Off
Il est possible de tenter de limiter la portée des attaques de type DOS/DDOS (limiter le nombre de connexions simultanées) avec les instances MaxClients
et MaxKeepAliveRequests
(nb de connexions persistantes)
Voici un exemple pour « un petit serveur » (à placer à la fin de votre fichier apache2.conf
)
MaxClients 200
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 10
Timeout 30
Une fois que vous avez effectué ces modifications, il faut relancer apache2.
systemctl restart apache2
Les fichiers .htaccess et .htpasswd
Apache permet la gestion décentralisée de la configuration via des fichiers spéciaux placés dans l’arborescence du site web. Ces fichiers spéciaux se nomment en général .htaccess / .htpasswd.
Les directives placées dans les fichiers .htaccess s’appliquent au répertoires et sous-répertoires dans lequel vous avez placé ce fichier. Il donne donc la possibilité de personnaliser la configuration d’apache2 « à la carte » en fonction des sous répertoires.
La syntaxe des fichiers .htaccess est la même que celle des fichiers de configuration principaux. Comme les fichiers .htaccess sont lus à chaque requête, les modifications de ces fichiers prennent effet immédiatement. (Pas besoin de relancer le service apache2 !)
Apache désactive par défaut, la prise en charge des fichiers .htaccess / htpasswd, pour réactiver cette option, localisez les lignes suivantes et remplacer l’instance AllowOverride None
, par AllowOverride All

Une fois que cela est fait, redémarrez le service apache2 😉
systemctl restart apache2
Comme exemple, je vais créer ce fichier à la racine de mon serveur WEB : /var/www/html
nano /var/www/html/.htaccess
# Désactiver le listage des dossiers / sous dossiers / fichiers ( # "index of x")
options -indexes

Nous obtenons une erreur 403 forbidden, et c’est normal, car nous n’avons plus le droit de lister les fichiers dossiers du serveur web. Pour me faciliter la vie, la suite du tutoriel ne prendra plus en compte l’interdiction du listage des dossiers / fichiers. J’ai donc enlever la directive option -indexes
de mon fichier .htaccess. Si votre serveur est exposé sur internet ou accessible à un grand nombre d’utilisateurs, je vous recommande fortement d’activer cette option.
Interdire l’accès direct via URL (« hotlink ») aux types de fichiers suivants :
RewriteEngine on
RewriteRule .*\.(rar|exe|mp3|swf|psd|txt|tgz|csv|zip)$ http://votredomain.com [R,NC]
# si on tente d'y accéder, apache2 redirigera la requête vers la racine de votre Serveur WEB : http://votredomain.com
# L'instruction doit être sur une ligne
Utiliser une page dédiée, et non l’erreur par défaut 404 / 403 …
# Dans ce cas précis, il faudra upluader vos "pages d’erreurs, à la racine de votre serveur WEB
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
Rediriger un dossier vers un autre dossier / serveur web
# Rediriger une req http de http://domain.com/private vers http://domain.com/
RedirectMatch 301 ^/private/.* http://domain.com
Protéger un répertoire spécifique !
Supposons que vous ayez créé un dossier « administrator » dans lequel il y a tous les fichiers d’administration de votre site. Comment empêcher que n’importe qui accède à ces pages ?
C’est là que .htaccess
/ .htpasswd
vont bien nous aider : on peut très facilement créer une protection par login/mot de passe qui empêche l’accès à tous les fichiers du dossier.
Il va falloir créer deux fichiers dans /var/www/html/administrator
:
.htaccess
(Et oui un nouveau !)? Il contiendra l’adresse du.htpasswd
et quelques autres options que vous pourrez définir.htpasswd
contiendra une liste de logins/mots de passe, pour chaque personne autorisée à accéder aux pages !
Pour cet exemple, les deux fichiers vont être créer dans le dossier /administrator du site web.
touch .htaccess .htpasswd
nano .htaccess
AuthName "Access is restricted !"
AuthType Basic
AuthUserFile "/var/www/html/administrator/.htpasswd"
Require valid-user
nano .htpasswd
Pour crypter votre mot de passe, utiliser la fonction PHP crypt() ou bien alors vous pouvez utiliser le site suivant qui permet de vous faciliter la tâche… : https://www.web2generators.com/apache-tools/htpasswd-generator
admin:$apr1$oey1g5xd$7SqZBVFfhjWmU41JImoYW0
# admin, représente un utilisateur quelconque
Essayer d’accéder à votre dossier administrator :

Si le couple login/mdp est correct, vous allez pouvoir visualiser le contenu du dossier administrator (à condition d’avoir desactiver l’option options -indexes
dans le premier fichier .htaccess 🙂 )

En revanche, voici l’erreur obtenu dans le cas contraire !

Voilà, cet article est finit ! Bien sur, ce que je vous ai présenté ne représente pas la totalité des fonctionnalités, Il y en a plein d’autres, mais celle-ci sont les plus connus.
À bientôt 🙂
Brlndtech
En savoir plus sur Le Guide Du SecOps • LGDS
Subscribe to get the latest posts sent to your email.