LINUX

Cómo configurar OpenLDAP con 2 hosts en modo espejo

configurar espejo openldapOpenLDAP es una implementación gratuita de código abierto del Protocolo ligero de acceso a directorios (LDAP) desarrollado por OpenLDAP Project. En otras palabras, es un protocolo para administrar información relacionada desde una ubicación centralizada mediante el uso de una jerarquía de archivos y directorios.

Funciona de manera similar a una base de datos relacional en ciertas formas y puede usarse para organizar y almacenar cualquier tipo de información. LDAP se usa comúnmente para la autenticación centralizada. En este artículo, consideraremos la configuración de OpenLDAP con dos hosts en modo espejo.

OpenLDAP tiene tres componentes principales:

– slapd – demonio LDAP autónomo y módulos y herramientas asociados
– bibliotecas que implementan el protocolo LDAP y las reglas básicas de codificación
– software cliente: ldapsearch, ldapadd, ldapdelete y otros.

Antes de empezar

LDAP es un protocolo de Internet que utilizan el correo electrónico y otros programas para buscar información de contacto desde un servidor. Se lanza bajo licencia pública OpenLDAP, está disponible para todas las principales distribuciones de Linux, AIX, Android, HP-UX, OS X, Solaris, Windows yz / OS.

LDAP no se limita a almacenar la información, también se utiliza como base de datos de back-end para «inicio de sesión único», donde una contraseña para un usuario se comparte entre muchos servicios. En este tutorial, instalaremos y configuraremos OpenLDAP junto con la replicación en modo espejo en CentOS 6.8.

1) Instalación de Openldap

En CentOS y RedHat, use yum install como se muestra a continuación, para instalar los paquetes relacionados con openldap.

yum -y install openldap openldap-servers openldap-clients

-y marca: asume que sí si se le solicita
openldap-servers: este es el servidor LDAP principal
openldap-clients: contiene todas las utilidades de cliente LDAP necesarias
openldap: este paquete contiene las bibliotecas de soporte LDAP

Nota: Para la interfaz de usuario web, debe instalar el paquete phpldapadmin. Suponemos que el demonio httpd ya está instalado en la máquina. De lo contrario, instálelo para acceder a la interfaz de usuario web.

phpLDAPadmin (también conocido como PLA) es un cliente LDAP basado en web. Proporciona una administración en varios idiomas fácil de acceder desde cualquier lugar para su servidor LDAP.

Su visor de árbol jerárquico y la funcionalidad de búsqueda avanzada hacen que navegar y administrar su directorio LDAP sea intuitivo. Dado que es una aplicación web, este navegador LDAP funciona en muchas plataformas, lo que hace que su servidor LDAP sea fácilmente administrable desde cualquier ubicación.

Para concluir, phpLDAPadmin es el navegador LDAP perfecto tanto para profesionales como para principiantes de LDAP. Su base de usuarios se compone principalmente de profesionales de la administración LDAP. Para instalarlo, debe ejecutar el siguiente comando:

yum -y install phpldapadmin

2) Configuración Ldap

Para empezar, actualizaremos el archivo /etc/openldap/ldap.conf. El archivo de configuración ldap.conf se utiliza para establecer los valores predeterminados de todo el sistema que se aplicarán al ejecutar clientes ldap. Los usuarios pueden crear un archivo de configuración opcional, ldaprc o .ldaprc, en su directorio de inicio que se utilizará para anular el archivo de valores predeterminados de todo el sistema.

Para la configuración básica, necesitamos cambiar solo 2 parámetros: BASE y URI. Puede utilizar cualquier editor a su conveniencia. En este ejemplo usaremos vi.

vi /etc/openldap/ldap.conf
BASE dc=example,dc=com
URI ldap://localhost

BASE: especifica el DN base predeterminado que se utilizará al realizar la operación ldap. La base debe especificarse como un nombre distinguido en formato LDAP.

