Protéger les pages d'administration de votre site Web Apache
Your login page sucks!
Les pages d'administration d'un site Web sont souvent protégées par un simple formulaire d'authentification.
Suffisant dans la plupart des cas, la situation peut devenir critique dans le cas d'une attaque en bonne éduforme : attaque brute, étude de vos pages indexées sous Google, exploitation des bugs connus...
Cet article présente un moyen simple d'ajouter un niveau de sécurité afin d'éviter toute intrusion qui pourrait être fatale à votre site.
Comment changer les droits d'accès
Le plus simple est de restreindre les accès au niveau de la configuration Apache. Ainsi, vous ne dépendez pas d'un système tiers et la maintenance reste simple.
Le tutorial a été construit sur un serveur Linux Ubuntu 9.04 et Apache2. En fonction de votre OS, les commandes peuvent varier. Dans les exemples qui suivent, l'url à sécuriser se nomme /admin. Changez-la en fonction de vos besoins.
Autoriser une liste d'adresses IP
Le principe est d'interdire l'accès à l'url sauf à une liste d'adresses IP.
Éditez le fichier de configuration de votre Virtual Host.
En ligne de commande :
# vi /etc/apache2/sites-enabled/mon-site
Ajoutez les instructions suivantes après la définition de la directive DocumentRoot :
<Location /admin>
Order Deny,Allow
Deny from All
Allow from 192.168.0. 123.123.123.123 111.111.111.111
</Location>
en remplaçant les adresses IP de la directive Allow from par les adresses IP publiques que vous voulez autoriser.
Redémarrez Apache :
# /etc/init.d/apache2 restart
Autoriser un type de navigateur
Le principe est d'interdire l'accès à l'url sauf pour un user-agent identifié, envoyé par le navigateur dans les en-têtes HTTP.
Dans l'exemple suivant, seul un navigateur dont la valeur du User-Agent commence par "c'est moi" sera autorisé à accéder à /admin. Modifiez votre user-agent avec un plugin comme Modify Headers pour Firefox et le tour est joué.
Activez le module SetEnvIf :
# a2enmod setenvif
Éditez le fichier de configuration du VH et ajoutez les lignes suivantes :
SetEnvIf User-Agent ^c\'est\ moi lets_go
<Location /admin>
Order Deny,Allow
Deny from all
Allow from env=lets_go
</Location>
Redémarrez Apache :
# /etc/init.d/apache2 restart
Autoriser un utilisateur
Le principe est d'interdire l'accès à l'url sauf à une personne identifiée. Apache ajoute un écran de login à celui du site Web.
Créez le fichier utilisateur /etc/apache2/conf.d/users
# htpasswd -bc /etc/apache2/conf.d/users admin monpasswd
Adding password for user admin
#cat /etc/apache2/conf.d/users
admin:uAoUIzkBkZ.4q
Éditez le fichier de configuration Apache et ajoutez les lignes suivantes :
<Lcoation /admin>
AuthType Basic
AuthName "Restricted access"
AuthUserFile /etc/apache2/conf.d/users
Require valid-user
</Location>
Redémarrez Apache :
# /etc/init.d/apache2 restart
Combiner les autorisations
Vous pouvez combiner plusieurs tests d'autorisation pour plus de simplicité ou plus de sécurité.
Éditez le fichier de configuration Apache et ajoutez les lignes suivantes :
SetEnvIf User-Agent ^c\'est\ moi cestmoi
<Location /admin>
AuthType Basic
AuthName "Restricted access"
AuthUserFile /etc/apache2/conf.d/users
Require valid-user
Order Deny,Allow
Deny from All
Allow from 192.168.0. 123.123.123.123 111.111.111.111
Allow from env=cestmoi
Satisfy Any
</Location>
La directive Satify Any permet une grande souplesse en autorisant l'accès si une des conditions est vraie.
A contrario, la directive Satify All permettrait une plus grand sécurité en autorisant l'accès si toutes les conditions sont vraies.
Redémarrez Apache :
# /etc/init.d/apache2 restart
Dans l'exemple, si votre IP est dans la liste autorisée ou bien que vous êtes un utilisateur reconnu ou encore que le User-Agent de votre navigateur commence par "c'est moi", l'accès à /admin vous est autorisé.
Rester vigilant
Cette protection reste simple et ne peut résister à une attaque en règle du type sniffing + spoofing menée par un expert.
Vous pouvez améliorer encore la sécurité de votre site en utilisant le protocole chiffré https:// avec un certificat privé obligatoire, côté navigateur, basé sur une clé longue, 4096 bits par exemple, protégée par mot de passe.
A ce niveau, il n'y a guère que les organisations de sécurité gouvernementales et une poignée de gurus qui peuvent vous inquiéter.
- Ajouter un commentaire
- 1143 lectures
-

