En este artículo vamos a realizar la instalación y configuración básica de OpenLDAP en Freston utilizando como base el nombre DNS asignado.
Vamos a proceder con la instalación de LDAP.
El servidor OpenLDAP está disponible en el paquete slapd
. También nos conviene instalar el paquete ldap-utils
que contiene utilidades adicionales:
apt install slapd ldap-utils -y
Durante la instalación, se nos abrirá esta ventana emergente donde nos pedirá que introduzcamos la contraseña de administrador de este nuevo LDAP:
┌─────────────────────────┤ Configuring slapd ├──────────────────────────┐ │ Please enter the password for the admin entry in your LDAP directory. │ │ │ │ Administrator password: │ │ │ │ ______________________________________________________________________ │ │ │ │ <\Ok\> │ │ │ └────────────────────────────────────────────────────────────────────────┘
Una vez hemos instalado estos paquetes, podemos pasar a llevar a cabo la configuración inicial del servidor.
Los archivos de configuración del servidor LDAP se almacenan en la carpeta /etc/ldap/
. Pero en lugar de editar manualmente dichos archivos, es mejor ejecutar el asistente de configuración de slapd
. Para ello debemos ejecutar el siguiente comando:
dpkg-reconfigure slapd
Se nos abrirá un asistente y en primer lugar nos preguntara si deseamos omitir la configuración del servidor LDAP:
┌───────────────────────────────────┤ Configuring slapd ├───────────────────────────────────┐ │ │ │ If you enable this option, no initial configuration or database will be created for you. │ │ │ │ Omit OpenLDAP server configuration? │ │ │ │ <\Yes\> <\No\> │ │ │ └───────────────────────────────────────────────────────────────────────────────────────────┘
Respondemos que no, ya que precisamente lo que queremos es configurar el servidor LDAP.
Ahora, es el momento de especificar el nombre de dominio DNS:
┌───────────────────────────────────┤ Configuring slapd ├────────────────────────────────────┐ │ The DNS domain name is used to construct the base DN of the LDAP directory. For example, │ │ 'foo.example.org' will create the directory with 'dc=foo, dc=example, dc=org' as base DN. │ │ │ │ DNS domain name: │ │ │ │ javierpzh.gonzalonazareno.org_____________________________________________________________ │ │ │ │ <\Ok\> │ │ │ └────────────────────────────────────────────────────────────────────────────────────────────┘
Nombre de la Organización. En mi caso, establezco el mismo:
┌──────────────────────────────────┤ Configuring slapd ├───────────────────────────────────┐ │ Please enter the name of the organization to use in the base DN of your LDAP directory. │ │ │ │ Organization name: │ │ │ │ javierpzh.gonzalonazareno.org___________________________________________________________ │ │ │ │ <\Ok\> │ │ │ └──────────────────────────────────────────────────────────────────────────────────────────┘
En este punto, nos pedirá que introduzcamos una contraseña.
Acto seguido, tendremos que indicar que tipo de motor de base de datos vamos a utilizar. Yo selecciono el valor por defecto MDB:
┌───────────────────────────────────────┤ Configuring slapd ├───────────────────────────────────────┐ │ HDB and BDB use similar storage formats, but HDB adds support for subtree renames. Both support │ │ the same configuration options. │ │ │ │ The MDB backend is recommended. MDB uses a new storage format and requires less configuration │ │ than BDB or HDB. │ │ │ │ In any case, you should review the resulting database configuration for your needs. See │ │ /usr/share/doc/slapd/README.Debian.gz for more details. │ │ │ │ Database backend to use: │ │ │ │ BDB │ │ HDB │ │ MDB │ │ │ │ │ │ <\Ok\> │ │ │ └───────────────────────────────────────────────────────────────────────────────────────────────────┘
La respuesta de este apartado afectará cuando desinstalemos el paquete slapd
, ya que si marcamos que sí, al hacer un apt remove --purge slapd
se eliminará también la base de datos asociada al servidor LDAP.
┌─────────────────────┤ Configuring slapd ├─────────────────────┐ │ │ │ │ │ │ │ Do you want the database to be removed when slapd is purged? │ │ │ │ <\Yes\> <\No\> │ │ │ └───────────────────────────────────────────────────────────────┘
Yo respondo que sí.
Vamos con la última pregunta. Nos informa que en el directorio /var/lib/ldap
existe la configuración previa de la que se ha creado anteriormente, y nos da la opción de remover esa configuración y sustituirla por esta nueva.
┌──────────────────────────────────────┤ Configuring slapd ├───────────────────────────────────────┐ │ │ │ There are still files in /var/lib/ldap which will probably break the configuration process. If │ │ you enable this option, the maintainer scripts will move the old database files out of the way │ │ before creating a new database. │ │ │ │ Move old database? │ │ │ │ <\Yes\> <\No\> │ │ │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘
En mi caso, respondo que sí.
Y ya, vemos como se cierra el asistente y habría terminado el proceso de configuración inicial de LDAP:
root@freston:~# dpkg-reconfigure slapd Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.47+dfsg-3+deb10u4... done. Moving old database directory to /var/backups: - directory unknown... done. Creating initial configuration... done. Creating LDAP directory... done. root@freston:~#
Si hacemos uso del comando slapcat
nos mostraría, en formato LDIF, un volcado en bruto de los objetos que tiene ahora mismo el servidor LDAP:
root@freston:~# slapcat dn: dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: top objectClass: dcObject objectClass: organization o: javierpzh.gonzalonazareno.org dc: javierpzh structuralObjectClass: organization entryUUID: 138073ec-d23b-103a-9a84-cf984c8cb121 creatorsName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org createTimestamp: 20201214093249Z entryCSN: 20201214093249.630601Z#000000#000#000000 modifiersName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org modifyTimestamp: 20201214093249Z dn: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9NVFZcjVrK25sMFlEWVhmbHB1MEhETG9YRTVVZEhpU0U= structuralObjectClass: organizationalRole entryUUID: 138393ce-d23b-103a-9a85-cf984c8cb121 creatorsName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org createTimestamp: 20201214093249Z entryCSN: 20201214093249.651148Z#000000#000#000000 modifiersName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org modifyTimestamp: 20201214093249Z
Por último, vamos a crear dos unidades organizativas, una destinada a las Personas y otra para Grupos.
Para esto, he creado un fichero .ldif
llamado unidadesorganizativas.ldif
que posee este aspecto:
dn: ou=Personas,dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: top objectClass: organizationalUnit ou: Personas dn: ou=Grupos,dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: top objectClass: organizationalUnit ou: Grupos
Para cargar la configuración de este nuevo fichero, debemos hacer uso del siguiente comando:
ldapadd -x -D 'cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org' -W -f unidadesorganizativas.ldif
Aquí vemos el proceso:
root@freston:~# ldapadd -x -D 'cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org' -W -f unidadesorganizativas.ldif Enter LDAP Password: adding new entry "ou=Personas,dc=javierpzh,dc=gonzalonazareno,dc=org" adding new entry "ou=Grupos,dc=javierpzh,dc=gonzalonazareno,dc=org"
Podemos ver como nos pide introducir la contraseña del administrador, y una vez la hayamos introducido, veremos dos líneas como mensaje de la creación de estas nuevas unidades organizativas.
Si ahora volvemos a hacer uso del comando slapcat
:
root@freston:~# slapcat dn: dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: top objectClass: dcObject objectClass: organization o: javierpzh.gonzalonazareno.org dc: javierpzh structuralObjectClass: organization entryUUID: 138073ec-d23b-103a-9a84-cf984c8cb121 creatorsName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org createTimestamp: 20201214093249Z entryCSN: 20201214093249.630601Z#000000#000#000000 modifiersName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org modifyTimestamp: 20201214093249Z dn: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9NVFZcjVrK25sMFlEWVhmbHB1MEhETG9YRTVVZEhpU0U= structuralObjectClass: organizationalRole entryUUID: 138393ce-d23b-103a-9a85-cf984c8cb121 creatorsName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org createTimestamp: 20201214093249Z entryCSN: 20201214093249.651148Z#000000#000#000000 modifiersName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org modifyTimestamp: 20201214093249Z dn: ou=Personas,dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: top objectClass: organizationalUnit ou: Personas structuralObjectClass: organizationalUnit entryUUID: 3d9e1f28-d23e-103a-83fb-cbbecae82d26 creatorsName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org createTimestamp: 20201214095528Z entryCSN: 20201214095528.779588Z#000000#000#000000 modifiersName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org modifyTimestamp: 20201214095528Z dn: ou=Grupos,dc=javierpzh,dc=gonzalonazareno,dc=org objectClass: top objectClass: organizationalUnit ou: Grupos structuralObjectClass: organizationalUnit entryUUID: 3da4c88c-d23e-103a-83fc-cbbecae82d26 creatorsName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org createTimestamp: 20201214095528Z entryCSN: 20201214095528.823265Z#000000#000#000000 modifiersName: cn=admin,dc=javierpzh,dc=gonzalonazareno,dc=org modifyTimestamp: 20201214095528Z
En la salida del comando, podemos apreciar como se han creado estos dos nuevos objetos Personas y Grupos, por lo que este post terminaría aquí.