URI: especifica los URI de un servidor LDAP al que debe conectarse la biblioteca LDAP. El esquema de URI puede ser cualquiera de ldap, ldaps o ldapi, que se refieren a LDAP sobre TCP, LDAP sobre SSL (TLS) y LDAP sobre IPC (sockets de dominio Unix), respectivamente. El nombre de cada servidor se puede especificar como un nombre de estilo de dominio o un literal de dirección IP. Opcionalmente, el nombre del servidor puede ir seguido de un ‘:’ y el número de puerto en el que está escuchando el servidor LDAP. Si no se proporciona ningún número de puerto, se utiliza el puerto predeterminado para el esquema (389 para ldap: //, 636 para ldaps: //). Para LDAP sobre IPC, el nombre es el nombre del socket y no se requiere ni se permite ningún puerto.A continuación, debemos copiar el archivo slapd.conf.obsolete al directorio / etc / openldap /.

Más adelante actualizaremos este archivo.

cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

El archivo slapd.conf consta de tres tipos de información de configuración: global, específica del backend y específica de la base de datos. La información global se especifica primero, seguida de la información asociada con un tipo de backend particular, que luego es seguida por la información asociada con una instancia de base de datos en particular. Las directivas globales se pueden anular en las directivas de backend y / o de base de datos, y las directivas de backend se pueden anular mediante directivas de base de datos.
Las líneas en blanco y las líneas de comentarios que comienzan con un carácter «https://linoxide.com/linux-how-to/install-openldap-2-different-hosts-configure-mirror-mode/#» se ignoran. Si una línea comienza con un espacio en blanco, se considera una continuación de la línea anterior (incluso si la línea anterior es un comentario).

Nota: este paso es opcional.

Parece que cada vez más, el consejo de OpenLDAP es utilizar DB_CONFIG en lugar de otros atributos de configuración o directivas slapd.conf. Cuando esto sea posible, se indicará en cada directiva.

La decisión de usar o no un archivo DB_CONFIG es simple: si le importa el rendimiento, úselo. Si no te importa, olvídalo. PERO si elige no usar un DB_CONFIG, DEBE usar una directiva de punto de control. Cada vez más, el consejo de OpenLDAP parece ser utilizar DB_CONFIG en lugar de pasar los parámetros a través de slapd.conf.

cp /usr/share/openldap-servers/DB_CONFIG.example /etc/openldap/DB_CONFIG

Luego, necesitamos generar nuestra contraseña de root LDAP con el comando slappasswd. Simplemente ejecute:

slappasswd

Slappasswd se usa para generar un valor userPassword adecuado para usar con ldapmodify, slapd.conf rootpw directiva de configuración o la slapd-config olcRootPW directiva de configuración. Una vez que ejecute el comando y le solicite la contraseña, verá la contraseña SSHA. Usaremos esta contraseña de root a través de este artículo. Así que tome nota de esto y déjelo a un lado.

Ahora, necesitamos enmendar el archivo /etc/openldap/slapd.conf con su DN y contraseña que acaba de generar. Básicamente, habría 2 filas donde necesita su nombre de dominio:

vi /etc/openldap/slapd.conf

navegue a la sección «definiciones de la base de datos» y actualice el sufijo y rootdn con su DN y pegue la contraseña SSHA completa junto al rootpw

suffix "dc=example,dc=com"
rootdn "cn=manager,dc=example,dc=com"
rootpw {SSHA}gHuk69PP7Hxh4mglbRdkg47GQrfBhlt6

En el siguiente paso, modificaremos el archivo /etc/phpldapadmin/config.php para acceder a la GUI web. Busque las siguientes filas y actualícelas de la siguiente manera:

// $servers->setValue('login','attr','dn');
$servers->setValue('login','attr','uid');
→
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

Aquí estamos especificando un atributo para usar al iniciar sesión. De forma predeterminada, phpLDAPadmin buscará uid = username (si inicia sesión como nombre de usuario). Si lo deja en blanco o especifica ‘dn’ como acabamos de hacer, phpLDAPadmin usará el DN completo (que proporcionamos en slapd.conf).

Además, descomente la siguiente línea y agregue la dirección IP:

$servers->setValue('server','host','127.0.0.1');

Lo último que debemos hacer para acceder a la interfaz de usuario web de phpLDAPadmin es actualizar el archivo /etc/httpd/conf.d/phpldapadmin.conf para enumerar las direcciones IP que pueden conectarse a la interfaz de usuario web. De forma predeterminada, el archivo debería tener el siguiente aspecto:

#
# Web-based tool for managing LDAP servers
#
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1

Si no es así, actualice como se describe arriba.

3) Probar y ejecutar

Ejecute el siguiente conjunto de comandos para realizar una prueba completa de configuración:

