Administración del servidor

Instalar y configurar el servidor LDAP de Linux

Hace dos días, uno de los visitantes del sitio buscaba información acerca de LDAP y no encontró nada, lo que me impulsa a hacer una publicación sobre el servidor LDAP, por lo que llenamos los vacíos y traemos el contenido deseado a los visitantes.

 

 

¿Qué es LDAP?

Sabemos que Linux mantiene a los usuarios registrados en el archivo /etc/passwd, por lo que, si deseas acceder al dispositivo, debes tener un usuario definido en ese archivo.


Esto es bueno cuando está trabajando en una o unas cuantas máquinas, pero ¿qué sucede si tiene cientos de máquinas o tal vez miles, cómo vas a mantener las tareas de administración de usuarios como la modificación de contraseña o cualquier otra tarea administrativa como que alguien dejó el trabajo y necesitas cerrar su cuenta, ¿irías a cada máquina para hacer eso?

Eso podría ser una pesadilla. En este caso, necesitamos un sistema centralizado de administración de cuentas de usuario y una base de datos para mantener toda la información relacionada con las cuentas de los usuarios.

La solución más utilizada para este problema es el Protocolo ligero de acceso a directorios (LDAP).

LDAP usa el paradigma cliente / servidor habitual.

 

Usos de LDAP

LDAP no solo mantiene una lista de usuarios, puedes usarla como almacenamiento para tus archivos.

Se puede usar para autenticar usuarios como mencionamos anteriormente.

Puede almacenar registros DNS en el servidor LDAP.

LDAP se puede utilizar como un servicio de directorio de páginas amarillas para que una organización proporcione información sobre usuarios o empleados, departamentos, información de contacto, números de teléfono, direcciones, datos privados o lo que sea.

 

Implementaciones del servidor LDAP

LDAP es un protocolo estándar abierto, muchas empresas hacen su propia implementación del protocolo.

Hay implementaciones comerciales de LDAP como:

  • Microsoft Active Directory.
  • Oracle Internet Directory.
  • Oracle Unified Directory.
  • IBM Security Directory Server.
  • UnboundIDDirectory Server.
  • NetIQeDirectory o eDirectory.
  • CA Directory o CA eTrust Directory.

Y implementaciones gratuitas de código abierto como:

  • OpenLDAP.
  • ForgeRockOpenDJ.
  • Apache DS.
  • 389 directory server.

En esta publicación, usaremos OpenLDAP, que es muy común y amado por la comunidad.

OpenLDAP es la implementación de código abierto de LDAP que se ejecuta en sistemas Linux/ UNIX.

 

Instalando OpenLDAP

Para instalar OpenLDAP, debes instalar los paquetes openldap, openldap -servers y openldap – clients.

$ yum -y install openldap openldap-servers openldap-clients

O si está utilizando CentOS 7 puede utilizar DNF o dandified Yum

$ dnf -y install openldap openldap-servers openldap-clients

Si estás utilizando un sistema basado en Debian como Ubuntu, puede instalarlo así:

Entonces podemos habilitar que el servicio se ejecute automáticamente al inicio:

$ systemctl enable slapd

 



Configurando LDAP

Después de una instalación exitosa, debes crear una contraseña para el usuario administrador utilizando el comando ldappassword:

$ ldappassword

Los archivos de configuración para OpenLDAP se encuentran en el directorio  /etc/openldap/slapd.d

Puedes modificar estos archivos directamente o utilizar el comando ldapmodify. Se recomienda encarecidamente modificar OpenLDAP utilizando el comando ldapmodify.

 

Terminología LDAP

Si vamos a tratar con el protocolo LDAP, hay algunos términos que debemos saber porque los usaremos mucho.

Entry (u objeto): cada unidad en LDAP se considera un entry o entrada.

dn: El nombre de la entrada.

o: Nombre de la organización.

dc: Componente de dominio. Por ejemplo, likegeeks.com se escribe así dc = likegeeks, dc = com.

cn: Nombre común como el nombre de la persona o el nombre de algún objeto.


Modificar entradas

O

OpenLDAP almacena tu información en los archivos bdb o hdb.

La información guardada en el backend hdb se puede encontrar en el archivo    /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif .

Para identificar un elemento, usa el atributo dn (nombre completo). Entonces la primera línea en el archivo LDIF será:

dn: olcDatabase={2}hdb,cn=config

Luego especificamos si queremos agregar o modificar

changeType: modify

También debemos aclarar si lo reemplazaremos o lo eliminaremos

replace: olcSuffix

Y, finalmente, escribimos el nuevo valor del atributo cambiado.

olcSuffix: dc=likegeeks,dc=local

Volver a nuestro archivo. Cambie las siguientes entradas de la siguiente forma:

olcSuffix: dc=my-domain,dc=com

olcRootDN: cn=Manager,dc=my-domain,dc=com

Entonces nuestro archivo LDIF quedara así:

En nuestro archivo  /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif El atributo dn es:

olcDatabase = { 2} hdb, y debido a que el archivo está dentro de la carpeta config, el atributo dn completo es:

olcDatabase={2}hdb,cn=config

Luego guardamos nuestro archivo y usamos ldapmodify:

$ ldapmodify -Y EXTERNAL -H ldapi:/// -f myfile.ldif

LDAP server modify entry

Puede usar el comando ldapsearch para verificar los cambios:

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*

LDAP server ldapsearch

Y sí, los datos han sido cambiados.

Además, puedes usar el comando slaptest para verificar la configuración.

$ slaptest -u

 

Agregar entradas

Para agregar entradas, utiliza el comando ldapadd.

