informatica:linux:ssh_contra_ldap
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
informatica:linux:ssh_contra_ldap [2013/08/06 14:04] – created javi | informatica:linux:ssh_contra_ldap [2015/08/24 18:39] – [sudo como grupo LDAP] javi | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== SSH contra LDAP ====== | ||
+ | |||
+ | ===== Antecedentes ===== | ||
+ | |||
**Objetivo**: | **Objetivo**: | ||
- | **Nota**: la configuracion es 100% local, no hay que tocar el servidor LDAP | + | **Nota |
+ | |||
+ | **Nota 2**: mejor usar /bin/bash como consola (editar ese campo en el servidor LDAP). Tiene autocompletion, | ||
+ | |||
+ | En este ejemplo: | ||
+ | |||
+ | * Servidor OpenLDAP v3\\ | ||
+ | * El servidor requiere un usuario bind (no permite busquedas anonimas)\\ | ||
+ | * Requiere TLS, pero el certificado esta autofirmado, | ||
+ | * Detalle de los usuarios y grupos que usaremos en el ejemplo: | ||
+ | |||
+ | ==== Servidor de LDAP ==== | ||
+ | |||
+ | **Usuarios** | ||
+ | |||
+ | MUY IMPORTANTE QUE ESTÉN CREADOS ASÍ!!! (tiene que tener el campo uid) | ||
+ | |||
+ | < | ||
+ | dn: ou=people, | ||
+ | objectclass: | ||
+ | ou: people | ||
+ | |||
+ | dn: cn=user1, | ||
+ | cn: user1 | ||
+ | gidnumber: 500 | ||
+ | givenname: Name | ||
+ | homedirectory: | ||
+ | loginshell: /bin/bash | ||
+ | objectclass: | ||
+ | objectclass: | ||
+ | objectclass: | ||
+ | sn: Surename | ||
+ | uid: user1 | ||
+ | uidnumber: 1001 | ||
+ | userpassword: | ||
+ | </ | ||
+ | |||
+ | **Grupos** | ||
+ | < | ||
+ | dn: ou=groups, | ||
+ | objectclass: | ||
+ | objectclass: | ||
+ | ou: groups | ||
+ | |||
+ | dn: cn=user1, | ||
+ | cn: user1 | ||
+ | gidnumber: 500 | ||
+ | memberuid: user1 | ||
+ | objectclass: | ||
+ | objectclass: | ||
+ | </ | ||
+ | |||
+ | ===== Procedimiento ===== | ||
+ | ==== Cliente | ||
1. Instalar paquetes: | 1. Instalar paquetes: | ||
- | sudo aptitude | + | sudo aptitude |
| | ||
2. Pulsar " | 2. Pulsar " | ||
Line 13: | Line 70: | ||
sudo / | sudo / | ||
| | ||
- | 4. Comprobar que el archivo: | + | 4. Editar: |
- | | + | |
+ | sudo vim / | ||
| | ||
- | Contiene la siguiente configuracion: | + | Y dejar las siguientes lineas asi: |
< | < | ||
Line 23: | Line 81: | ||
group: | group: | ||
shadow: | shadow: | ||
- | |||
- | hosts: | ||
- | networks: | ||
- | |||
- | protocols: | ||
- | services: | ||
- | ethers: | ||
- | rpc: db files | ||
- | |||
- | netgroup: | ||
</ | </ | ||
Line 51: | 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:// | + | uri ldaps:// |
# The search base that will be used for all queries. | # The search base that will be used for all queries. | ||
base ou=people, | base ou=people, | ||
+ | base ou=groups, | ||
# The LDAP protocol version to use. | # The LDAP protocol version to use. | ||
Line 70: | Line 119: | ||
sudo / | sudo / | ||
+ | |||
+ | 6. Probamos: | ||
+ | |||
+ | Para ver los usuarios del LDAP que no estén en / | ||
+ | getent passwd | ||
+ | Probamos de conectar: | ||
+ | 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, | ||
+ | passwd | ||
+ | group | ||
+ | shadow | ||
+ | |||
+ | ====== sudo como grupo LDAP ====== | ||
| | ||
- | 6. (OpenLDAP) Nos aseguramos que tenemos una cuenta similar a esta: | + | Seguimos el ejemplo anterior, y ahora queremos: |
+ | |||
+ | * Crear un grupo en LDAP que se llame por ejemplo " | ||
< | < | ||
- | dn: cn=user1,ou=people,dc=example,dc=com | + | # LDIF Export for cn=ldapsudo,ou=groups,dc=jamgo,dc=org |
- | cn: user1 | + | # Server: |
- | gidnumber: 500 | + | # Search Scope: sub |
- | givenname: Name | + | # Search Filter: (objectClass=*) |
- | homedirectory: /home/user1 | + | # Total Entries: 1 |
- | loginshell: /bin/sh | + | # |
- | objectclass: inetOrgPerson | + | # Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on August 24, 2015 8:36 pm |
- | objectclass: | + | # Version: 1.2.3 |
+ | |||
+ | version: 1 | ||
+ | |||
+ | # Entry 1: cn=ldapsudo, | ||
+ | dn: cn=ldapsudo, | ||
+ | cn: ldapsudo | ||
+ | gidnumber: 10003 | ||
+ | memberuid: user1.surename1 | ||
+ | memberuid: user2.surename2 | ||
+ | objectclass: | ||
objectclass: | objectclass: | ||
- | sn: Surename | ||
- | uid: user1 | ||
- | uidnumber: 1001 | ||
- | userpassword: | ||
</ | </ | ||
- | 7. Probamos: | + | * Que ese grupo sea el que determine que un usuario pertenece al selecto grupo de los " |
+ | |||
+ | 1. (Necesario en Ubuntu) Asignar una contrasenya al usuario " | ||
+ | |||
+ | sudo passwd | ||
+ | |||
+ | 2. Instalar paquetes: | ||
+ | |||
+ | sudo aptitude install sudo-ldap | ||
+ | |||
+ | **Nota 1**: instala como dependencia " | ||
+ | |||
+ | **Nota 2**: modifica el archivo / | ||
+ | |||
+ | sudoers: | ||
+ | |||
+ | 3. Convertirse en root: | ||
+ | |||
+ | su - | ||
+ | |||
+ | 4. Editar archivo sudoers: | ||
+ | |||
+ | visudo | ||
+ | |||
+ | 5. Dejar la linea asi: | ||
+ | |||
+ | %ldapsudo | ||
+ | |||
+ | 6. (Comprobar) Creo que es necesario cerrar todas las sesiones abiertas y ya se puede comprobar | ||
+ | |||
+ | ====== Crear directorio /home al hacer primer login ====== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Requisito: tener instalado el paquete **libpam-ldapd** | ||
+ | |||
+ | 1. Editar: | ||
+ | |||
+ | sudo cp / | ||
+ | sudo vim / | ||
+ | |||
+ | Con la siguiente linea: | ||
+ | |||
+ | session | ||
+ | |||
+ | ====== SSH solo a los miembros de un grupo ====== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | **TODO**: hacer que funcione con grupos LDAP de tipo " | ||
+ | |||
+ | **NOTA**: mientras estamos haciendo pruebas nos aseguramos de que el demonio ' | ||
+ | |||
+ | 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 " | ||
+ | |||
+ | < | ||
+ | dn: cn=ldapssh, | ||
+ | cn: ldapssh | ||
+ | description: | ||
+ | nisnetgrouptriple: | ||
+ | objectclass: | ||
+ | objectclass: | ||
+ | </ | ||
+ | |||
+ | El usuario ' | ||
+ | |||
+ | 2. (Servidor SSH) Editamos: | ||
+ | |||
+ | sudo cp / | ||
+ | sudo vim / | ||
+ | |||
+ | Y dejamos la linea asi: | ||
+ | |||
+ | auth required | ||
+ | auth required | ||
+ | |||
+ | **NOTA**: si solo dejamos " | ||
+ | |||
+ | 3. (Servidor SSH) Nos aseguramos que los [[http:// | ||
+ | |||
+ | sudo cp / | ||
+ | sudo vim / | ||
+ | |||
+ | Y dejamos la linea asi: | ||
+ | |||
+ | netgroup: | ||
+ | |||
+ | 4. (Servidor SSH) Comprobamos que los netgroup tambien los toma del servidor LDAP: | ||
+ | |||
+ | sudo getent netgroup ldapssh | ||
+ | |||
+ | Salida esperada: | ||
+ | |||
+ | ldapssh | ||
+ | |||
+ | 5. (Servidor SSH) Especificamos quien puede acceder y quien no. En este caso damos acceso al usuario local ' | ||
+ | |||
+ | sudo cp / | ||
+ | sudo vim / | ||
+ | |||
+ | Con el siguiente contenido: | ||
+ | |||
+ | < | ||
+ | + : @ldapssh localuser : ALL | ||
+ | - : ALL : ALL | ||
+ | </ | ||
+ | |||
- | ssh -l user1 servidor1.example.com |
informatica/linux/ssh_contra_ldap.txt · Last modified: 2015/08/24 19:35 by jose