LINUX

Cómo configurar el servidor OpenLDAP y autenticar la estación de trabajo del cliente

LDAP o el protocolo ligero de acceso a directorios permite a cualquier persona localizar y conectarse a organizaciones, personas y otros recursos como archivos y dispositivos en una red (pública / privada). LDAP sigue el estándar X.500, un estándar para el servicio de directorio en una red que normalmente usa el paradigma cliente / servidor habitual. LDAP es más ligero porque en su versión inicial no incluía funciones de seguridad. El uso principal de los servicios de directorio es almacenar usuarios y datos de objetos en un sistema central y hacer que estos datos estén disponibles para otras aplicaciones principalmente para autenticación o como una libreta de direcciones y podemos lograr esto usando un servidor OpenLDAP. Este artículo cubre cómo configurar el servidor OpenLDAP y autenticar la estación de trabajo del cliente mediante el protocolo ligero de acceso a directorios en Ubuntu 16.04

Este tutorial cubre cómo configurar el servidor OpenLDAP y autenticar la estación de trabajo del cliente mediante el protocolo ligero de acceso a directorios en Ubuntu 16.04.

Usos de LDAP

→ LDAP mantiene a los usuarios y otros objetos de red en una base de datos central.

→ LDAP almacena información como información de texto sin formato, imágenes, datos binarios, certificados de clave pública en la base de datos central.

→ LDAP proporciona servicios de autenticación y autorización como la gestión de inicio de sesión.

→ LDAP también puede almacenar registros DNS en su base de datos.

→ LDAP se puede utilizar como servicio de directorio de páginas amarillas para cualquier organización.

Terminología LDAP

Las terminologías LDAP son parte de la Especificación de directorio X.500, que define los nodos en un directorio LDAP.

CN commonName
L localityName
ST stateOrProvinceName
O nombre de la organización
OU organizationUnitName
C countryName
CALLE calle Dirección
Componente de dominio de DC
ID de usuario de UID
DN Nombre distinguido

El último, es decir, DN (nombre distinguido) es una serie de pares clave / valor separados por comas que se utilizan para identificar entradas de forma única en la jerarquía del directorio. El DN es en realidad el nombre completo de la entrada. Por ejemplo, la cadena «CN = India, OU = Grupos de distribución, DC = gp, DC = gl, DC = linóxido, DC = com» es una ruta de una estructura jerárquica llamada Árbol de información del directorio y debe leerse de derecha (raíz) a izquierda (hoja).

En este artículo, configuraremos el servidor OpenLDAP en Ubuntu 16 y configuraremos un cliente OpenLDAP que recuperará las credenciales de inicio de sesión del servidor y autenticará a los usuarios.

Dirección IP
Servidor OpenLDAP
10.0.0.196
Cliente OpenLDAP
10.0.0.33

Instalar el servidor OpenLDAP

Instale OpenLDAP y sus utilidades usando apt-get y habilítelo durante el inicio. Durante la instalación, le pedirá que proporcione la contraseña de administrador.

# sudo apt-get update
# apt-get install slapd ldap-utils
# systemctl enable slapd

Usando netstat, verifique si el slapd se está ejecutando en el puerto no 389

# netstat -pltn

Ubuntu 16 se envía con firewall UFW de forma predeterminada. Si UFW está habilitado, abra el puerto no 389 usando los siguientes comandos.

# sudo ufw allow 389/tcp
# sudo ufw reload

El paquete OpenLDAP se ha instalado y ahora vamos a reconfigurar todos los valores predeterminados que se envían con ubuntu. Ejecute el siguiente comando para abrir la herramienta de configuración de paquetes.

# sudo dpkg-reconfigure slapd

La herramienta de configuración del paquete hará una serie de preguntas para volver a configurar OpenLDAP

→ ¿Omitir la configuración del servidor OpenLDAP?

→ Nombre de dominio DNS: linoxide.com

→ Nombre de la organización: linoxido

→ Ingrese la contraseña y confírmela: contraseña

→ Backend de base de datos para usar: HDB

→ ¿Desea que se elimine la base de datos cuando se purgue slapd?

