156. OpenLDAP. Servicio y utilidaddes LDAP¶
156.1 Instalación de openLdap Ubuntu¶
Según documentación oficial
Instalamos
sudo apt install slapd ldap-utils
156.2 Configurar slapd¶
Podemos cambiar la base de DIT con
sudo dpkg-reconfigure slapd
156.2.1 DIT por defecto¶
slapd está preparado para ser configurado por el propio servicio sin necesidad de cambiar el fichero de configuración y reinicializar el servicio.
Esta base de configuración consiste en un conjunto de ficheros .ldif en el diectorio /etc/ldap/slapd.d . Estos ficheros no se deben editar. Esta configuración se llama metodo slapd-config o método RTC (REAL TIME CONF) o también método cn=config (se puede seguir usando la modificación de slapd.conf).
Inmediatamente después de la instalación tenemos dos bases de datos o "sufijos", uno para los datos dc=info,dc=etg y otro para la configuración cn=config. Para realizar cambios en cada uno de ellos necesitamos credenciales y métodos distintos.
* dc=info,dc=etg. el administrador es cn=admin,dc=info,dc=etg y la clave es la seleccionada durante la instalación.
* cn=config. Para los cambios se usa el sufijo especial DN gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth. Lo que significa que es como ve al usuario local root el directorio cuando usa autentificación SASL EXTERNAL
usando el trasporte ldapi:// a través del socket unix /run/slapd/ldapi. En resumen, solamente el root local puede cambiar cn=config.
El DIT de configuración a través del protocolo ldap:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
dn: cn=config
dn: cn=module{0},cn=config
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config
dn: olcDatabase={-1}frontend,cn=config
dn: olcDatabase={0}config,cn=config
dn: olcDatabase={1}mdb,cn=config
cn=config: global settings
cn=module{0},cn=config: a dynamically loaded module
cn=schema,cn=config: contains hard-coded system-level schema
cn={0}core,cn=schema,cn=config: the hard-coded core schema
cn={1}cosine,cn=schema,cn=config: the cosine schema
cn={2}nis,cn=schema,cn=config: the nis schema
cn={3}inetorgperson,cn=schema,cn=config: the inetorgperson schema
olcDatabase={-1}frontend,cn=config: frontend database, default settings for other databases
olcDatabase={0}config,cn=config: slapd configuration database (cn=config)
olcDatabase={1}mdb,cn=config: your database instance (dc=example,dc=com)
Y para DIT dc=info,dc=etg
$ ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn
dn: dc=example,dc=com
dn: cn=admin,dc=example,dc=com
observar que se utilizan dos métodos de acceso distintos:
- -x: this is called a simple bind, and is essentially a plain text authentication. Since no binddn was provided (via -D), this became an anonymous bind. Without -x, the default is to use a SASL bind.
- -Y EXTERNAL: this is using a SASL bind (no -x was provided), and further specifying the EXTERNAL type. Together with -H ldapi:///, this uses a local unix socket connection
(seguir en doc oficial)
156.2.2 Llenando el Directorio.¶
Vamos a añadir * un nodo llamado People * a nodo Groups * un grupo miners * un usuario john
(seguir con doc oficial)
156.2.3 Cambiando la configuración¶
156.2.3.1 Añadir un indice¶
Use ldapmodify to add an “Index” to your {1}mdb,cn=config database definition (for dc=example,dc=com). Create a file, call it uid_index.ldif, with the following contents:
dn: olcDatabase={1}mdb,cn=config
add: olcDbIndex
olcDbIndex: mail eq,sub
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f uid_index.ldif
modifying entry "olcDatabase={1}mdb,cn=config"
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcDatabase={1}mdb)' olcDbIndex
dn: olcDatabase={1}mdb,cn=config
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbIndex: mail eq,sub
156.2.4 Cambiar la password de rootDN¶
156.2.5 Añadir un esquema¶
Los** esquemas solamente se puede añadir a cn=config en formato LDIF. Se pueden encontrar esquemas sin convertir a LDIF en /etc/ldap/schema
Por ejemplo para añadir la política de password se añade ppolicy.ldif (que existe convertido)
$ sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif
adding new entry "cn=ppolicy,cn=schema,cn=config"
156.2.6 Logging¶
`
156.3 Control de acceso¶
156.4 Usar TLS¶
157. Enlaces¶
- documentación openldap
- Utilidad ldapsearch explicada y con ejemplos
- Openldap explicado por RH
- ldap account manager