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.htpasswdet 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


Geoffrey Sauvageot-Berland

IngĂ©nieur diplĂŽmĂ© par l’état en Informatique et CybersĂ©curitĂ©. GĂ©nĂ©raliste, Ă  l'origine administrateur systĂšmes et rĂ©seaux, j’occupe actuellement un poste d’auditeur en sĂ©curitĂ© offensive. J’apprĂ©cie Ă©galement la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"