→ ¿Mover la base de datos antigua?

→ ¿Permitir el protocolo LDAPv2?

Reiniciar OpenLDAP

# systemctl restart slapd

Puede cambiar la contraseña de administrador para OpenLDAP en una etapa posterior usando el siguiente comando.

# ldappassword

En esta etapa, hemos instalado y reconfigurado el servidor OpenLDAP. Para encontrar la entrada de administrador en la base de datos de OpenLDAP, usaremos el comando ldapsearch. ldapsearch solicitará la contraseña de administrador que hemos proporcionado durante la reconfiguración de OpenLDAP.

# ldapsearch -x -W -D cn=admin,dc=linoxide,dc=com -b dc=linoxide,dc=com -LLL

Enter LDAP Password:
dn: dc=linoxide,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: linoxide
dc: linoxide

dn: cn=admin,dc=linoxide,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9MkdIK2p1enlxQ3hFNmtMSE56TUE5NzZzOFQxVGdxSUE=

Agregar unidad organizativa (OU)

Para agregar OU, crearemos un archivo LDIF (Formato de intercambio de datos LDAP) que es el formato de texto estándar diseñado para intercambiar información desde el servidor LDAP. Agrega una unidad organizativa con el nombre «grupos».

# vi ou_group.ldif

dn: ou=groups,dc=linoxide,dc=com
changetype: add
objectClass: organizationalUnit
objectClass: top
ou: groups

Usaremos ldapadd para agregar la unidad organizativa anterior.

# ldapadd -W -D "cn=admin,dc=linoxide,dc=com" -f ou_group.ldif

Modificar la unidad organizativa (OU)

Para modificar una unidad organizativa, cree un archivo ldif con el siguiente contenido. En este ejemplo, estamos agregando una entrada para el código postal a la unidad organizativa existente.

# vi modify_ou.ldif
dn: ou=groups,dc=linoxide,dc=com
changetype: modify
add: postalCode
postalCode: 788109
-

Utilice ldapmodify para modificar la unidad organizativa

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_ou.ldif
Enter LDAP Password:
modifying entry "ou=groups,dc=linoxide,dc=com"

Eliminar unidad organizativa (OU)

Para eliminar una unidad organizativa, use ldapdelete especificando el nombre distinguido de la unidad organizativa

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "ou=groups,dc=linoxide,dc=com"
Enter LDAP Password:

Agregar grupos

Para agregar un grupo posix, crearemos un archivo LDIF para él.

# vi irc_users.ldif
dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
objectClass: posixGroup
objectClass: top
cn: ircusers
gidNumber: 4000

Use el comando ldapadd como antes para agregar el grupo

# ldapadd -x -W -D "cn=admin,dc=linoxide,dc=com" -f irc_users.ldif
Enter LDAP Password:
adding new entry "cn=ircusers,ou=groups,dc=linoxide,dc=com"

Modificar grupos

Defina el archivo ldif para modificar grupos, agregaremos ‘descripción’ para el grupo ircusers existente.

# vi modify_irc_users.ldif
dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
changetype: modify
add: description
description: Groups under OU

Utilice ldapmodify para modificar el grupo

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_irc_users.ldif
Enter LDAP Password:
modifying entry "cn=ircusers,ou=groups,dc=linoxide,dc=com"

Eliminar grupos

Para eliminar un grupo, use ldapdelete especificando el nombre distinguido del grupo.

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "cn=ircusers,ou=groups,dc=linoxide,dc=com"
Enter LDAP Password:

Agregar usuario

Primero genere la contraseña SSHA para el usuario que usa slappasswd

# slappasswd -h {SSHA} -s mypass
{SSHA}d9NeiNx4RLSEtXNuMxq7+jWK/5yxwCWT

A continuación, cree un archivo ldif para un usuario

# vi mike_user.ldif
dn: uid=mike,ou=groups,dc=linoxide,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: mike
sn: smith
givenName: mike
cn: mike
uidNumber: 4000
gidNumber: 4000
userPassword: {SSHA}d9NeiNx4RLSEtXNuMxq7+jWK/5yxwCWT
loginShell: /bin/bash
homeDirectory: /home/mike

