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
informatica:linux:ssh_contra_ldap [2013/08/07 08:31] javiinformatica:linux:ssh_contra_ldap [2015/08/24 19:35] (current) jose
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 1**: 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... **Nota 2**: mejor usar /bin/bash como consola (editar ese campo en el servidor LDAP). Tiene autocompletion, colores, etc...
Line 15: 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:\\
 +
 +==== 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 53: Line 58:
  
 ===== Procedimiento ===== ===== Procedimiento =====
 +==== Cliente  SSH ====
  
 1. Instalar paquetes: 1. Instalar paquetes:
Line 64: 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 74: 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 102: 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 125: 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 132: 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 142: 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 175: Line 207:
  
   session     required      pam_mkhomedir.so skel=/etc/skel umask=0022   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'
 +
 +TODO: para poder  añadir mas de un usuario he tenido que modificar el schema de nis:
 +  olcAttributeTypes: {12}( 1.3.6.1.1.1.1.14 NAME 'nisNetgr
 +   oupTriple' DESC 'Netgroup triple' SYNTAX 1.3.6.1.1.1.0.0 )
 +Por:
 +  olcAttributeTypes: {12}( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' DESC 'Netgr
 +   oup triple' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) 
 +
 +
 +
 +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.1375864299.txt.gz · Last modified: 2015/04/13 20:19 (external edit)