Forcer l'authentification par clé publique SSH pour des utilisateurs spécifiques

10

Est-il possible de forcer des utilisateurs spécifiques à se connecter avec une clé publique, tout en permettant à d'autres utilisateurs de se connecter avec un mot de passe? Étant donné que l'authentification par clé publique (avec phrase de passe) est plus forte que l'authentification par mot de passe uniquement, nous aimerions exiger que les sudoers se connectent avec la clé publique. Cependant, il est moins pratique de forcer les utilisateurs normaux à le faire. Dans sshd_config, je ne vois aucune configuration liée à la stratégie.

Crend King
la source

Réponses:

11

Vous avez quelques options. Dans cette réponse, je vais supposer que vous avez sudoersdéfini un groupe.

Jetez un œil à la sshd_configpage de manuel et recherchez la Matchdirective. Cela vous permet de spécifier des blocs de configuration qui s'appliquent uniquement à un sous-ensemble de vos connexions ssh. Vous pourriez faire quelque chose comme ça:

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no

En théorie, vous pourriez accomplir quelque chose de similaire avec une configuration PAM qui échouerait simplement aux tentatives d'authentification des personnes du sudoersgroupe. Cela impliquerait probablement le module pam_succeed_if ... vous pouvez ajouter quelque chose comme ça à votre authconfiguration pour sshd:

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet

Cela signifie que seules les personnes ne faisant pas partie du sudoersgroupe peuvent s'authentifier via PAM. Notez que cela n'a pas été testé. Vous pouvez également utiliser le module pam_listfile pour faire quelque chose de similaire.

larsks
la source
1
Merci! Je dois également noter que la directive Match est introduite dans OpenSSH 5.0. Pour les distributions conservatrices comme CentOS, il peut ne pas être disponible en natif.
Crend King
Cela casse OpenSSH 7.7p1 - J'ai dû supprimer la directive ChallengeResponseAuthentication afin de la faire redémarrer.
rbsec
2

Une autre réponse possible, comme @larsks, la réponse n'a pas fonctionné pour ma version de ssh_dcar ma version semble utiliser la documentation trouvée ici qui dit:

Seul un sous-ensemble de mots clés peut être utilisé sur les lignes suivant un mot clé Match. Les mots clés disponibles sont. . .

Cette liste de mots - clés ne comprend pas: ChallengeResponseAuthentication.

Une manière vraiment amusante que j'ai trouvée était d'utiliser AuthenticationMethodsce qui dans votre cas fonctionnerait comme ceci:

Match Group sudoers
AuthenticationMethods 'publickey'

AuthenticationMethods prend une liste de valeurs séparées par des virgules qui représentent une série de méthodes qu'un utilisateur doit passer avant d'accéder au serveur.

AuthenticationMethods 'publickey,password' forcerait l'utilisateur à passer avec une clé publique puis un mot de passe.

Pour en savoir plus man sshd_config.

Breedly
la source