Article
Sécurisation Serveur Apache
Sécurisation d'un serveur apache au minima
Pour entamer notre réflexion, concentrons-nous sur les mesures minimales de sécurisation d'un serveur Apache exposé à Internet.
Configuration d'Apache
Il est important de dissimuler la version du serveur Apache dès le départ, et ce, pour des raisons de sécurité évidentes.
On va pour cela éditer le fichier suivant "/etc/apache2/apache2.conf", et ajoutez les deux instances suivantes :
ServerTokens
ProdServerSignature Off
Pour limiter les effets des attaques DOS/DDOS, il est possible d'agir sur le nombre de connexions simultanées en utilisant les instances MaxClients et MaxKeepAliveRequests, qui permettent de contrôler les connexions persistantes.
Voici un exemple de configuration pour un serveur Apache de petite taille (à placer à la fin de votre fichier apache2.conf).
MaxClients 200
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 10
Timeout 30
Une fois que vous avez effectué la modification, il faut redémarrer Apache2
sudo systemctl restart apache2
Le fichier .htaccess
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 aux répertoires et aux 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 identique à celle des fichiers de configuration principaux. Comme les fichiers ".htaccess" sont lus lors de chaque requête, les ajustements que vous y apportez seront effectifs instantanément. (pas besoin de relancer le service apache2 !)
Par défaut, Apache désactive la prise en charge des fichiers ".htaccess" et "htpasswd". Pour activer cette option, trouvez les lignes suivantes et changez "AllowOverride None" en "AllowOverride All".
<directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</directory>
Une fois que cela est fait, on peut redémarrer le service apache2
sudo systemctl restart apache2
À titre d'exemple, je vais placer ce fichier dans le répertoire principal de mon serveur web. "/var/www/html/"
sudo nano /var/www/html/.htaccess
Et y collé ceci
# Désactiver le listage des dossiers/sous dossiers/fichiers
options-indexes
Une erreur 403 forbidden s'affiche, ce qui est logique, car nous n'avons plus l'autorisation de lister les dossiers et fichiers du serveur web.
Interdire l'accès direct via URL aux types de fichiers demandés.
Options Indexes
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 pour les erreurs.
# Dans ce cas précis, il faudra uploader vos "pages d’erreurs, à la racine de votre serveur WEB
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
Protection password
Imaginez que vous ayez établi un répertoire intitulé « administrateur » et qu'il contienne l'ensemble des fichiers administratifs de votre site. Comment éviter que des personnes non autorisées consultent ces pages ?
C'est précisément dans ce cas que ".htaccess / .htpasswd" seront très utiles, car ils nous permettront de mettre en place rapidement une protection par identifiant/mot de passe qui restreindra l'accès à tous les fichiers du répertoire.
Il est nécessaire de générer deux fichiers dans le répertoire "/var/www/html/administrator":
-
.htaccess, le ".htpassword" aura son adresse spécifié dans le texte, qui comportera également d'autres options définissables.
-
.htpass, y sera énuméré les login et mots de passe de chaque individu ayant l'autorisation d'accéder aux pages en question.
Dans ce scénario, les deux fichiers seront créés dans le répertoire /administrator du site web.
sudo nano .htaccess
On y insère :
AuthName "Access is restricted !"
AuthType Basic
AuthUserFile "/var/www/html/administrator/.htpasswd"
Require valid-user
puis on modifie le fichier .htpasss
sudo nano .htpass
Afin de crypter votre mot de passe, vous avez la possibilité d'employer la fonction PHP crypt() ou de vous rendre sur le site web ci-après pour vous simplifier la tâche.
admin:motdepassecrypter
# admin, représente un utilisateur quelconque
Tentez de vous connecter à votre espace administrateur
Si les informations de connexion "login/mdp" sont correctes, vous pourrez afficher le contenu du dossier "administrator", à condition d'avoir désactivé l'option "options -indexes" dans le premier fichier ".htaccess".)
Dans le cas inverse, voici l'erreur qui en résulte. Unauthorized
Cet article est maintenant terminé, bien que je n'aie présenté qu'une partie des fonctionnalités, car il en existe beaucoup d'autres. Les fonctionnalités présentées sont cependant les plus renommées