We zullen dit artikel beginnen met een overzicht van enkele LDAP basisprincipes (wat het is, waar het wordt gebruikt en waarom) en laten zien hoe u een LDAP-server instelt en een client configureert om ertegen te authenticeren met Red Hat Enterprise Linux 7" systemen.
Zoals we zullen zien, zijn er verschillende andere mogelijke toepassingsscenario's, maar in deze gids zullen we ons volledig concentreren op: LDAP-gebaseerd authenticatie. Houd er bovendien rekening mee dat vanwege de uitgestrektheid van het onderwerp, we hier alleen de basis zullen behandelen, maar u kunt de documentatie in de samenvatting raadplegen voor meer diepgaande details.
Om dezelfde reden zul je merken dat ik heb besloten om verschillende verwijzingen naar man-pagina's weg te laten van LDAP-tools kortheidshalve, maar de bijbehorende uitleg is binnen handbereik afstand (man ldapadd, bijvoorbeeld).
Dat gezegd hebbende, laten we beginnen.
Onze testomgeving bestaat uit twee RHEL 7 dozen:
Server: 192.168.0.18. FQDN: rhel7.mijndomein.com. Cliënt: 192.168.0.20. FQDN: ldapclient.mijndomein.com.
Als u wilt, kunt u de machine gebruiken die is geïnstalleerd in Deel 12: RHEL 7-installaties automatiseren Kickstart gebruiken als klant.
LDAP betekent Lichtgewicht Directory Access Protocol en bestaat uit een reeks protocollen waarmee een cliënt via een netwerk toegang kan krijgen tot centraal opgeslagen informatie (zoals een shells, absolute paden naar homedirectories en andere typische systeemgebruikersinformatie, bijvoorbeeld) die toegankelijk moeten zijn vanaf verschillende plaatsen of beschikbaar zijn voor een groot aantal eindgebruikers (een ander voorbeeld is een directory met thuisadressen en telefoonnummers van alle werknemers in een bedrijf).
Door dergelijke (en meer) informatie centraal te bewaren, kan deze gemakkelijker worden onderhouden en toegankelijk zijn voor iedereen die toestemming heeft gekregen om deze te gebruiken.
Het volgende diagram biedt een vereenvoudigd diagram van: LDAP, en wordt hieronder in meer detail beschreven:
Uitleg van bovenstaand diagram in detail.
Dat gezegd hebbende, laten we doorgaan met de server- en clientinstallaties.
In RHEL 7, LDAP wordt geïmplementeerd door OpenLDAP. Gebruik respectievelijk de volgende opdrachten om de server en de client te installeren:
# yum update && yum installeer openldap openldap-clients openldap-servers. # yum update && yum installeer openldap openldap-clients nss-pam-ldapd.
Zodra de installatie is voltooid, zijn er enkele dingen waar we naar kijken. De volgende stappen moeten alleen op de server worden uitgevoerd, tenzij expliciet vermeld:
1. Zorg ervoor dat SELinux staat niet in de weg door het volgende in te schakelen: booleans aanhoudend, zowel op de server als op de client:
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0.
Waar allow_ypbind is vereist voor op LDAP gebaseerde authenticatie, en authlogin_nsswitch_use_ldap kan nodig zijn voor sommige toepassingen.
2. Activeer en start de service:
# systemctl slapd.service inschakelen. # systemctl start slapd.service.
Houd er rekening mee dat u de service ook kunt uitschakelen, opnieuw starten of stoppen met systemctl ook:
# systemctl schakel slapd.service uit. # systemctl herstart slapd.service. # systemctl stop slapd.service.
3. sinds de slapd service wordt uitgevoerd als de ldap-gebruiker (die u kunt verifiëren met ps -e -o pid, uname, comm | grep slapd), zou een dergelijke gebruiker de moeten bezitten /var/lib/ldap directory zodat de server ingangen kan wijzigen die zijn gemaakt door administratieve tools die alleen als root kunnen worden uitgevoerd (meer hierover in een minuut).
Voordat u het eigendom van deze map recursief wijzigt, kopieert u het voorbeelddatabaseconfiguratiebestand 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-beheerder in en wijs een wachtwoord toe:
#slappasswd.
zoals weergegeven in de volgende afbeelding:
en maak een LDIF het dossier (ldaprootpasswd.ldif) met de volgende inhoud:
dn: olcDatabase={0}config, cn=config. wijzigingstype: wijzigen. toevoegen: olcRootPW. olcRootPW: {SSHA}WACHTWOORD.
waar:
Verwijzend naar de eerder gegeven theoretische achtergrond, ldaprootpasswd.ldif
bestand zal een vermelding toevoegen aan de LDAP-directory. In die invoer vertegenwoordigt elke regel een attribuut: waardepaar (waarbij dn, changetype, add en olcRootPW de attributen zijn en de tekenreeksen rechts van elke dubbele punt hun overeenkomstige waarden zijn).
Houd hier rekening mee als we verder gaan, en houd er rekening mee dat we dezelfde algemene namen gebruiken (cn=)
in de rest van dit artikel, waar elke stap afhangt van de vorige.
5. Voeg nu het corresponderende LDAP-item toe door de. op te geven URI verwijzend naar de ldap-server, waar alleen de velden protocol/host/poort zijn toegestaan.
# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif
De uitvoer moet vergelijkbaar zijn met:
en importeer enkele basis-LDAP-definities uit de /etc/openldap/schema
map:
# voor def in cosine.ldif nis.ldif inetorgperson.ldif; doe ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; klaar.
6. Laat LDAP uw domein gebruiken in zijn database.
Maak een ander LDIF bestand, dat we zullen noemen ldapdomain.ldif
, met de volgende inhoud, ter vervanging van uw domein (in de domeincomponent dc=) en wachtwoord waar nodig:
dn: olcDatabase={1}monitor, cn=config. wijzigingstype: wijzigen. vervangen: olcAccess. olcAccess: {0}naar * door dn.base="gidNumber=0+uidNumber=0,cn=peercred, cn=extern, cn=auth" gelezen door dn.base="cn=Manager,dc=mijndomein,dc=com" gelezen door * geen dn: olcDatabase={2}hdb, cn=config. wijzigingstype: wijzigen. vervang: olcSuffix. olcSuffix: dc=mijndomein,dc=com dn: olcDatabase={2}hdb, cn=config. wijzigingstype: wijzigen. vervang: olcRootDN. olcRootDN: cn=Beheerder,dc=mijndomein,dc=com dn: olcDatabase={2}hdb, cn=config. wijzigingstype: wijzigen. toevoegen: olcRootPW. olcRootPW: {SSHA}WACHTWOORD dn: olcDatabase={2}hdb, cn=config. wijzigingstype: wijzigen. toevoegen: olcAccess. olcAccess: {0}to attrs=userPassword, shadowLastChange door dn="cn=Manager,dc=mijndomein,dc=com" schrijven door anonieme auth door zelf schrijven door * geen. olcAccess: {1}naar dn.base="" door * read. olcAccess: {2}naar * door dn="cn=Manager, dc=mijndomein, dc=com" schrijven door * read.
Laad het dan als volgt:
# ldapmodify -H ldapi:/// -f ldapdomain.ldif.
7. Nu is het 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 een naam zullen geven baseldapdomain.ldif
:
dn: dc=mijndomein, dc=com. objectClass: boven. objectClass: dcObject. objectklasse: organisatie. o: mijndomein com. dc: mijndomein dn: cn=Beheerder, dc=mijndomein, dc=com. objectClass: organisatorischeRol. cn: Beheerder. beschrijving: Directory Manager dn: ou=Mensen, dc=mijndomein, dc=com. objectClass: organisatorische eenheid. ou: Personen dn: ou=Groep, dc=mijndomein, dc=com. objectClass: organisatorische eenheid. u: Groep.
Voeg de vermeldingen toe aan de LDAP-directory:
# ldapadd -x -D cn=Beheerder, dc=mijndomein, dc=com -W -f baseldapdomein.ldif.
8. Maak een LDAP-gebruiker met de naam 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=Beheerder, ou=Groep, dc=mijndomein, dc=com. objectClass: boven. objectClass: posixGroup. gid-nummer: 1004.
waar gidNummer is de GID in /etc/group voor ldapuser) en laad het:
# ldapadd -x -W -D "cn=Beheerder, dc=mijndomein, dc=com" -f ldapgroup.ldif.
9. Voeg een LDIF-bestand toe met de definities voor gebruiker ldapuser (ldapuser.ldif
):
dn: uid=ldapuser, ou=Mensen, dc=mijndomein, dc=com. objectClass: boven. objectClass: account. objectClass: posixAccount. objectClass: shadowAccount. cn: ldapuser. uid: ldapuser. uid-nummer: 1004. gid-nummer: 1004. homeDirectory: /home/ldapuser. gebruikerswachtwoord: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M. loginShell: /bin/bash. gecos: ldapuser. schaduwLaatste Wijziging: 0. schaduwMax: 0. schaduwWaarschuwing: 0.
en laad het:
# ldapadd -x -D cn=Beheerder, dc=mijndomein, dc=com -W -f ldapuser.ldif.
Op dezelfde manier kunt u de gebruikersinvoer die u zojuist hebt gemaakt, verwijderen:
# ldapdelete -x -W -D cn=Beheerder, dc=mijndomein, dc=com "uid=ldapuser, ou=Mensen, dc=mijndomein, dc=com"
10. Communicatie via de firewall toestaan:
# firewall-cmd --add-service=ldap.
11. Last but not least, schakel de client in om te authenticeren met behulp van LDAP.
Om ons te helpen bij deze laatste stap, gebruiken we de authconfig hulpprogramma (een interface voor het configureren van bronnen voor systeemverificatie).
Met de volgende opdracht wordt de homedirectory voor de gevraagde gebruiker gemaakt als deze niet bestaat nadat de authenticatie tegen de LDAP-server is geslaagd:
# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mijndomein.com --ldapbasedn="dc=mijndomein, dc=com" --enablemkhomedir --update.
In dit artikel hebben we uitgelegd hoe u basisverificatie instelt tegen een LDAP-server. Om de setup beschreven in deze handleiding verder te configureren, verwijzen wij u naar: Hoofdstuk 13 – LDAP-configuratie in de RHEL 7-systeembeheerdershandleiding, met speciale aandacht voor de beveiligingsinstellingen met behulp van TLS.
Voel je vrij om eventuele vragen achter te laten via het onderstaande reactieformulier.