Sèrie RHCSA: Configuració de l'autenticació basada en LDAP a RHEL 7 - Part 14
Començarem aquest article esbocant alguns conceptes bàsics de LDAP (què és, on s'utilitza i per què) i mostrarem com configurar un servidor LDAP i configurar un client per autenticar-s'hi amb els sistemes Red Hat Enterprise Linux 7.
Com veurem, hi ha altres escenaris d'aplicació possibles, però en aquesta guia ens centrarem completament en l'autenticació basada en LDAP. A més, si us plau, tingueu en compte que, a causa de l'extensió del tema, només en parlarem aquí, però podeu consultar la documentació que es descriu al resum per a més detalls.
Per la mateixa raó, notareu que he decidit deixar de banda diverses referències a les pàgines man d'eines LDAP per motius de brevetat, però les explicacions corresponents estan a la distància (man ldapadd, per exemple).
Dit això, comencem.
El nostre entorn de prova consta de dues caixes RHEL 7:
Server: 192.168.0.18. FQDN: rhel7.mydomain.com Client: 192.168.0.20. FQDN: ldapclient.mydomain.com
Si voleu, podeu utilitzar la màquina instal·lada a la Part 12: Automatitzar les instal·lacions de RHEL 7 mitjançant Kickstart com a client.
LDAP significa Lightweight Directory Access Protocol i consisteix en un conjunt de protocols que permeten a un client accedir, a través d'una xarxa, a la informació emmagatzemada centralment (com ara un directori d'intèrprets d'ordres d'inici de sessió, camins absoluts als directoris d'inici i altra informació típica d'usuari del sistema, per exemple) que hauria de ser accessible des de diferents llocs o disponible per a un gran nombre d'usuaris finals (un altre exemple seria un directori d'adreces domiciliàries i números de telèfon de tots els empleats d'una empresa).
Mantenir aquesta (i més) informació de manera centralitzada significa que pot ser més fàcil mantenir-la i accedir-hi tothom a qui tingui permís per utilitzar-la.
El diagrama següent ofereix un diagrama simplificat de LDAP i es descriu a continuació amb més detall:
Explicació detallada del diagrama anterior.
- Una entrada en un directori LDAP representa una unitat o informació única i s'identifica de manera única amb el que s'anomena nom distingit.
- Un atribut és una informació associada a una entrada (per exemple, adreces, números de telèfon de contacte disponibles i adreces de correu electrònic).
- A cada atribut se li assignen un o més valors que consisteixen en una llista separada per espais. Un valor que és únic per entrada s'anomena nom distingit relatiu.
Dit això, continuem amb les instal·lacions del servidor i el client.
Instal·lació i configuració d'un servidor i client LDAP
A RHEL 7, LDAP està implementat per OpenLDAP. Per instal·lar el servidor i el client, utilitzeu les ordres següents, respectivament:
# yum update && yum install openldap openldap-clients openldap-servers # yum update && yum install openldap openldap-clients nss-pam-ldapd
Un cop finalitzada la instal·lació, hi ha algunes coses que mirem. Els passos següents s'han de realitzar només al servidor, tret que s'indiqui explícitament:
1. Assegureu-vos que SELinux no s'interposi en el camí activant els següents booleans de manera persistent, tant al servidor com al client:
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0
Quan es requereix allow_ypbind per a l'autenticació basada en LDAP, i algunes aplicacions poden necessitar authlogin_nsswitch_use_ldap.
2. Habiliteu i inicieu el servei:
# systemctl enable slapd.service # systemctl start slapd.service
Tingueu en compte que també podeu desactivar, reiniciar o aturar el servei amb systemctl:
# systemctl disable slapd.service # systemctl restart slapd.service # systemctl stop slapd.service
3. Com que el servei slapd s'executa com a usuari ldap (que podeu verificar amb ps -e -o pid,uname,comm | grep slapd), aquest usuari hauria de ser propietari del directori /var/lib/ldap per tal que el servidor poder modificar les entrades creades per eines administratives que només es poden executar com a root (més sobre això en un minut).
Abans de canviar la propietat d'aquest directori de manera recursiva, copieu-hi el fitxer de configuració de la base de dades d'exemple per a slapd:
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # chown -R ldap:ldap /var/lib/ldap
4. Configureu un usuari administratiu d'OpenLDAP i assigneu una contrasenya:
# slappasswd
com es mostra a la següent imatge:
i creeu un fitxer LDIF (ldaprootpasswd.ldif) amb el contingut següent:
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD
on:
- CONTRAsenya és la cadena hash obtinguda anteriorment.
- cn=config indica opcions de configuració global.
- olcDatabase indica un nom d'instància de base de dades específic i normalment es pot trobar a /etc/openldap/slapd.d/cn=config.
En referència als antecedents teòrics proporcionats anteriorment, el fitxer ldaprootpasswd.ldif
afegirà una entrada al directori LDAP. En aquesta entrada, cada línia representa un atribut: parell de valors (on dn, changetype, add i olcRootPW són els atributs i les cadenes a la dreta de cada dos punts són els seus valors corresponents).
És possible que vulgueu tenir-ho en compte a mesura que avancem, i tingueu en compte que estem utilitzant els mateixos noms comuns (cn=)
durant la resta d'aquest article, on cada pas depèn de l'anterior. .
5. Ara, afegiu l'entrada LDAP corresponent especificant l'URI que fa referència al servidor ldap, on només es permeten els camps protocol/amfitrió/port.
# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif
La sortida hauria de ser semblant a:
i importeu algunes definicions bàsiques de LDAP del directori /etc/openldap/schema
:
# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done
6. Feu que LDAP utilitzi el vostre domini a la seva base de dades.
Creeu un altre fitxer LDIF, que anomenarem ldapdomain.ldif
, amb el contingut següent, substituint el vostre domini (al component de domini dc=) i la contrasenya segons correspongui:
dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=mydomain,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=mydomain,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=Manager,dc=mydomain,dc=com" write by * read
A continuació, carregueu-lo de la següent manera:
# ldapmodify -H ldapi:/// -f ldapdomain.ldif
7. Ara és el moment d'afegir algunes entrades al nostre directori LDAP. Els atributs i els valors estan separats per dos punts (:)
al fitxer següent, que anomenarem baseldapdomain.ldif
:
dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectclass: organization o: mydomain com dc: mydomain dn: cn=Manager,dc=mydomain,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager dn: ou=People,dc=mydomain,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=mydomain,dc=com objectClass: organizationalUnit ou: Group
Afegiu les entrades al directori LDAP:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif
8. Creeu un usuari LDAP anomenat ldapuser (adduser ldapuser) i després creeu les definicions per a un grup LDAP a ldapgroup.ldif
.
# adduser ldapuser # vi ldapgroup.ldif
Afegeix el contingut següent.
dn: cn=Manager,ou=Group,dc=mydomain,dc=com objectClass: top objectClass: posixGroup gidNumber: 1004
on gidNumber és el GID a /etc/group per a ldapuser) i carregueu-lo:
# ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif
9. Afegiu un fitxer LDIF amb les definicions per a l'usuari ldapuser (ldapuser.ldif
):
dn: uid=ldapuser,ou=People,dc=mydomain,dc=com objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldapuser uid: ldapuser uidNumber: 1004 gidNumber: 1004 homeDirectory: /home/ldapuser userPassword: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M loginShell: /bin/bash gecos: ldapuser shadowLastChange: 0 shadowMax: 0 shadowWarning: 0
i carrega-ho:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif
De la mateixa manera, podeu eliminar l'entrada d'usuari que acabeu de crear:
# ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"
10. Permet la comunicació a través del tallafoc:
# firewall-cmd --add-service=ldap
11. Per últim, però no menys important, permeteu que el client s'autentiqui mitjançant LDAP.
Per ajudar-nos en aquest pas final, utilitzarem la utilitat authconfig (una interfície per configurar els recursos d'autenticació del sistema).
Mitjançant l'ordre següent, es crea el directori inicial de l'usuari sol·licitat si no existeix després que l'autenticació amb el servidor LDAP tingui èxit:
# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update
Resum
En aquest article hem explicat com configurar l'autenticació bàsica contra un servidor LDAP. Per configurar encara més la configuració que es descriu a la present guia, consulteu el Capítol 13: Configuració LDAP a la guia de l'administrador del sistema RHEL 7, prestant especial atenció a la configuració de seguretat mitjançant TLS.
No dubteu a deixar qualsevol pregunta que tingueu utilitzant el formulari de comentaris a continuació.