User Tools

Site Tools


informatica:linux:ssh_contra_ldap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
informatica:linux:ssh_contra_ldap [2013/08/06 16:36] javiinformatica:linux:ssh_contra_ldap [2015/08/24 18:39] – [sudo como grupo LDAP] javi
Line 5: Line 5:
 **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 **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+**Nota 1**: la configuracion es 100% local, no hay que tocar el servidor LDAP\\ 
 + 
 +**Nota 2**: mejor usar /bin/bash como consola (editar ese campo en el servidor LDAP). Tiene autocompletion, colores, etc...
  
 En este ejemplo: En este ejemplo:
Line 13: Line 15:
 * Requiere TLS, pero el certificado esta autofirmado, por lo que el error debe ser ignorado por el cliente\\ * 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:\\ * Detalle de los usuarios y grupos que usaremos en el ejemplo:\\
-* Uso "/bin/bash" como consola, mola mas+ 
 +==== Servidor de LDAP ====
  
 **Usuarios** **Usuarios**
 +
 +MUY IMPORTANTE QUE ESTÉN CREADOS ASÍ!!! (tiene que tener el campo uid)
 +
 <code> <code>
 dn: ou=people,dc=example,dc=com dn: ou=people,dc=example,dc=com
Line 52: Line 58:
  
 ===== Procedimiento ===== ===== Procedimiento =====
 +==== Cliente  SSH ====
  
 1. Instalar paquetes: 1. Instalar paquetes:
  
-  sudo aptitude upda; sudo aptitude install libnss-ldapd+  sudo aptitude update; sudo aptitude install libnss-ldapd
      
 2. Pulsar "enter" en todas las preguntas, y si podemos elegir siempre "no". Luego refinamos la configuracion 2. Pulsar "enter" en todas las preguntas, y si podemos elegir siempre "no". Luego refinamos la configuracion
Line 63: Line 70:
   sudo /etc/init.d/nscd stop   sudo /etc/init.d/nscd stop
      
-4. Comprobar que el archivo:+4. Editar:
  
-  less /etc/nsswitch.conf+  sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.bak 
 +  sudo vim /etc/nsswitch.conf
      
-Contiene la siguiente configuracion:+Y dejar las siguientes lineas asi:
  
 <code> <code>
Line 73: Line 81:
 group:          compat ldap group:          compat ldap
 shadow:         compat ldap shadow:         compat ldap
- 
-hosts:          files dns 
-networks:       files 
- 
-protocols:      db files 
-services:       db files 
-ethers:         db files 
-rpc:            db files 
- 
-netgroup:       nis 
 </code> </code>
  
Line 101: Line 99:
  
 # The location at which the LDAP server(s) should be reachable. # The location at which the LDAP server(s) should be reachable.
-uri ldaps://ldap.local.jamgo.org:636+uri ldaps://ldap.local.example.org:636
  
 # The search base that will be used for all queries. # The search base that will be used for all queries.
Line 124: Line 122:
 6. Probamos: 6. Probamos:
  
 +Para ver los usuarios del LDAP que no estén en /etc/passwd:
 +  getent passwd
 +Probamos de conectar:
   ssh -l user1 servidor1.example.com   ssh -l user1 servidor1.example.com
-  + 
 +=== Método 2 === 
 +Actualmente se configura al instalar el paquete: 
 +  #apt-get install libpam-ldapd 
 +Ponemos el servidor de LDAP, el dominio (por ejemplo dc=matarosensefils,dc=net) y marcamos los servicios: 
 +  passwd 
 +  group 
 +  shadow 
 ====== sudo como grupo LDAP ====== ====== sudo como grupo LDAP ======
      
Line 131: Line 140:
  
 * Crear un grupo en LDAP que se llame por ejemplo "ldapsudo"\\ * Crear un grupo en LDAP que se llame por ejemplo "ldapsudo"\\
 +
 +<code>
 +# LDIF Export for cn=ldapsudo,ou=groups,dc=jamgo,dc=org
 +# Server:  (ldap.local.jamgo.org)
 +# Search Scope: sub
 +# Search Filter: (objectClass=*)
 +# Total Entries: 1
 +#
 +# Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on August 24, 2015 8:36 pm
 +# Version: 1.2.3
 +
 +version: 1
 +
 +# Entry 1: cn=ldapsudo,ou=groups,dc=jamgo,dc=org
 +dn: cn=ldapsudo,ou=groups,dc=jamgo,dc=org
 +cn: ldapsudo
 +gidnumber: 10003
 +memberuid: user1.surename1
 +memberuid: user2.surename2
 +objectclass: posixGroup
 +objectclass: top
 +</code>
 +
 * Que ese grupo sea el que determine que un usuario pertenece al selecto grupo de los "sudoers" * Que ese grupo sea el que determine que un usuario pertenece al selecto grupo de los "sudoers"
  
