RHCSA Serie: Opzetten van LDAP-gebaseerde Authenticatie in RHEL 7 – Deel 14

We zullen dit artikel beginnen door enkele LDAP basisprincipes te schetsen (wat het is, waar het wordt gebruikt en waarom) en laten zien hoe je een LDAP-server kunt opzetten en een client kunt configureren om zich ertegen te authenticeren met behulp van Red Hat Enterprise Linux 7-systemen.

RHCSA Series: Setup LDAP Server and Client Authentication – Part 14

Zoals we zullen zien, zijn er verschillende andere mogelijke toepassingsscenario’s, maar in deze handleiding zullen we ons volledig richten op LDAP-gebaseerde authenticatie. Houd er ook rekening mee dat vanwege de omvang van het onderwerp we hier alleen de basisprincipes zullen behandelen, maar je kunt voor meer diepgaande details verwijzen naar de documentatie die in de samenvatting wordt beschreven.

Om dezelfde reden zul je merken dat ik ervoor heb gekozen om verschillende verwijzingen naar man-pagina’s van LDAP-tools weg te laten omwille van de beknoptheid, maar de bijbehorende uitleg is binnen handbereik (man ldapadd, bijvoorbeeld).

Dat gezegd hebbende, laten we beginnen.

Onze testomgeving

Onze testomgeving bestaat uit twee RHEL 7-machines:

Server: 192.168.0.18. FQDN: rhel7.mydomain.com
Client: 192.168.0.20. FQDN: ldapclient.mydomain.com

Als je wilt, kun je de machine gebruiken die is geïnstalleerd in Deel 12: RHEL 7-installaties automatiseren met Kickstart als client.

Wat is LDAP?

LDAP staat voor Lightweight Directory Access Protocol en bestaat uit een reeks protocollen die een client in staat stellen om via een netwerk centraal opgeslagen informatie te benaderen (zoals een directory van inlogschalen, absolute paden naar thuismappen en andere typische systeemgebruikersinformatie, bijvoorbeeld) die vanaf verschillende plaatsen toegankelijk moet zijn of beschikbaar moet zijn voor een groot aantal eindgebruikers (een ander voorbeeld zou een directory van thuisadressen en telefoonnummers van alle werknemers in een bedrijf zijn).

Het centraal bewaren van dergelijke (en meer) informatie betekent dat het gemakkelijker kan worden onderhouden en benaderd door iedereen die toestemming heeft gekregen om het te gebruiken.

De volgende diagram biedt een vereenvoudigd diagram van LDAP, en wordt hieronder gedetailleerder beschreven:

LDAP Diagram

Uitleg van bovenstaand diagram in detail.

  1. Een vermelding in een LDAP-directory vertegenwoordigt een enkele eenheid of informatie en wordt uniek geïdentificeerd door wat een Distinguished Name wordt genoemd.
  2. Een attribuut is een stuk informatie dat is gekoppeld aan een vermelding (bijvoorbeeld, adressen, beschikbare contacttelefoonnummers en e-mailadressen).
  3. Elk attribuut is toegewezen aan één of meer waarden die bestaan uit een lijst met spaties. Een waarde die uniek is per vermelding wordt een Relative Distinguished Name genoemd.

Dat gezegd hebbende, laten we doorgaan met de installaties van de server en de client.

Installeren en configureren van een LDAP-server en -client

In RHEL 7, LDAP wordt geïmplementeerd door OpenLDAP. Om de server en client te installeren, gebruikt u respectievelijk de volgende commando’s:

# yum update && yum install openldap openldap-clients openldap-servers
# yum update && yum install openldap openldap-clients nss-pam-ldapd

Als de installatie is voltooid, zijn er enkele zaken waar we naar kijken. De volgende stappen moeten alleen op de server worden uitgevoerd, tenzij anders vermeld:

1. Zorg ervoor dat SELinux niet in de weg zit door de volgende booleans persistent in te schakelen, zowel op de server als op de client:

# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Waar allow_ypbind vereist is voor op LDAP gebaseerde authenticatie, en authlogin_nsswitch_use_ldap kan nodig zijn voor sommige toepassingen.

2. Schakel de service in en start deze:

# systemctl enable slapd.service
# systemctl start slapd.service

Houd er rekening mee dat u de service ook kunt uitschakelen, herstarten of stoppen met systemctl:

# systemctl disable slapd.service
# systemctl restart slapd.service
# systemctl stop slapd.service