rm -rf /etc/openldap/slapd.d/*
chown -R ldap. /etc/openldap/slapd.d/
chown -R ldap. /var/lib/ldap/
slaptest -u 
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

Si la prueba se ejecutó correctamente, continúe con el siguiente paso: habilitar LDAP para el inicio automático del servicio en el inicio del sistema y el inicio del servicio LDAP

chkconfig slapd on
service httpd restart 
service slapd restart

Puede verificar si LDAP se está ejecutando con el comando netstat:

netstat -antup | grep -i 389

Ahora, necesitamos crear algunos objetos en nuestro LDAP. Cree varios archivos .ldif con el siguiente contenido:

Organization.ldif
dn: dc=example,dc=com
dc: corp
o: corp
objectclass: dcObject
objectclass: organization

Department.ldif 
dn: ou=department,dc=example,dc=com
objectclass: organizationalUnit
objectclass: top
ou: hadoop

Groups.ldif
dn: ou=groups,ou=department,dc=example,dc=com
objectclass: organizationalUnit
objectclass: top
ou: groups

System_admin.ldif
dn: cn=system_admin,ou=groups,ou=department,dc=example,dc=com
cn: system_admin
gidnumber: 502
memberuid: admin1
memberuid: admin2
objectclass: posixGroup
objectclass: top

Users.ldif
dn: ou=users,ou=department,dc=example,dc=com
objectclass: organizationalUnit
objectclass: top
ou: users

Admin1.ldif
dn: uid=admin1,ou=users,ou=department,dc=example,dc=com
cn: admin1
gidnumber: 502
givenname: Admin1
homedirectory: /home/users/admin1
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: Admin1
uid: admin1
uidnumber: 5001
userpassword: password

Admin2.ldif
dn: uid=admin2,ou=users,ou=department,dc=example,dc=com
cn: admin2
gidnumber: 502
givenname: Admin2
homedirectory: /home/users/admin2
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: Admin2
uid: admin2
uidnumber: 5002
userpassword: password

Ahora, debe agregar estos objetos a su servidor LDAP ejecutando el siguiente comando para cada archivo:

ldapadd -x -W -D “cn=manager,dc=example,dc=com” -f

4) replicación en modo espejo

El modo espejo es una configuración híbrida que proporciona todas las garantías de coherencia de la replicación de un solo maestro, al mismo tiempo que proporciona la alta disponibilidad de varios maestros. En el modo espejo, dos proveedores están configurados para replicarse entre sí (como una configuración multimaestro), pero se emplea una interfaz externa para dirigir todas las escrituras a solo uno de los dos servidores. El segundo proveedor solo se utilizará para escrituras si el primer proveedor falla, momento en el que la interfaz cambiará para dirigir todas las escrituras al segundo proveedor. Cuando un proveedor bloqueado se repara y reinicia, se pondrá al día automáticamente con cualquier cambio en el proveedor en ejecución y se resincronizará.

Argumentos para el modo espejo

Proporciona una solución de alta disponibilidad (HA) para escrituras de directorio (las réplicas manejan las lecturas).
Siempre que un proveedor esté operativo, las escrituras se pueden aceptar de forma segura.
Los nodos de proveedor se replican entre sí, por lo que siempre están actualizados y pueden estar listos para asumir el control (espera activa).
Syncrepl también permite que los nodos del proveedor se vuelvan a sincronizar después de cualquier tiempo de inactividad.

Argumentos en contra del modo espejo

El modo espejo no es lo que se denomina una solución multimaestro. Esto se debe a que las escrituras deben ir a solo uno de los nodos espejo a la vez.
El modo espejo se puede denominar activo-activo en espera, por lo tanto, se necesita un servidor externo (slapd en modo proxy) o un dispositivo (equilibrador de carga de hardware) para administrar qué proveedor está activo actualmente.
Las copias de seguridad se administran de forma ligeramente diferente.

Antes de que podamos iniciar el modo espejo, debe realizar los mismos pasos de instalación y configuración que se proporcionan en este artículo (excepto la parte con la parte * .ldif, todos los objetos se replicarán después de configurar el modo espejo) en otro host; lo llamaremos – host esclavo.

Una vez que haya instalado y configurado correctamente LDAP en el host esclavo, debe actualizar el archivo /etc/openldap/slapd.conf del maestro (primer host configurado) de la siguiente manera:

una. Descomentar modueload syncprov.la
B. Agregue la siguiente configuración al archivo
:

##### Mirror Mode
serverID    001

# Consumer
syncrepl rid=001
provider=ldap://slave.example.com
bindmethod=simple
binddn="cn=manager,dc=example,dc=com"
credentials="slave_userPassword_from_slappasswd"
searchbase="dc=example,dc=com"
attrs="*,+"
type=refreshAndPersist
interval=00:00:01:00
retry="60 +"
# Provider
overlay syncprov
syncprov-checkpoint 50 1
syncprov-sessionlog 50

mirrormode on

Luego, debe actualizar los esclavos /etc/openldap/slapd.conf de la siguiente manera:

una. Descomentar moduleload syncprov.la
B. Agregue la siguiente configuración al final del archivo:

##### Mirror Mode
serverID    002

# Consumer
syncrepl rid=001
provider=ldap://master.example.com
bindmethod=simple
binddn="cn=Manager,dc=example,dc=com"
credentials="master_userPassword_from_slappasswd"
searchbase="dc=example,dc=com"
attrs="*,+"
type=refreshAndPersist
interval=00:00:01:00
retry="60 +"
# Provider
overlay syncprov
syncprov-checkpoint 50 1
syncprov-sessionlog 50

mirrormode on

¡Eso es! Ejecute la prueba completa con el conjunto de comandos proporcionado y verifique sus objetos esclavos.

Conclusión

Ahora tendrá una arquitectura de directorio que proporciona todas las garantías de coherencia de la replicación de un solo maestro, al mismo tiempo que proporciona la alta disponibilidad de la replicación de varios maestros. Realmente es simple; cada nodo del modo espejo se configura exactamente igual, excepto que el ID de servidor es único, y cada consumidor apunta al otro servidor.

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