Line 141: Line 173:
   sudo aptitude install sudo-ldap   sudo aptitude install sudo-ldap
      
-**Nota 1**: instala como dependencia "nscd", que al cachear usuarios es mejor detener para hacer pruebas+**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: **Nota 2**: modifica el archivo /etc/nsswitch.conf y le anyade la siguiente linea:
  
Line 159: Line 192:
  
 6. (Comprobar) Creo que es necesario cerrar todas las sesiones abiertas y ya se puede comprobar 6. (Comprobar) Creo que es necesario cerrar todas las sesiones abiertas y ya se puede comprobar
 +
 +====== Crear directorio /home al hacer primer login ======
 +
 +https://wiki.debian.org/LDAP/PAM
 +
 +Requisito: tener instalado el paquete **libpam-ldapd**
 +
 +1. Editar:
 +
 +  sudo cp /etc/pam.d/common-session /etc/pam.d/common-session.bak
 +  sudo vim /etc/pam.d/common-session
 +  
 +Con la siguiente linea:
 +
 +  session     required      pam_mkhomedir.so skel=/etc/skel umask=0022
 +  
 +====== SSH solo a los miembros de un grupo ======
 +
 +https://wiki.debian.org/LDAP/PAM
 +
 +**TODO**: hacer que funcione con grupos LDAP de tipo  "posixGroup" en lugar de "nisNetgroup"
 +
 +**NOTA**: mientras estamos haciendo pruebas nos aseguramos de que el demonio 'nscd' esta parado
 +
 +0. (Servidor SSH) Instalar libpam-modules (seguramente ya instalados):
 +
 +  sudo aptitude update; sudo aptitude install libpam-modules
 +
 +1. (Servidor LDAP) crear un grupo de tipo "nisNetgroup":
 +
 +<code>
 +dn: cn=ldapssh,ou=groups,dc=example,dc=com
 +cn: ldapssh
 +description: Users allowed to login via SSH
 +nisnetgrouptriple: (,user1,)
 +objectclass: nisNetgroup
 +objectclass: top
 +</code>
 +
 +El usuario 'user1' es un usuario LDAP de tipo 'posixAccount'
 +
 +2. (Servidor SSH) Editamos:
 +
 +  sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak  
 +  sudo vim /etc/pam.d/common-auth
 +  
 +Y dejamos la linea asi:
 +
 +  auth    required                        pam_access.so
 +  auth    required                        pam_permit.so
 +
 +**NOTA**: si solo dejamos "pam_access.so" las tareas cron dejan de funcionar. Con esa configuracion los efectos en mi caso son los deseados: cron funciona y los usuarios que no son miembros del grupo LDAP (se hace mas adelante) no pueden iniciar sesion por SSH
 +
 +3. (Servidor SSH) Nos aseguramos que los [[http://linux.die.net/man/5/netgroup|netgroups]] de esta maquina se van a consultar tambien del servidor LDAP. Editamos:
 +
 +  sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.bak
 +  sudo vim /etc/nsswitch.conf
 +  
 +Y dejamos la linea asi:
 +
 +  netgroup:       nis     ldap
 +
 +4. (Servidor SSH) Comprobamos que los netgroup tambien los toma del servidor LDAP:
 +
 +  sudo getent netgroup ldapssh
 +
 +Salida esperada:
 +
 +  ldapssh              ( ,user1,)
 +
 +5. (Servidor SSH) Especificamos quien puede acceder y quien no. En este caso damos acceso al usuario local 'localuser' y a los miembros del **netgroup** (ojo, ni 'posixGroup' de LDAP ni grupos locales) llamado 'ldapssh':
 +
 +  sudo cp /etc/security/access.conf /etc/security/access.conf.bak
 +  sudo vim /etc/security/access.conf
 +  
 +Con el siguiente contenido:
 +
 +<code>
 ++ : @ldapssh localuser : ALL
 +- : ALL : ALL
 +</code>
 +
 +
 +
informatica/linux/ssh_contra_ldap.txt · Last modified: 2015/08/24 19:35 by jose