User Tools

Site Tools


informatica:linux:ssh_contra_ldap

This is an old revision of the document!


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:

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/sh
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

informatica/linux/ssh_contra_ldap.1375804943.txt.gz · Last modified: 2015/04/13 20:19 (external edit)