Comenzaremos este artículo describiendo algunos LDAP conceptos básicos (qué es, dónde se usa y por qué) y muestra cómo configurar un servidor LDAP y configurar un cliente para que se autentique con él usando Red Hat Enterprise Linux 7 sistemas.
Como veremos, hay varios otros escenarios de aplicación posibles, pero en esta guía nos centraremos por completo en Basado en LDAP autenticación. Además, tenga en cuenta que debido a la amplitud del tema, solo cubriremos sus conceptos básicos aquí, pero puede consultar la documentación descrita en el resumen para obtener más detalles.
Por la misma razón, notará que he decidido omitir varias referencias a páginas de manual. de las herramientas LDAP en aras de la brevedad, pero las explicaciones correspondientes están al alcance de la mano distanciahombre ldapadd, por ejemplo).
Dicho esto, comencemos.
Nuestro entorno de prueba consta de dos RHEL 7 cajas:
Servidor: 192.168.0.18. FQDN: rhel7.midominio.com. Cliente: 192.168.0.20. FQDN: ldapclient.mydomain.com.
Si lo desea, puede utilizar la máquina instalada en Parte 12: Automatizar las instalaciones de RHEL 7 utilizando Kickstart como cliente.
LDAP representa Protocolo ligero de acceso a directorios y consiste en un conjunto de protocolos que permite a un cliente acceder, a través de una red, información almacenada centralmente (como un directorio de inicio de sesión shells, rutas absolutas a los directorios de inicio y otra información típica del usuario del sistema, por ejemplo) que deberían ser accesibles desde diferentes lugares o disponibles para un gran número de usuarios finales (otro ejemplo sería un directorio de direcciones de casa y números de teléfono de todos los empleados en un empresa).
Mantener esta (y más) información de manera centralizada significa que todos los que tienen permisos para usarla pueden mantenerla y acceder a ella más fácilmente.
El siguiente diagrama ofrece un diagrama simplificado de LDAP, y se describe a continuación con mayor detalle:
Explicación detallada del diagrama anterior.
Dicho esto, procedamos con las instalaciones del servidor y del cliente.
En RHEL 7, LDAP es implementado por OpenLDAP. Para instalar el servidor y el cliente, utilice los siguientes comandos, respectivamente:
# yum update && yum install openldap openldap-clients openldap-servers. # yum update && yum install openldap openldap-clients nss-pam-ldapd.
Una vez que se completa la instalación, hay algunas cosas que analizamos. Los siguientes pasos deben realizarse solo en el servidor, a menos que se indique explícitamente:
1. Cerciorarse SELinux no interfiere al habilitar lo siguiente booleanos persistentemente, tanto en el servidor como en el cliente:
# setsebool -P allow_ypbind = 0 authlogin_nsswitch_use_ldap = 0.
Donde allow_ypbind es necesario para la autenticación basada en LDAP, y authlogin_nsswitch_use_ldap algunas aplicaciones pueden necesitarlo.
2. Habilite e inicie el servicio:
# systemctl habilita slapd.service. # systemctl inicia slapd.service.
Tenga en cuenta que también puede deshabilitar, reiniciar o detener el servicio con systemctl también:
# systemctl deshabilita slapd.service. # systemctl reinicia slapd.service. # systemctl detiene slapd.service.
3. Desde el bofetada el servicio se ejecuta como el usuario ldap (que puede verificar con ps -e -o pid, uname, comm | grep slapd), dicho usuario debe poseer el /var/lib/ldap directorio para que el servidor pueda modificar las entradas creadas por las herramientas administrativas que solo se pueden ejecutar como root (más sobre esto en un minuto).
Antes de cambiar la propiedad de este directorio de forma recursiva, copie el archivo de configuración de la base de datos de muestra para bofetada en ello:
# cp /usr/share/openldap-servers/DB_CONFIG.example / var / lib / ldap / DB_CONFIG. # chown -R ldap: ldap / var / lib / ldap.
4. Configure un usuario administrativo de OpenLDAP y asigne una contraseña:
# slappasswd.
como se muestra en la siguiente imagen:
y crea un LDIF expediente (ldaprootpasswd.ldif) con el siguiente contenido:
dn: olcDatabase = {0} config, cn = config. tipo de cambio: modificar. añadir: olcRootPW. olcRootPW: CONTRASEÑA {SSHA}.
donde:
Refiriéndose a los antecedentes teóricos proporcionados anteriormente, el ldaprootpasswd.ldif
archivo agregará una entrada al directorio LDAP. En esa entrada, cada línea representa un atributo: par de valor (donde dn, changetype, add y olcRootPW son los atributos y las cadenas a la derecha de cada dos puntos son sus valores correspondientes).
Es posible que desee tener esto en cuenta a medida que avanzamos, y tenga en cuenta que estamos usando los mismos nombres comunes. (cn =)
a lo largo del resto de este artículo, donde cada paso depende del anterior.
5. Ahora, agregue la entrada LDAP correspondiente especificando el URI refiriéndose al servidor ldap, donde solo se permiten los campos de protocolo / host / puerto.
# ldapadd -H ldapi: /// -f ldaprootpasswd.ldif
La salida debe ser similar a:
e importar algunas definiciones LDAP básicas del /etc/openldap/schema
directorio:
# para def en cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi: /// -f / etc / openldap / schema / $ def; hecho.
6. Haga que LDAP use su dominio en su base de datos.
Crea otro LDIF archivo, que llamaremos ldapdomain.ldif
, con el siguiente contenido, reemplazando su dominio (en el Componente de dominio dc =) y contraseña según corresponda:
dn: olcDatabase = {1} monitor, cn = config. tipo de cambio: modificar. reemplazar: olcAccess. olcAccess: {0} a * por dn.base = "gidNumber = 0 + uidNumber = 0, cn = peercred, cn = external, cn = auth" leído por dn.base = "cn = Manager,dc = midominio, dc = com "leído por * none dn: olcDatabase = {2} hdb, cn = config. tipo de cambio: modificar. reemplace: olcSuffix. olcSuffix: dc = midominio, dc = com dn: olcDatabase = {2} hdb, cn = config. tipo de cambio: modificar. reemplazar: olcRootDN. olcRootDN: cn = Administrador,dc = midominio, dc = com dn: olcDatabase = {2} hdb, cn = config. tipo de cambio: modificar. añadir: olcRootPW. olcRootPW: {SSHA} CONTRASEÑA dn: olcDatabase = {2} hdb, cn = config. tipo de cambio: modificar. añadir: olcAccess. olcAccess: {0} a attrs = userPassword, shadowLastChange por dn = "cn = Manager,dc = midominio, dc = com "escribir por autenticación anónima por autoescritura por * none. olcAccess: {1} a dn.base = "" por * lectura. olcAccess: {2} to * by dn = "cn = Manager, dc = mydomain, dc = com" write by * read.
Luego cárguelo de la siguiente manera:
# ldapmodify -H ldapi: /// -f ldapdomain.ldif.
7. Ahora es el momento de agregar algunas entradas a nuestro directorio LDAP. Los atributos y valores están separados por dos puntos. (:)
en el siguiente archivo, que nombraremos baseldapdomain.ldif
:
dn: dc = midominio, dc = com. objectClass: top. objectClass: dcObject. objectclass: organización. o: midominio com. dc: mydomain dn: cn = Manager, dc = mydomain, dc = com. objectClass: organizationRole. cn: Gerente. descripción: Directory Manager dn: ou = People, dc = mydomain, dc = com. objectClass: organizationUnit. ou: Gente dn: ou = Grupo, dc = midominio, dc = com. objectClass: organizationUnit. ou: Grupo.
Agregue las entradas al directorio LDAP:
# ldapadd -x -D cn = Gerente, dc = midominio, dc = com -W -f baseldapdomain.ldif.
8. Cree un usuario LDAP llamado ldapuser (adduser ldapuser), luego cree las definiciones para un grupo LDAP en ldapgroup.ldif
.
# adduser ldapuser. # vi ldapgroup.ldif.
Agregue el siguiente contenido.
dn: cn = Gerente, ou = Grupo, dc = midominio, dc = com. objectClass: top. objectClass: posixGroup. gidNumber: 1004.
donde gidNumber es el GID en /etc/group para ldapuser) y cárguelo:
# ldapadd -x -W -D "cn = Gerente, dc = midominio, dc = com" -f ldapgroup.ldif.
9. Agregue un archivo LDIF con las definiciones para el usuario ldapuser (ldapuser.ldif
):
dn: uid = ldapuser, ou = People, dc = mydomain, dc = com. objectClass: top. objectClass: cuenta. objectClass: posixAccount. objectClass: shadowAccount. cn: ldapuser. uid: ldapuser. uidNumber: 1004. gidNumber: 1004. homeDirectory: / home / ldapuser. contraseña de usuario: {SSHA} fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M. loginShell: / bin / bash. gecos: ldapuser. shadowLastChange: 0. shadowMax: 0. shadowWarning: 0.
y cárgalo:
# ldapadd -x -D cn = Gerente, dc = midominio, dc = com -W -f ldapuser.ldif.
Del mismo modo, puede eliminar la entrada de usuario que acaba de crear:
# ldapdelete -x -W -D cn = Gerente, dc = mydomain, dc = com "uid = ldapuser, ou = People, dc = mydomain, dc = com"
10. Permita la comunicación a través del firewall:
# firewall-cmd --add-service = ldap.
11. Por último, pero no menos importante, habilite al cliente para que se autentique mediante LDAP.
Para ayudarnos en este paso final, usaremos el authconfig utilidad (una interfaz para configurar los recursos de autenticación del sistema).
Con el siguiente comando, se crea el directorio de inicio para el usuario solicitado si no existe después de que la autenticación en el servidor LDAP se realice correctamente:
# authconfig --enableldap --enableldapauth --ldapserver = rhel7.mydomain.com --ldapbasedn = "dc = mydomain, dc = com" --enablemkhomedir --update.
En este artículo, explicamos cómo configurar la autenticación básica en un servidor LDAP. Para configurar aún más la configuración descrita en la presente guía, consulte Capítulo 13 - Configuración LDAP en la guía del administrador del sistema RHEL 7, prestando especial atención a la configuración de seguridad mediante TLS.
No dude en dejar cualquier pregunta que pueda tener utilizando el formulario de comentarios a continuación.