Asegúrese de proporcionar el número de identificación de grupo correcto (gidNumber) que es 4000 en nuestro caso. Agregue el usuario anterior usando el comando ldapadd.

# ldapadd -x -W -D "cn=admin,dc=linoxide,dc=com" -f mike_user.ldif
Enter LDAP Password:
adding new entry "uid=mike,ou=users,dc=linoxide,dc=com"

Borrar usuario

Para eliminar un usuario use el comando ldapdelete

# ldapdelete -W -D "cn=admin,dc=linoxide,dc=com" "uid=mike,ou=groups,dc=linoxide,dc=com"

Verifique si la entrada ha sido eliminada usando el siguiente comando.

# ldapsearch -x -b "dc=linoxide,dc=com"

Modificar usuario

Para modificar un usuario, cree un archivo ldif y luego use ldapmodify para lograrlo.

# vi modify_mike.ldif
dn: uid=mike,ou=groups,dc=linoxide,dc=com
changetype: modify
replace: smith
sn: smt
-
add: title
title: Grand Poobah
-
add: jpegPhoto
jpegPhoto: /tmp/smith.png

Ahora ejecute el comando ldapmodify

# ldapmodify -x -W -D "cn=admin,dc=linoxide,dc=com" -f modify_mike.ldif
Enter LDAP Password:
modifying entry "uid=mike,ou=users,dc=linoxide,dc=com"

Buscar en la base de datos OpenLDAP

Desde el propio servidor, ahora puede verificar si puede leer la base de datos. El siguiente comando volcará el directorio completo.

# ldapsearch -x -LLL -H ldap:/// -b dc=linoxide,dc=com
dn: dc=linoxide,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: linoxide
dc: linoxide

dn: cn=admin,dc=linoxide,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

dn: ou=groups,dc=linoxide,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups

dn: ou=users,dc=linoxide,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users

dn: cn=dbagrp,ou=groups,dc=linoxide,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 678
cn: dbagrp

dn: cn=ircusers,ou=groups,dc=linoxide,dc=com
objectClass: posixGroup
objectClass: top
cn: ircusers
gidNumber: 4000

dn: uid=mike,ou=users,dc=linoxide,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: mike
sn: smith
givenName: mike
cn: mike
uidNumber: 4000
gidNumber: 4000
loginShell: /bin/bash
homeDirectory: /home/mike

Usando phpMyAdmin

Hemos creado / editado / buscado OU, grupos, usuarios a través de la línea de comando. Sin embargo, puede hacer lo mismo utilizando una interfaz web llamada phpldapadmin. El phpldapadmin se envía junto con ubuntu por defecto. Utilice apt-get para instalarlo.

# sudo apt-get install phpldapadmin

Edite el archivo de configuración de phpldapadmin para reflejar la estructura de directorios que hemos creado anteriormente.

