SSH com autenticação LDAP (ActiveDirectory) e chaves ssh armazenadas no AD

4

Ambiente: Ubuntu 14.04 & 16.04 Servidores, Active Directory no Windows Server 2016, Ubuntu 14.04 & 16,04 clientes. Servidores e clientes Ubuntu não estão no domínio.

Olá a todos,

Estou um pouco perdido com todas as formas de conseguir a autenticação do ldap para o ssh. Mas não consigo encontrar um adequado para mim.

Meu desejo: Eu não quero ligar para os meus servidores por login com "sAMAccount @ serverIP", minhas chaves SSH são armazenadas no meu AD (novo campo adicionado como odiSSHPubKeys). Meu servidor se comunica bem com meu AD (consulta ldapsearch). Consegui isso atualizando meu 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]*\(.*\)//p'

Quando me conecto a [email protected], sou chutado por 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]

Então, meu problema é que "mathieu" não existe como usuário no meu servidor Ubuntu. Eu tento forçar meu cn em meu / usr / bin / auth e log com conta root ([email protected]) e ele funciona, então meu / usr / bin / auth id é bom.

Como posso desativar a verificação de pré-configuração para permitir que o ldap funcione?

PS: Eu não quero uma autenticação de login / senha (para esta solução, há muitos tutos, mas não muitos para chaves ssh ou antigas).

Obrigado pela sua ajuda

    
por matll42 18.04.2017 / 12:03

1 resposta

2

A melhor opção aqui é usar o sssd para essa finalidade. Eu uso o AltSecurityIdentities para armazenar as chaves e juntar os servidores ao domínio usando o realmd.

Depois de entrar no domínio, adicione o seguinte ao arquivo /etc/sssd/sssd.conf na seção [domain /]:

ldap_user_extra_attrs = altSecurityIdentities:altSecurityIdentities

ldap_user_ssh_public_key = altSecurityIdentities

ldap_use_tokengroups = True

e na seção [sssd], adicione:

services = nss, pam, sudo, ssh

Em seguida, adicione o / etc / ssh / sshd_config:

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys

AuthorizedKeysCommandUser root

Reinicie os dois serviços e você poderá fazer login usando seu nome de usuário do AD e a senha armazenada no atributo estendido AltSecurityIdentities no AD.

    
por David 27.06.2017 / 15:32