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.

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:

Uitleg van bovenstaand diagram in detail.
- Een vermelding in een LDAP-directory vertegenwoordigt een enkele eenheid of informatie en wordt uniek geïdentificeerd door wat een Distinguished Name wordt genoemd.
- Een attribuut is een stuk informatie dat is gekoppeld aan een vermelding (bijvoorbeeld, adressen, beschikbare contacttelefoonnummers en e-mailadressen).
- 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:

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:
- WACHTWOORD de gehashte string is die eerder is verkregen.
- cn=config geeft globale configuratieopties aan.
- 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:

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

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

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

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

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

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/