This is an old revision of the document!
Table of Contents
SSH contra LDAP
Antecedentes
Objetivo: iniciar una sesion SSH con un usuario almacenado en un servidor LDAP (OpenLDAP en este caso) externo en lugar de en un archivo /etc/passwd local
Nota: la configuracion es 100% local, no hay que tocar el servidor LDAP
En este ejemplo:
* Servidor OpenLDAP v3
* El servidor requiere un usuario bind (no permite busquedas anonimas)
* Requiere TLS, pero el certificado esta autofirmado, por lo que el error debe ser ignorado por el cliente
* Detalle de los usuarios y grupos que usaremos en el ejemplo:
* Uso “/bin/bash” como consola, mola mas
Usuarios
dn: ou=people,dc=example,dc=com objectclass: organizationalUnit ou: people dn: cn=user1,ou=people,dc=example,dc=com cn: user1 gidnumber: 500 givenname: Name homedirectory: /home/user1 loginshell: /bin/bash objectclass: inetOrgPerson objectclass: posixAccount objectclass: top sn: Surename uid: user1 uidnumber: 1001 userpassword: {MD5}MD5hashedpassword
Grupos
dn: ou=groups,dc=example,dc=com objectclass: organizationalUnit objectclass: top ou: groups dn: cn=user1,ou=groups,dc=example,dc=com cn: user1 gidnumber: 500 memberuid: user1 objectclass: posixGroup objectclass: top
Procedimiento
1. Instalar paquetes:
sudo aptitude upda; sudo aptitude install libnss-ldapd
2. Pulsar “enter” en todas las preguntas, y si podemos elegir siempre “no”. Luego refinamos la configuracion
3. Detener el demonio que cachea los valores:
sudo /etc/init.d/nscd stop
4. Comprobar que el archivo:
less /etc/nsswitch.conf
Contiene la siguiente configuracion:
passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
5. Editar:
sudo rm -fr /etc/nslcd.conf; sudo vim /etc/nslcd.conf
Y anyadir el siguiente contenido:
# /etc/nslcd.conf # nslcd configuration file. See nslcd.conf(5) # for details. # The user and group nslcd should run as. uid nslcd gid nslcd # The location at which the LDAP server(s) should be reachable. uri ldaps://ldap.local.jamgo.org:636 # The search base that will be used for all queries. base ou=people,dc=example,dc=com base ou=groups,dc=example,dc=com # The LDAP protocol version to use. ldap_version 3 # The DN to bind with for normal lookups. binddn cn=readonly,dc=example,dc=com bindpw secretpassword # SSL options tls_reqcert allow
5. Reiniciar el servicio:
sudo /etc/init.d/nslcd restart
6. Probamos:
ssh -l user1 servidor1.example.com
sudo como grupo LDAP
Seguimos el ejemplo anterior, y ahora queremos:
* Crear un grupo en LDAP que se llame por ejemplo “ldapsudo”
* Que ese grupo sea el que determine que un usuario pertenece al selecto grupo de los “sudoers”
1. (Necesario en Ubuntu) Asignar una contrasenya al usuario “root”:
sudo passwd
2. Instalar paquetes:
sudo aptitude install sudo-ldap
Nota 1: instala como dependencia “nscd”, que al cachear usuarios es mejor detener para hacer pruebas Nota 2: modifica el archivo /etc/nsswitch.conf y le anyade la siguiente linea:
sudoers: files ldap
3. Convertirse en root:
su -
4. Editar archivo sudoers:
visudo
5. Dejar la linea asi:
%ldapsudo ALL=(ALL:ALL) ALL
6. (Comprobar) Creo que es necesario cerrar todas las sesiones abiertas y ya se puede comprobar