web-dev-qa-db-fra.com

SSH avec authentification LDAP (Active Directory) et clés ssh stockées dans AD

Environnement: Serveurs Ubuntu 14.04 et 16.04, Active Directory sur Windows Server 2016, clients Ubuntu 14.04 et 16.04. Les serveurs et les clients Ubuntu ne sont pas sur le domaine.

Bonjour à tous,

Je suis un peu perdu avec tous les moyens pour réaliser l'authentification LDAP pour SSH. Mais je ne peux pas en trouver un qui me convient.

Mon souhait: Je ne veux pas me connecter à mes serveurs en me connectant avec "sAMAccount @ serverIP", mes clés SSH sont stockées dans mon AD (nouveau champ ajouté sous la forme odiSSHPubKeys). Mon serveur communique bien avec mon AD (requête ldapsearch). J'ai réalisé cela en mettant à jour mon sshdconfig:

/ etc/ssh/sshd_config

AuthorizedKeysCommand /usr/bin/auth
AuthorizedKeysCommandUser root

/ usr/bin/auth

#!/bin/bash

cn=$1
server=ldap.myad.net #Put your server IP
basedn=dc=mydomain,dc=net #Put your basedn
port=389
bindUser=myBindUser
bindPass=myBindUserPassword
#cn=mathieu

ldapsearch -LLL -o ldif-wrap=no -x -h $server -p $port -b $basedn -D $bindUser -w $bindPass -s sub "(sAMAccountName=$cn)" | sed -n 's/^[ \t]*odiSSHPubKeys:[ \t]*\(.*\)/\1/p'

Lorsque je me connecte à [email protected], je suis prévenu par preauth

/ var/log/auth.log

Apr 18 11:56:26 MLL-HV-UBU-16 sshd[9103]: Invalid user mathieu from 192.168.0.114
Apr 18 11:56:26 MLL-HV-UBU-16 sshd[9103]: input_userauth_request: invalid user mathieu [preauth]
Apr 18 11:56:26 MLL-HV-UBU-16 sshd[9103]: Connection closed by 192.168.0.114 port 50152 [preauth]

Donc, mon problème est que "mathieu" n'existe pas en tant qu'utilisateur sur mon serveur Ubuntu. J'essaie de forcer mon cn dans mon répertoire/usr/bin/auth et de m'enregistrer avec un compte root ([email protected]). Cela fonctionne. Mon identifiant/usr/bin/auth est correct.

Comment puis-je désactiver la vérification préalable pour laisser LDAP fonctionner?

PS: Je ne souhaite pas d’authentification par login/mot de passe (pour cette solution, il y a beaucoup de tutos, mais pas beaucoup pour les clés ssh ou les anciennes).

Merci de votre aide

3
matll42

La meilleure option ici est d’utiliser sssd à cette fin. J'utilise AltSecurityIdentities pour stocker les clés et joindre les serveurs au domaine à l'aide de realmd.

Une fois le domaine rejoint, ajoutez ce qui suit au fichier /etc/sssd/sssd.conf dans la section [domain /]:

ldap_user_extra_attrs = altSecurityIdentities: altSecurityIdentities

ldap_user_ssh_public_key = altSecurityIdentities

ldap_use_tokengroups = True

et sous la section [sssd], ajoutez:

services = nss, pam, sudo, ssh

Ensuite, dans le fichier/etc/ssh/sshd_config, ajoutez:

AuthorizedKeysCommand/usr/bin/sss_ssh_authorizedkeys

AuthorizedKeysCommandUser root

Redémarrez les deux services et vous devriez pouvoir vous connecter en utilisant votre nom d'utilisateur AD et le mot de passe stocké dans l'attribut étendu AltSecurityIdentities dans AD.

2
David