3. Aangezien de slapd service wordt uitgevoerd als de ldap-gebruiker (wat u kunt verifiëren met ps -e -o pid,uname,comm | grep slapd), moet deze gebruiker de /var/lib/ldap directory bezitten zodat de server in staat is om vermeldingen te wijzigen die zijn gemaakt door beheertools die alleen als root kunnen worden uitgevoerd (hierover zo meteen meer).

Voordat u de eigendom van deze directory recursief wijzigt, kopieert u het voorbeeld van de databaseconfiguratiebestand voor slapd erin:

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown -R ldap:ldap /var/lib/ldap

4. Stel een OpenLDAP-beheerdergebruiker in en wijs een wachtwoord toe:

# slappasswd

zoals weergegeven in de volgende afbeelding:

Set LDAP Admin Password

en maak een LDIF bestand (ldaprootpasswd.ldif) met de volgende inhoud:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

waar:

  1. WACHTWOORD de gehashte string is die eerder is verkregen.
  2. cn=config geeft globale configuratieopties aan.
  3. olcDatabase geeft een specifieke database-instantienaam aan en is meestal te vinden in /etc/openldap/slapd.d/cn=config.

Verwijzend naar de eerder verstrekte theoretische achtergrond, zal het bestand ldaprootpasswd.ldif een vermelding toevoegen aan het LDAP-directory. In die vermelding vertegenwoordigt elke regel een attribuut: waardepaar (waarbij dn, changetype, add en olcRootPW de attributen zijn en de strings rechts van elke dubbele punt hun overeenkomstige waarden zijn).

Houd hier rekening mee terwijl we verder gaan, en let op dat we dezelfde Common Names (cn=) blijven gebruiken in de rest van dit artikel, waarbij elke stap afhankelijk is van de vorige.

5. Voeg nu de overeenkomstige LDAP-vermelding toe door de URI op te geven die verwijst naar de ldap-server, waarbij alleen de protocol/host/poortvelden zijn toegestaan.

# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif 

De uitvoer moet vergelijkbaar zijn met:

LDAP Configuration

en importeer enkele basis LDAP-definities vanuit de /etc/openldap/schema directory:

# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done
LDAP Definitions

6. Laat LDAP uw domein gebruiken in zijn database.

Maak een ander LDIF bestand, dat we ldapdomain.ldif zullen noemen, met de volgende inhoud, waarbij uw domein (in het Domein Component dc=) en wachtwoord indien nodig worden vervangen:

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

# ldapmodify -H ldapi:/// -f ldapdomain.ldif
LDAP Domain Configuration

7. Het is nu tijd om enkele vermeldingen toe te voegen aan onze LDAP-directory. Attributen en waarden worden gescheiden door een dubbele punt (:) in het volgende bestand, dat we baseldapdomain.ldif zullen noemen:

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

Voeg de vermeldingen toe aan de LDAP-directory:

# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif
Add LDAP Domain Attributes and Values

8. Maak een LDAP-gebruiker genaamd ldapuser (adduser ldapuser), maak vervolgens de definities voor een LDAP-groep in ldapgroup.ldif.

# adduser ldapuser
# vi ldapgroup.ldif

Voeg de volgende inhoud toe.

dn: cn=Manager,ou=Group,dc=mydomain,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1004

waar gidNumber het GID is in /etc/group voor ldapuser) en laad het:

# ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif

9. Voeg een LDIF-bestand toe met de definities voor gebruiker 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

en laad het:

# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif
LDAP User Configuration

Op dezelfde manier kunt u de gebruikersvermelding die u zojuist heeft gemaakt verwijderen:

# ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"

10. Sta communicatie toe via de firewall:

# firewall-cmd --add-service=ldap

11. Last but not least, schakel de client in om te verifiëren met behulp van LDAP.

Om ons te helpen bij deze laatste stap, zullen we het hulpprogramma authconfig gebruiken (een interface voor het configureren van systeemverificatieressources).

Met de volgende opdracht wordt de thuismap voor de aangevraagde gebruiker aangemaakt als deze niet bestaat nadat de verificatie tegen de LDAP-server is gelukt:

# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update
LDAP Client Configuration

Samenvatting

In dit artikel hebben we uitgelegd hoe u basisverificatie kunt instellen tegen een LDAP-server. Om de configuratie van de setup zoals beschreven in de huidige handleiding verder aan te passen, raadpleeg alstublieft Hoofdstuk 13 – LDAP-configuratie in de RHEL 7 Systeembeheerdershandleiding, waarbij u speciale aandacht besteedt aan de beveiligingsinstellingen met behulp van TLS.

Voel u vrij om eventuele vragen die u heeft achter te laten via het opmerkingenformulier hieronder.

Source:
https://www.tecmint.com/setup-ldap-server-and-configure-client-authentication/