# vi /etc/phpldapadmin/config.php
$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','LDAP-SERVER-IP');
$servers->setValue('server','base',array('dc=linoxide,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=linoxide,dc=com');

Ahora puede acceder a phpldapadmin a través de http: // LDAP-SERVER-IP / phpldapadmin. Inicie sesión con el usuario como estructura de directorio predeterminada y la contraseña como ‘contraseña’. Para proteger con contraseña la ubicación de phpldapadmin, cree un usuario usando apache utils htpasswd.

# sudo htpasswd -c /etc/apache2/htpasswd ldapadminuser
New password:
Re-type new password:
Adding password for user ldapadminuser

Agregue la siguiente sección en el archivo de configuración principal de apache /etc/apache2/apache2.conf

# vi /etc/apache2/apache2.conf

<Location /phpldapadmin>
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/apache2/htpasswd
Require valid-user
</Location>

Reiniciar Apache

# systemctl restart apache2

Actualice la página phpldapadmin, verá la solicitud de contraseña que configuró usando htpasswd utils.

Instalar el cliente OpenLDAP

Instalaremos algunos paquetes en la máquina cliente para que la autenticación funcione correctamente con un servidor OpenLDAP.

# apt-get install ldap-auth-client nscd

Se le hará una serie de preguntas similares a las que se hicieron durante la configuración del servidor.

→ Identificador uniforme de recursos del servidor LDAP: ldap: //10.0.0.196

→ Nombre distinguido de la base de búsqueda: dc = linoxide, dc = com

→ Versión LDAP: 3

→ Hacer administrador de base de datos raíz local:

→ ¿La base de datos LDAP requiere inicio de sesión?

→ Cuenta LDAP para root: cn = admin, dc = linoxide, dc = com

→ Contraseña de la cuenta raíz LDAP: contraseña

Siempre puede cambiar la configuración ejecutando el siguiente comando en la terminal.

#  sudo dpkg-reconfigure ldap-auth-config

Configurar el cliente OpenLDAP

Necesitamos editar el archivo /etc/nsswitch.conf para informar a los archivos de autenticación sobre la presencia de un servidor OpenLDAP. Edite el archivo /etc/nsswitch.conf y modifique las líneas que comienzan con passwd, group, shadow para que se vean como se muestra a continuación.

# vi /etc/nsswitch.conf
passwd:         ldap compat
group:            ldap compat
shadow:         ldap compat

Edite /etc/pam.d/common-session y la siguiente línea al final del archivo.

# vi /etc/pam.d/common-session
....................
....................

session required        pam_mkhomedir.so skel=/etc/skel umask=0022

Configurar nss usando auth-client-config con ldap

# auth-client-config -t nss -p lac_ldap
# cd /usr/share/pam-configs/
# vi mkhomedir

Name: Create home directory on login for Linoxide
Default: yes
Priority: 0
Session-Type: Additional
Session-Interactive-Only: yes
Session:
required                        pam_mkhomedir.so umask=0022 skel=/etc/skel

La última línea del archivo anterior creará un directorio de inicio en la máquina cliente cuando un usuario LDAP inicie sesión y no tenga un directorio de inicio. Ahora actualice la autenticación pam.

# pam-auth-update

Habilite la línea que dice «Crear directorio de inicio al iniciar sesión ……» y seleccione ‘Aceptar’. Reinicie nscd.

# /etc/init.d/nscd restart
[ ok ] Restarting nscd (via systemctl): nscd.service.

Enumere la entrada del archivo de contraseña usando getent. La lista incluirá el usuario LDAP ‘mike’ que hemos creado anteriormente en el servidor.

# getent passwd
mike:x:4000:4000:mike:/home/mike:/bin/bash

Si no ha instalado SSH anteriormente, instálelo usando SSH.

# apt-get install ssh

Asegúrese de haber configurado lo siguiente en sí en / etc / ssh / sshd_config

PermitRootLogin yes
UsePAM yes

Conéctese al servidor LDAP mediante SSH

# ssh mike@10.0.0.33

Otra forma de obtener el shell de mike es usando sudo en la máquina cliente.

# su - mike
mike@ip-10-0-0-33:~$

Al configurar el servidor OpenLDAP, hemos creado el administrador LDAP con el nombre distinguido «cn = admin, dc = linoxide, dc = com». Este valor admin coincide con el grupo de administradores que se encuentra en Ubuntu de forma predeterminada. Los usuarios de LDAP que hemos creado para el grupo de administración tendrán acceso al comando sudo ya que hay una entrada para él en el archivo / etc / sudoers como se muestra a continuación:

%admin ALL=(ALL) ALL

Para revocar el acceso a sudo para el grupo de administración, comente la línea anterior colocando un hash al principio de la línea. También puede otorgar acceso sudo a un usuario específico agregando% user ALL = (ALL) ALL al archivo / etc / sudoers.

Conclusión

Las ventajas de utilizar el servidor OpenLDAP es que la información de toda una organización se puede colocar en un depósito central. LDAP se puede utilizar como un directorio central accesible desde cualquier lugar de la red en lugar de administrar usuarios de cada grupo por separado. Además, LDAP admite Secure Sockets Layer (SSL) y Transport Layer Security (TLS), por lo que los datos confidenciales pueden protegerse de miradas indiscretas. Navegar Documentación de OpenLDAP para saber más sobre la administración de OpenLDAP.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar