Instalar y configurar Open LDAP

LDAP conocido como Light Weight Directory Access Protocoles un protocolo utilizado para acceder a los contenedores de servicios X.500 dentro de una empresa conocida por un directorio. Aquellos que estén familiarizados con la administración de Windows Server pueden pensar que LDAP es de naturaleza muy similar a Active Directory. Incluso es un concepto ampliamente utilizado de entrelazar estaciones de trabajo Windows en una empresa OpenLDAP CentOS. En el otro espectro, una estación de trabajo CentOS Linux puede compartir recursos y participar con la funcionalidad básica en un dominio de Windows.

La implementación de LDAP en CentOS como Agente de servidor de directorio, Agente de sistema de directorio o DSA (estos acrónimos son todos uno y el mismo) es similar a las instalaciones anteriores de Novell Netware que utilizan la estructura de árbol de directorio con NDS.

Breve historia de LDAP

LDAP se creó básicamente como una forma eficaz de acceder a directorios X.500 con recursos empresariales. Tanto X.500 como LDAP comparten las mismas características y son tan similares que los clientes LDAP pueden acceder a los directorios X.500 con algunos ayudantes. Aunque LDAP también tiene su propio servidor de directorio llamadoslapd. La principal diferencia entre LDAP y DAP es que la versión ligera está diseñada para funcionar sobre TCP.

Mientras que DAP usa el modelo OSI completo. Con el advenimiento de la prominencia de Internet, TCP / IP y Ethernet en las redes de hoy, es raro encontrar una implantación de servicios de directorio que utilice directorios empresariales DAP y X.500 nativos fuera de los modelos informáticos heredados específicos.

Los principales componentes utilizados con openldap para CentOS Linux son:

openldap Bibliotecas de soporte LDAP
servidor openldap Servidor LDAP
clientes openldap Utilidades de cliente LDAP
openldap-devel Bibliotecas de desarrollo para OpenLDAP
compay-openldap Bibliotecas compartidas OpenLDAP
bofetada Demonio del servidor de directorios de OpenLDAP
sorber Se utiliza para la replicación LDAP en un dominio empresarial

Note - Al nombrar su empresa, es una buena práctica utilizar el .localTLD. El uso de .net o .com puede causar dificultades al segregar una infraestructura de dominio interno y en línea. Imagine el trabajo extra para una empresa que utiliza internamente acme.com para operaciones tanto externas como internas. Por lo tanto, puede ser conveniente tener recursos de Internet llamados acme.com o acme.net . Luego, los recursos empresariales de redes locales se representan como acme.local . Esto implicará configurar registros DNS, pero pagará en simplicidad, elocuencia y seguridad.

Instalar Open LDAP en CentOS

Instale openldap, openldap-servers, openldap-clients y migrationstools desde YUM .

[root@localhost]# yum -y install openldap openldap-servers openldap-clients
migration tools
 Loaded plugins: fastestmirror, langpacks
 updates
 | 3.4 kB  00:00:00
 updates/7/x86_64/primary_db
 | 2.2 MB  00:00:05
 Determining fastest mirrors
 (1/2): extras/7/x86_64/primary_db
 | 121 kB  00:00:01
 (2/2): base/7/x86_64/primary_db
 | 5.6 MB  00:00:16
 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
 ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
 --> Finished Dependency Resolution
 base/7/x86_64/group_gz
 | 155 kB  00:00:00
 
 Dependencies Resolved
 
=============================================================================== 
=============================================================================== 
Package                                Arch
Version                             Repository                        Size 
=============================================================================== 
=============================================================================== 
Installing: 
openldap-clients                    x86_64
2.4.40-13.el7                    base                                 188 k 
openldap-servers                    x86_64
2.4.40-13.el7                    base                                 2.1 M  

Transaction Summary 
=============================================================================== 
===============================================================================
Install  2 Packages

Total download size: 2.3 M 
Installed size: 5.3 M 
Downloading packages:

Installed: 
openldap-clients.x86_64 0:2.4.40-13.el7                                       
openldap-servers.x86_64 0:2.4.40-13.el7                                       
Complete! 
[root@localhost]#

Ahora, comencemos y habilitemos el servicio slapd :

[root@centos]# systemctl start slapd 
[root@centos]# systemctl enable  slapd

En este punto, asegurémonos de que tenemos nuestra estructura openldap en / etc / openldap .

root@localhost]# ls /etc/openldap/ 
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@localhost]#

Luego asegúrese de que nuestro servicio slapd esté funcionando.

root@centos]# netstat -antup | grep slapd
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      1641/slapd
tcp6       0      0 :::389                 :::*                   LISTEN      1641/slapd
 
[root@centos]#

A continuación, configuremos nuestra instalación Open LDAP .

Asegúrese de que se haya creado nuestro usuario ldap del sistema .

[root@localhost]# id ldap 
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#

Genere nuestras credenciales LDAP.

[root@localhost]# slappasswd  
New password:  
Re-enter new password:  
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[root@localhost]#

Necesitamos guardar la salida de slappasswd.

Configurar LDAP abierto

Step 1 - Configure LDAP para el dominio y agregue un usuario administrativo.

Primero, queremos configurar nuestro entorno openLDAP. A continuación se muestra una plantilla para usar con el comando ldapmodify .

dn: olcDatabase={2}hdb,cn=config 
changetype: modify 
replace: olcSuffix 
olcSuffix: dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootDN 
olcRootDN: cn=ldapadm,dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootPW 
olcRootPW: <output from slap

Realice cambios en: /etc/openldap/slapd.d/cn=config/olcDatabase = {1} monitor.ldif con el comando ldapmodify.

[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif  
SASL/EXTERNAL authentication started 
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth 
SASL SSF: 0 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 

[root@localhost cn=config]#

Comprobemos la configuración LDAP modificada.

root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

[root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 
 # CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = 
entryCSN: 20170215204423.726622Z#000000#000#000000 
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z

[root@centos]#

Como puede ver, nuestras modificaciones empresariales LDAP se realizaron correctamente.

A continuación, queremos crear un certificado ssl autofirmado para OpenLDAP. Esto asegurará la comunicación entre el servidor empresarial y los clientes.

Step 2 - Cree un certificado autofirmado para OpenLDAP.

Usaremos openssl para crear un certificado ssl autofirmado. Vaya al capítulo siguiente,Create LDAP SSL Certificate with opensslpara obtener instrucciones para proteger las comunicaciones con OpenLDAP. Luego, cuando se configuren los certificados ssl, habremos completado nuestra configuración empresarial OpenLDAP.

Step 3 - Configure OpenLDAP para utilizar comunicaciones seguras con certificado.

Cree un archivo certs.ldif en vim con la siguiente información:

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem

Luego, nuevamente, use el comando ldapmodify para fusionar los cambios en la configuración de OpenLDAP.

[root@centos rdc]# ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@centos]#

Finalmente, probemos nuestra configuración de OpenLADP.

[root@centos]# slaptest -u 
config file testing succeeded 
[root@centos]#

Step 4 - Configurar la base de datos slapd.

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && 
chown ldap:ldap /var/lib/ldap/*

Actualiza el esquema OpenLDAP.

Agregue los esquemas LDAP coseno y nis.

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

Finalmente, cree el esquema empresarial y agréguelo a la configuración actual de OpenLDAP.

Lo siguiente es para un dominio llamado vmnet. local con un administrador LDAP llamado ldapadm .

dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People

dn: ou = Group,dc=vmnet,dc=local 
objectClass: organizationalUnit 
ou: Group

Finalmente, importe esto al esquema OpenLDAP actual.

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
 Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"

adding new entry "cn=ldapadm ,dc=vmnet,dc=local"

adding new entry "ou=People,dc=vmnet,dc=local"

adding new entry "ou=Group,dc=vmnet,dc=local"

[root@centos]#

Step 5 - Configurar un usuario empresarial OpenLDAP.

Abra vim o su editor de texto favorito y copie el siguiente formato. Esto está configurado para un usuario llamado "entacct" en el dominio LDAP "vmnet.local".

dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword: {crypt}x 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

Ahora importe los archivos anteriores, tal como se guardaron, en el esquema OpenLdap.

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif 
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" 

[root@centos]#

Antes de que los usuarios puedan acceder a LDAP Enterprise, debemos asignar una contraseña de la siguiente manera:

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct 
,ou=People,dc=vmnet,dc=local"

-s especifica la contraseña del usuario

-x es el nombre de usuario al que se aplica la contraseña actualizada

-D es el * nombre distinguido "para autenticar contra el esquema LDAP.

Finalmente, antes de iniciar sesión en la cuenta Enterprise, verifiquemos nuestra entrada OpenLDAP .

[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
 # extended LDIF
 #
 # LDAPv3
 # base <dc=vmnet,dc=local> with scope subtree
 # filter: cn=entacct
 # requesting: ALL 
 # 
 # entacct, People, vmnet.local 
dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top 
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword:: e2NyeXB0fXg= 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

La conversión de elementos como / etc / passwd y / etc / groups a la autenticación OpenLDAP requiere el uso de herramientas de migración. Estos se incluyen en el paquete migrationtools . Luego, se instala en / usr / share / migrationtools .

[root@centos openldap-servers]# ls -l /usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root  2652 Jun  9  2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root  2950 Jun  9  2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root  2946 Jun  9  2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root  3011 Jun  9  2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root  3006 Jun  9  2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root  3164 Jun  9  2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root  3146 Jun  9  2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root  5267 Jun  9  2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root  7468 Jun  9  2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root  3278 Jun  9  2014 migrate_automount.pl
-rwxr-xr-x. 1 root root  2608 Jun  9  2014 migrate_base.pl

Step 6 - Finalmente, necesitamos permitir el acceso al servicio slapd para que pueda atender las solicitudes.

firewall-cmd --permanent --add-service=ldap 
firewall-cmd --reload

Configurar el acceso del cliente LDAP

La configuración del acceso del cliente LDAP requiere los siguientes paquetes en el cliente: openldap, clientes open-ldap y nss_ldap.

Configurar la autenticación LDAP para sistemas cliente es un poco más fácil.

Step 1 - Instalar paquetes dependientes -

# yum install -y openldap-clients nss-pam-ldapd

Step 2- Configure la autenticación LDAP con authconfig .

authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update

Step 3 - Reinicie el servicio nslcd.

systemctl restart  nslcd