Si queremos acceder a una máquina Linux vía SSH usando un usuario y contraseña de una cuenta de directorio activo (Active Directory), podemos hacerlo de la siguiente forma en SUSE Linux Enterprise.
Instalamos samba, winbind y kerberos, con todos sus paquetes:
HOST# zypper install krb5* samba*
A continuación, debemos editar varios archivos de configuración. En cada uno de ellos, cambiaremos los valores DOMINIO y DOMINIO.LOCAL por el nombre de dominio de nuestra empresa.
Empezamos por el archivo de configuración de samba. Reemplazamos su contenido:
HOST# vi /etc/samba/smb.conf
[global] workgroup = DOMINIO idmap gid = 10000-20000 idmap uid = 10000-20000 kerberos method = secrets and keytab realm = DOMINIO.LOCAL security = ADS template homedir = /home/%D/%U template shell = /bin/bash winbind offline logon = yes winbind refresh tickets = yes winbind use default domain = yes
NOTA: la última línea, "winbind use default domain = yes", hace que nos podamos logear con el usuario de dominio directamente, sin tener que usar "DOMINIO/usuario" como nombre de usuario de Linux.
Editamos el archivo de configuración de kerberos y lo reemplazamos:
HOST# vi /etc/krb5.conf
[libdefaults] default_realm = DOMINIO.LOCAL clockskew = 300 [realms] DOMINIO.LOCAL = { kdc = dc1.dominio.local default_domain = DOMINIO.LOCAL admin_server = dc1.dominio.local } [domain_realm] .dominio.local = DOMINIO.LOCAL [appdefaults] pam = { ticket_lifetime = 1d renew_lifetime = 1d forwardable = true proxiable = false minimum_uid = 1 }
Editamos el archivo de configuración winbind de PAM y lo reemplazamos:
HOST# vi /etc/security/pam_winbind.conf
[global] cached_login = yes krb5_auth = yes krb5_ccache_type = FILE
Editamos nsswitch.conf y añadimos compatibilidad con winbind en estos dos parámetros:
HOST# vi /etc/nsswitch.conf
passwd: compat winbind group: compat winbind
Debemos asegurarnos de tener configurado un servidor de consulta DNS que tenga acceso al dominio:
HOST# cat /etc/resolv.conf nameserver 192.168.110.4 nameserver 192.168.110.5
HOST# ping dominio.local PING dominio.local (192.168.110.4) 56(84) bytes of data. 64 bytes from dc1.dominio.local (192.168.110.4): icmp_seq=1 ttl=128 time=0.1ms 64 bytes from dc1.dominio.local (192.168.110.4): icmp_seq=2 ttl=128 time=0.2ms 64 bytes from dc1.dominio.local (192.168.110.4): icmp_seq=3 ttl=128 time=0.2ms 64 bytes from dc1.dominio.local (192.168.110.4): icmp_seq=4 ttl=128 time=0.2ms ^C --- dominio.local ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3049ms rtt min/avg/max/mdev = 0.161/0.202/0.231/0.031 ms
Unimos la máquina al dominio:
HOST# net ads join -U Administrador%Password Using short domain name -- DOMINIO Joined 'HOST' to dns domain 'dominio.local'
Activamos winbind como login source en PAM:
HOST# pam-config --add --winbind
Activamos la creación automática de carpetas /home/DOMINIO/usuario para que los usuarios puedan entrar al sistema (sin carpeta home no pueden acceder por SSH):
HOST# pam-config -a --mkhomedir
Arrancamos samba y winbind:
HOST# systemctl start smb
HOST# systemctl start winbind
Hacemos que sean persistentes a resets de la máquina:
HOST# systemctl enable smb Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
HOST# systemctl enable winbind Created symlink /etc/systemd/system/multi-user.target.wants/winbind.service → /usr/lib/systemd/system/winbind.service.
Limpiamos la cache de login. De esta manera, los usuarios de dominio ya podrán acceder vía SSH sin necesidad de reiniciar la máquina para aplicar cambios:
HOST# systemctl stop nscd
HOST# nscd -i passwd
HOST# nscd -i group
HOST# systemctl start nscd
Por último, elegimos qué usuarios del dominio podrán acceder vía SSH al servidor añadiéndolos manualmente al archivo de configuración de SSH (sino, todos los usuarios del dominio tienen acceso):
HOST# vi /etc/ssh/sshd_config
AllowUsers root blai
NOTA: poner aquí también todos los usuarios locales - como root - a los que queramos seguir permitiendo acceder al servidor vía SSH. Los usuarios deben estar separados por espacios.
Por último, reiniciamos el daemon de sshd para aplicar los cambios:
HOST# service sshd restart
A partir de ahora, ya podemos acceder al servidor que acabamos de configurar usando nuestro nombre de usuario de dominio y su correspondiente password.