[Plugin] kzOtPHP pour double authentification (2FA, TOTP, QR-Code)
Bonjour,
Ce plugin permet de sécuriser davantage l'accès au back office de votre site (le côté admin) avec la double auhentification.
En plus de l'habituel couple "compte utilisateur / mot de passe", il vous sera demandé un code PIN ( courte série de chiffres ) généré sur votre smartphone avec une application d'authentification.
On considère aujourd'hui que le couple ci-dessus est insuffisant pour garantir un accès sécurisé à un compte.
Pour améliorer cela, une tentative a été faite avec les images de mots mais cela n'est plus fiable maintenant.
On a donc remplacé cela par un code PIN qui change toutes les 30 secondes et est calculé à partir d'une clé secrète partagée entre votre site et votre smartphone.
Si vous ne connaissez pas la double authentification, je vous encourage à lire l'article suivant :
Numérama : Comment sécuriser facilement ses comptes avec la double authentification
Pour utiliser ce plugin, lire l'aide en ligne depuis les listes de plugins.
Télécharger la dernière version du plugin
2024-10-10 : version 1.1.2 - fait quelques tests supplémentaires
2024-04-29 : version 1.0.1 - corrige problème de dépendance - Nécessite PHP-7.2.5 ou +
2024-04-25 : version 1.0.0 - Compatible avec PHP-8.3.6 - Nécessite au minimum PHP-7.1
2018-03-14 : version 0.9.0 - QR-code embarqué dans la page de profil au format data-uri si généré en interne (voir billet #28) - version compatible PHP-5.6 ( Free.fr )
2018-03-13 : version 0.8.1 - Fix dans .htaccess pour free.fr
2018-03-12 : version 0.8 - 1ère version publiée.
Ce plugin permet de sécuriser davantage l'accès au back office de votre site (le côté admin) avec la double auhentification.
En plus de l'habituel couple "compte utilisateur / mot de passe", il vous sera demandé un code PIN ( courte série de chiffres ) généré sur votre smartphone avec une application d'authentification.
On considère aujourd'hui que le couple ci-dessus est insuffisant pour garantir un accès sécurisé à un compte.
Pour améliorer cela, une tentative a été faite avec les images de mots mais cela n'est plus fiable maintenant.
On a donc remplacé cela par un code PIN qui change toutes les 30 secondes et est calculé à partir d'une clé secrète partagée entre votre site et votre smartphone.
Si vous ne connaissez pas la double authentification, je vous encourage à lire l'article suivant :
Numérama : Comment sécuriser facilement ses comptes avec la double authentification
Pour utiliser ce plugin, lire l'aide en ligne depuis les listes de plugins.
Télécharger la dernière version du plugin
2024-10-10 : version 1.1.2 - fait quelques tests supplémentaires
2024-04-29 : version 1.0.1 - corrige problème de dépendance - Nécessite PHP-7.2.5 ou +
2024-04-25 : version 1.0.0 - Compatible avec PHP-8.3.6 - Nécessite au minimum PHP-7.1
2018-03-14 : version 0.9.0 - QR-code embarqué dans la page de profil au format data-uri si généré en interne (voir billet #28) - version compatible PHP-5.6 ( Free.fr )
2018-03-13 : version 0.8.1 - Fix dans .htaccess pour free.fr
2018-03-12 : version 0.8 - 1ère version publiée.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai un soucis pour générer le qrcode localement (il ne s'affiche pas), solution que je préfère à celle qui consiste à passer par google.
Quelle dépendance dois-je installer pour cela ?
Je l'ai testé en local sur mon PC avec Ubuntu 17.10 - PHP 7.1 et Apache
J'ai fait également le test sur un petit Odroid C1 avec Ubuntu 16.04 LTS - 7.0
Test aussi chez OVH avec un hébergememt Kimsufi et PHP 7.0
Jusqu'à là aucun souci.
J'ai voulu fait un essai chez Free.fr avec PHP5.6 et là ça coince. Le QR-code ne s'affiche. On a droit au texte alternatif "QR-code". Et le serveur m'envoie une erreur 500.
Dommage le reste a l'air de fonctionner sans souci. Donc, je suis obligé de passer par Google pour générer le QR-code.
Il faut que je pousse mes investigations un peu plus loin.
De toute façon je conseille d'avoir un PHP 7.0 minimum.
Dis-moi sous quel environnement tu travailles ?
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
La directive FilesMatch n'est pas acceptée dans le fichier .htaccess
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
PluXml/data/configuration/plugins
quand je mets oui pour Activer la double authentification ça ne semble pas être enregistré.
j'ai pas de QR code et quand je me connecte à la page d'authentification, forcément on me demande un PIN que je ne peux pas avoir.
pour FreeOTP, je rajouterai également ce lien : https://f-droid.org/packages/org.fedorahosted.freeotp/
Si j'ai bien compris le code QR devrait s'afficher sur la page d'édition du profil, après avoir mis à "oui" la zone "activer la double authentification".
A la place, j'ai ceci, mais pas de code :
sha256 - 6 digits
QR-Code
Scannez le QR-code
EDIT : je suis repassé à "non" et j'ai bien enregistré, mais après déconnexion, le code pin est réclamé :P
Une restauration de user.xml et plugins.xml et je suis de retour à l'état antérieur.
C'est un hébergement perso Free.fr
Avec PluXml 5.6, le dossier data/configuration/plugins est créé à l'installation.
N.B. le dossier peut être renommé, le plugin récupère le paramètrage enregistré par PluXml
Après avoir activé la double authentification dans la page de profil, il faut cliquer sur le bouton modifier le profil. Au retour un QR-code s'affiche. Si le QR-code n'a pas pu être généré en interne ou par Google, le texte alternatif "QR-Code" doit s'afficher. Le QR-Code est une image au format png.
L'emploi du générateur interne de QR-code exige au minimum PHP version 5.4. Sinon Google peut vous aider :P
La plus vieille version de PHP maintenue est la 5.6.34. Je ne ressens aucune vocation pour les antiquités :mad:
Si l'écran n'est pas assez large (smartphone), le QR-Code s'affiche à la fin de la page.
Sur la page d'authentification, le champ "code pin" s'affiche dès que le plugin est activé. Si la double authentification n'est pas activé pour le profil, la valeur du champ n'est pas prise en compte. Dans le cas de plusieurs utilisateurs, chacun peut activer la double authentification à sa convenance. Mais cela peut être plus restrictif dans les futures versions du plugin. A étudier.
J'ai refait une installation neuve de PluXml 5.6 en installant kzOtPHP comme premier plugin. Aucun souci ( Version de PHP : 7.1.11-0ubuntu0.17.10.1 Apache/2.4.27 (Ubuntu) )
Ce matin j'ai fait une install avec une image Docker basée sur Debian/Jessie (version PHP 5.6). Marche aussi bien.
@trentanel,
Cela veut dire que l'image PNG du QR-code ne s'est pas générée correctement en interne Tu dois avoir une erreur 404 ou 500 dans l'onglet réseau de l'inspecteur Web.
Il faut au minimum PHP version 5.4 - version 5.6 conseillée. Désactive le générateur interne de QR-code dans le panneau de config et Google générera le QR-Code. Mais bon...
Le plugin ne modifie pas le fichier users.xml. il n'utilise que son propre fichier de config kzOtPHP.xml. Si on désactive le plugin, les clés secrètes sont conservées tant qu'on efface pas le fichier de config.
En restaurant le fichier plugins.xml tu désactives le plugin. Tu peux aussi supprimer la ligne concernant le plugin dans ce fichier.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Oups, j'ai zappé F-Droid. Il semble qu'il y a plus de choix de FreeOTP, abandonné par Redhat.
Rechercher TOTP sur f-droid.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
ça enregistre et ça me mets "Enregistrement des données effectué avec succès" mais "Activer la double authentification" reste à non
dés que j'active le plugin, la 2FA est activé sans que je passe par le profil.
honnêtement, je vois pas ce que je peux faire de travers.
c'est sur une nouvelle install de PluXml et j'ai re-testé mais sans changement.
Version de PHP : 5.6.33
PluXml version 5.6 (encodage UTF-8)
kzOtPHP - Version 0.8.1 (13/03/2018)
sur un mutu OVH
Déjà, OVH préconise d'utiliser PHP 7.0.
[list=*]
[*]Je crée un dossier pour faire un test[/*]
[*]J'upload kzInstall.php[/*]
[*]j'ouvre la page kzInstall.php dans mon navigateur préféré[/*]
[*]J'attends que la page finisse de s'afficher[/*]
[*]rechargement de la page pour installer PluXml[/*]
[*]connexion au site[/*]
[*]activation du plugin kzUploader[/*]
[*]upload du plugin kzOtPHP avec kzUploader[/*]
[*]activation du plugin kzOtPHP[/*]
[*]sélection du générateur interne de QRcode dans le panneau de config[/*]
[*]enregistrement de la config[/*]
[*]activation de la double authentification dans le panneau de profil + enregistrer la modif[/*]
[*]scan du qrcode avec mon smartphone.[/*]
[*]déconnexion [/*]
[*]lecture du code pin sur le smartphone et saisie sur le nouveau site[/*]
[*]Et c'est prêt[/*]
[/list]
En 2mn, l'affaire est pliée.
C'est difficile de faire plus simple.
J'attends encore quelques retours pour intégrer ce plugin dans kzInstall.php. J'ai juste une ligne à rajouter.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Pour le reste ça fonctionne bien.
Merci pour ce plus.
de toute façon, tu indiques qu'il faut au mini la 5.4 donc c'est pas le problème.
sinon, pour l'install j'ai fait exactement la même chose que toi jusqu'à la configuration du plugin.
si jamais tu veux constater par toi même, je te déposes kzInstall.php chez moi et tu pourras tester.
Du coup, quand je passe par l'upload de ce fichier, j'ai cette erreur :
The following libraries are required :
- ZipArchive
Et quand je cherche le paquet correspondant, j'ai seulement ça :
android-libziparchive/stable 1:7.0.0+r33-1 amd64
bibliothèque pour les archives ZIP
android-libziparchive-dev/stable 1:7.0.0+r33-1 amd64
bibliothèque pour les archives ZIP – fichiers de développement
Non, cela n'a rien à voir.
ZipArchive est le nom d'une class PHP.
Sous Ubuntu 17.10, il faut faire : il s'agit du paquet php-zip
Le principal intérêt de kzInstall.php est quand on a un serveur distant perdu sur Internet. Cela évite de pâtir de la vitesse catastrophique en upload d'une ligne ADSL.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
On peut afficher le QR-code avec le générateur interne. Pour cela, il faut modifier le fichier .htaccess dans le dossier du plugin comme suit. La directive FilesMatch n'est pas prise en compte chez Free.fr.
Et à la racine du site, le .htaccess suivant force PHP à passer en version 5.6:
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Je préfère passer par l'espace client pour configurer PHP.
Voir copie d'écran
Que dit le fichier error.log ?
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Toujours pas de QR code en vue. Il faudrait sans doute que j'ai des directives similaires à celles-ci dans un .htaccess pour nginx ?
Le fichier .htaccess ne marche que pour les serveurs Apache. Il juste là pour interdire l'accès du dossier du plugin aux petits curieux sur le net.
il faut regarder les erreurs enregistrées dans le fichier /var/log/nginx/error.log.
Tu peux regarder comment est installé PHP en mettant sur ton serveur un fichier phpinfo.php avec ceci et en l'affichant dans Firefox ou autre
Pour kzInstall, il faut le mettre dans un dossier vide.
Comment tu fais pour avoir un serveur Nginx chez OVH, C'est un VPS ?
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Regarde avec phpinfo si tu as la librairie iconv installée
Voir la copie de la page phpinfo avec php et Nginx (attention image très très très haute)
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Quand au php il est lui aussi déjà en PHP Version 5.6.8.
Crée sur ton serveur un fichier, nommé par exemple variables.php, contenant simplement la ligne suivante et affiche la page dans ton navigateur préféré : Et vérifie que la variable $_SERVER contient au moin "fr", la langue d'administration de PluXml.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Cela se configure dans ton navigateur .
Pour Firefox, cliquer sur le burger (tri-barre en haut à droite, choisir préférences, général et langues et apparences, langue
Sous Debian, Firefox est configuré par défaut pour n'accepter que l'anglais, même si le reste est en français
Je vais rajouter un message d'avertissement pour ceux qui configurent mal leur navigateur :P
Sinon pour faire sauter le test de sécurité dans le fichier qrcode.php il faut modifier la ligne n°18 comme suit, mais c'est mal !
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Par contre, si je choisi "non" pour le générateur local, alors j'ai bien le code QR qui s'affiche. Avec "oui" c'est comme signalé plus haut.
Ah oui c'est vrai.
Je n'ai pas trouvé de piste en examinant les logs de ce site, malheureusement.
Oui
A priori oui :
ma config iconv
* Si le QR-code est généré en interne, l'image est embarquée au format binaire dans la page HTML. Le fichier qrcode.php des versions précèdentes est suprimé et il n'y pas de controle de langue (protection anti-hacking)
* Si les librairies Iconv ou ctype ne sont pas installées, le QR code sera généré directement par Google ( nécessaire pour Alpinelinux )
* Il y a 4 icones supplémentaires pour télécharger un logiciel d'authentification chez F-Droid
* il y 2 icones supplementaires qui pointent sur F-Droid et PlayStore pour rechercher le mot-clé TOTP.
* Testé chez Free.fr ( téléchargé avec kzUploader )
Même adresse de téléchargement.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
je sais pas pourquoi ça marche pas;
si tu veux regarder, je peux te donner un accès pour tester.