Module d'authentification Apache avec base de donnée
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai récemment mis en place une authentification pour un serveur Web (Apache), en utilisant le module "mod_authn_dbd". Ce module permet de travailler avec une base de donnée pour vérifier les mots de passe.
J'effectue d'abord un filtre sur IP, puis un filtre sur l'authentification sur un seul répertoire, comme ceci : (site-web.conf)
<VirtualHost *:80> # Block all access to server root <Directory "/var/www/site-web.com/html/"> Require all denied </Directory> # Allow white list IPs for repertory 1 <Directory "/var/www/site-web.com/html/repertoire1"> Require all denied Require ip X.X.X.X </Directory> ####### authentication with database ####### DBDriver mysql DBDParams "dbname=site_db user=user pass=xxxx" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory "/var/www/site-web.com/html/repertoire1"> # mod_authn_core and mod_auth_basic configuration # for mod_authn_dbd AuthType Basic AuthName "test" AuthDigestNonceLifetime 10 # To cache credentials, put socache ahead of dbd here AuthBasicProvider socache dbd # Also required for caching: tell the cache to cache dbd lookups! AuthnCacheProvideFor dbd AuthnCacheContext my-server # mod_authz_core configuration Require valid-user # mod_authn_dbd SQL query to authenticate a user AuthDBDUserPWQuery "SELECT passwd FROM mysql_auth WHERE username = %s" </Directory> </VirtualHost>
En fait, je n'arrive pas à analyser les vulnérabilités de cette méthode car je ne vois pas trop comment est comparé le mot de passe. La requête SQL permet de sélectionner le mot de passe dans la base de donnée avec le nom d'utilisateur entré, à ce moment là, il y a un risque d'injections SQL non ? Ensuite, je ne sais pas par quel moyen le mot de passe entré est comparé à celui de la base de donnée.
Quelqu'un peut-il m'éclairer ?
Merci par avance
Lou
- Module d'authentification Apache avec base de donnée
- Base de registre - Guide
- Apache open office gratuit - Télécharger - Suite bureautique
- Authentification transcash ✓ - Forum Consommation & Internet
- Module d'expérience locale francais ✓ - Forum Matériel & Système
- Cisco eap fast module - Forum Windows 8 / 8.1
2 réponses
Bonjour,
Ce forum (Webmaster) convient pour cette question se rapportant à Apache. Le forum "Firewall" est plutôt réservé aux questions se rapportant aux pare-feu réseaux, logiciels ou matériels.
Le module mod_authn_dbd utilise des requêtes préparées, il n'y a donc pas vraiment de risque d'injections SQL.
Le mot de passe est simplement comparé par égalité de chaine de caractères, mais il faut tenir compte de la méthode HTTP utilisée et du "hash" appliqué : https://httpd.apache.org/docs/trunk/misc/password_encryptions.html
Les risques sont :
- Transmission du mot de passe (ou de son hash) en clair. Pour éviter cela, il faut utiliser HTTPS.
- Mot de passe faible. Il faut imposer des règles sur le choix du mot de passe.
- Brute-force. Tu peux bloquer les connexions après trop de tentatives en utilisant des outils comme fail2ban ou CSF.
Bonjour, merci pour votre réponse !
Concernant les requêtes préparées, avez-vous un lien donnant cette information ? Je n'ai rien trouvé à ce sujet pour ce module :/
Cela signifie que lorsque les identifiants sont entrés, ils sont hachés et ensuite donnés à la requête SQL :
C'est cela ?
Pour les risques, en effet j'ai déjà configuré du TLS, il ne me manque plus qu'à passer les mots de passe en SHA256, car actuellement ma base de donnée traite du MD5.
Bonjour,
Oui c'est indiqué ici : https://httpd.apache.org/docs/trunk/mod/mod_authn_dbd.html#security
Non, on peut tout à fait faire des requêtes SQL préparées avec l'information telle que donnée par le visiteur (sans calculer son hash).