Primero, creamos nuestro archivo ldif:

Especificamos una serie de atributos, como el componente de dominio (dc), el nombre distinguido (dn) y la organización (o).

De acuerdo con el tipo de objeto que estamos creando el cual es dcObject en nuestro caso, algunos atributos son obligatorios y otros son opcionales.

Verifica el esquema de acuerdo a tu sistema.

En CentOS 6 puedes ir al archivo /etc/openldap/slapd.d/cn=config/cn=schema

En CentOS 7 se encuentra en  /etc/openldap/schema

También, puedes utilizar el comando grep para obtener los archivos schema de tu sistema.

La organización de objetos en nuestro ejemplo está en el archivo  cn={1}core.ldif  en CentOS 6 o  core.schema  en CentOS 7.

LDAP server core schema

Como podemos observar, el único atributo requerido es o el cuál es la organización.

Ahora podemos utilizar el comando ldapadd para agregar nuestro objeto:

$ ldapadd -f myobj.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

Especificamos el nombre de archivo usando -f, el usuario administrador usando -D y la contraseña usando -w.

Puedes verificar si la entrada fue creada utilizando el comando ldapsearch:

$ ldapsearch -x -b dc=likegeeks,dc=local

 

Agregar unidades organizativas

Puede agregar unidad organizativa (ou). Primero, crea un nuevo archivo LDIF. Vamos a nombrarlo users.ldif , y coloquemos esto:

Luego utilizamos ldapadd para agregar la unidad:

$ ldapadd -f users.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

Esta unidad organizacional contiene todos los usuarios de LDAP.

 


Agregar usuarios

Podemos agregar usuarios a la unidad organizativa recién creada.

Primero, creamos nuestro archivo ldif:

A continuación, agrega el usuario usando el comando ldapadd:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local 2 -w mypass

 

Agregar grupos

Además, creamos el archivo ldif primero:

Luego ejecuta ldapadd para agregar el grupo:

$ ldapadd -f groups.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

 


Eliminar entradas

Eliminar una entrada es muy fácil, simplemente utiliza el comando ldapdelete con la cn que desees:

$ ldapdelete "cn=adam,ou=users,dc=likegeeks,dc=local" -D cn=admin,dc=likegeeks,dc=local -w mypass

Puedes verificar si la entrada se borra utilizando ldapsearch:

$ ldapsearch -x -b "dc=likegeeks,dc=local"

 

Puerto LDAP

El puerto Ldap es 389 y en caso de que asegures tu ldap utilizando TLS, el puerto será 636.

Puedes asegurarte de qué puerto se está ejecutando tu OpenLDAP utilizando el comando netstat.

$ netstat -ntlp | grep slapd

LDAP server port

 

Autenticando usuarios con LDAP

De forma predeterminada, Linux autentica a los usuarios que usan el archivo /etc/passwd. Ahora veremos cómo autenticar usuarios utilizando OpenLDAP.

Asegúrate abrir los puertos OpenLDAP (389, 636) en tu sistema.

Si estás utilizando el firewall de iptables, te recomiendo que revise la publicación de iptables para comprender estos comandos Firewall de iptables de Linux.

$ authconfig --enableldap --enableldapauth --ldapserver ver=192.168.1.10 --ldapbasedn="dc=likegeeks,dc=local" --enableldaptls --update

Los certificados están en /etc/openldap/cacerts.

Cuando creamos un usuario, debes definir algunos campos necesarios.

Si quieres crear al usuario adam. Primero debes crear el archivo adam.ldif y escribir lo siguiente:

Si estás utilizando CentOS 7, debes cifrar las contraseñas con el comando slappasswd antes de colocarlas en tu archivo LDIF como se muestra a continuación:

$ slappasswd

Luego copiamos la contraseña cifrada en el archivo ldif, por lo que el archivo se mostrara de la siguiente forma:

Ahora podemos utilizar ldapadd para agregar al usuario:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

 

Uso de la interfaz web del servidor LDAP ( phpldapadmin )

Puede ser un poco complicado para un principiante trabajar desde una terminal, sin embargo, existe una herramienta web llamada phpldapadmin que está escrita en PHP para simplificar el trabajo con OpenLDAP.

Puedes instalarlo de la siguiente forma:

$ yum -y install phpldapadmin

El servidor apache se instalará, por lo que no es necesario que lo instales.

Se necesita hacer alguna pequeña configuración para abrir phpldapadmin;

Edita este archivo  /etc/phpldapadmin/config.php

Y cambia esta línea:

$servers->setValue('server','host','PUT YOUR SERVER IP OR DOMAIN HERE');

Si deseas utilizar likegeeks.local como dominio, debes escribirlo de la siguiente forma:

$servers->setValue('server','base',array('dc=likegeeks,dc=local'));

Además, debe cambiar la línea de bind_id de la siguiente manera:

$servers->setValue('login','bind_id','cn=admin,dc= likegeeks,dc=local');

Y no olvides poner tu alias de apache:

Ahora puedes acceder a tu phpldapadmin así:

http://server_domain_name_or_IP/ldap

en mi ejemplo, usaré:

http://likegees.local/ldap

En el campo DN de inicio de sesión usarás algo como lo siguiente:

cn=admin,dc=likegeeks,dc=local

Puedes hacer todo lo que hemos hecho en esta interfaz web, agregar usuarios, organizaciones y grupos.

Espero que la publicación te sea útil y fácil. No podemos cubrir todos los usos del servidor LDAP en una publicación, pero esta fue una breve mirada al protocolo LDAP y cómo usarlo.

Gracias.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *