J'utilise Ubuntu.
Je me demande simplement s'il est possible d'avoir libpam-google-authentifier (qui vous permet de vous connecter en utilisant un code généré par votre téléphone) ET l'authentification par certificat configurée pour fonctionner ensemble, et si c'est possible, comment je procéderais le mettre en place. Ainsi - pour vous connecter à mon compte, vous devez avoir mon mot de passe, mon téléphone (et son mot de passe) ET mon certificat / clé privée et son mot de passe.
J'ai réussi à travailler tous les deux indépendamment, mais je n'ai jamais réussi à les faire travailler ensemble. Mais je suis sûr que c'est possible.
Merci.
Réponses:
Il est possible de le faire en enchaînant les modules PAM. Mais avant d'entrer dans les détails:
Une configuration incorrecte de PAM peut et vous empêchera de vous connecter à votre système
Heureusement, vous pouvez toujours démarrer en mode mono-utilisateur et résoudre le problème, mais sachez que PAM n'est pas quelque chose avec lequel vous voulez jouer plus que nécessaire.
Quoi qu'il en soit, l'idée derrière cela est qu'il est possible d'utiliser l' empilage de modules PAM pour vous assurer que
pam-google-authenticator
,pam_unix
(ce contrôle votre mot de passe) et le module de certificat doivent tous réussir à vous autoriser l' accès. Par défaut, PAM est configuré pour permettre à n'importe quel module d'authentification de vous authentifier, en ignorant les autres.Dans /etc/pam.d/common-auth, vous verrez près du haut une ligne qui ressemble à ce qui suit:
Cela indique à PAM que cela doit
pam_unix.so
réussir, il ignorera les deux règles suivantes (qui sont généralement un autre module d'authentification, puispam_deny.so
) et passera aux modules facultatifs. Cependant, en cas de défaillance du module, il sera ignoré et le contrôle passera au module suivant de la chaîne. Cela continue dans chaque module d'authentification jusqu'à ce que le contrôle passe au bloc facultatif ou que PAM atteigne pam_deny.so et échoue immédiatement.Cela peut être exploité pour garantir que
pam-google-authenticator
,pam_unix.so
et votre module PAM de certificat doit tous réussir pour vous permettre d'accéder. Je ne connais pas le nom du module d'authentification Google ou du module de certificat que vous utilisez, mais vous devriez pouvoir les trouver dans votre fichier d'authentification commune. Donc, en mettant quelque chose comme ça en haut:Remplacer
<n>
par le nombre de modules entre le module pam_permit.so ici et lepam_permit.so
module suivant - en d'autres termes, il doit être défini sur le code [success = n default = ignore] du module d'authentification le plus haut + 1. Cette syntaxe est un peu géniale , mais ignore essentiellement les modules d'authentification une fois que les modules ci-dessus ont réussi.Bien sûr, vous vous demandez peut-être comment limiter cette authentification en trois étapes à votre seul compte d'utilisateur. Cela peut être fait avec un
pam_succeed_if.so
module et doit être inséré au-dessus du bloc d'authentification en trois étapes décrit ci-dessus:Où
<username>
est remplacé par votre nom d'utilisateur. Cette ligne indique simplement que si pam_succeed_if.so réussit (alias votre nom d'utilisateur correspond au nom d'utilisateur sur cette ligne), PAM devrait alors passer aux modules suivants, qui sont les modules d'authentification en trois étapes. Sinon, PAM devrait passer aux vrais modules, qui sont à 4 modules de celui-ci.Pour faire correspondre plusieurs choses, par exemple l'appartenance à un groupe avec un certain nom d'utilisateur, plusieurs lignes doivent être utilisées, par exemple:
Avant de faire quoi que ce soit, je voudrais sauvegarder le fichier d'authentification commune et me familiariser également avec le mode mono-utilisateur et comment restaurer l'ancien fichier en cas d'urgence. Cette configuration n'a pas été testée par moi, mais elle devrait fonctionner.
Pour tester cela la première fois, ouvrez un shell racine ou deux et laissez-les tranquilles. Ceux-ci agissent comme des solutions de rechange en cas de problème, car vous pouvez facilement remplacer l'authentification commune par la sauvegarde. Ensuite, apportez ces modifications. Ensuite, essayez d'utiliser
su
pour vous connecter à votre compte d'utilisateur - vous devez passer par le processus d'authentification en trois étapes.La documentation complète du
pam_succeed_if.so
module est disponible à l' adresse http://linux.die.net/man/8/pam_succeed_ifla source
ChallengeResponseAuthentication
etUsePAM
«oui», puis définir les lignes détaillées dans ma réponse ci-dessus dans /etc/pam.d/sshd ou /etc/pam.d/common -auth, selon que vous souhaitez effectuer cette opération pour toutes les connexions ou simplement SSH. N'oubliez pas de supprimer la ligne de remplissage 'pam_certificate_auth.so' et de modifier la ligne [success = <n> en conséquence.J'ai lu ce post et j'ai trouvé que ça avait l'air cool - voici comment j'ai réussi à faire fonctionner l'authentification à trois facteurs. J'ai écrit un blog à ce sujet ici .
Fondamentalement, j'ai configuré Google Authenticator et le mot de passe dans PAM, puis mis en place une authentification par clé publique dans OpenSSH (cela contourne les deux autres), et enfin requis par OpenSSH pour s'authentifier également via PAM (la dernière ligne)
Depuis / etc / ssh / sshd_conf
la source
Seul Pubkey + GoogleAuth que vous devez ajouter en haut de votre /etc/pam.d/sshd
Je suppose que vous avez OpenSSH> = 6.2 et sshd_config édité
Pour plus de sécurité paranoïaque, ajoutez des configurations supplémentaires: D
la source