RHCSA Serie: LDAP-baséiert Authentifikatioun opsetzen an RHEL 7 - Deel 14
Mir fänken dësen Artikel un andeems Dir e puer LDAP Basics beschreift (wat et ass, wou et benotzt gëtt a firwat) a weisen wéi een e LDAP Server opstellt an e Client konfiguréiert fir géint et mat Red Hat Enterprise Linux 7 Systemer ze authentifizéieren.
Wéi mir wäerte gesinn, ginn et e puer aner méiglech Applikatiounsszenarien, awer an dësem Guide konzentréiere mir eis ganz op LDAP-baséiert Authentifikatioun. Zousätzlech, bedenkt w.e.g. datt wéinst der Breetheet vum Thema nëmme seng Grondlage hei ofdecken, awer Dir kënnt op d'Dokumentatioun bezéien, déi am Resumé duergestallt gëtt fir méi detailléiert Detailer.
Aus dem selwechte Grond wäert Dir feststellen datt ech beschloss hunn e puer Referenzen op Mann Säiten vun LDAP Tools fir Kuerzegkeet ze verloossen, awer déi entspriechend Erklärungen sinn op engem Fangerspëtzt (Man Ldapadd, zum Beispill).
Dat gesot, loosst eis ufänken.
Eis Testëmfeld besteet aus zwee RHEL 7 Këschte:
Server: 192.168.0.18. FQDN: rhel7.mydomain.com Client: 192.168.0.20. FQDN: ldapclient.mydomain.com
Wann Dir wëllt, kënnt Dir d'Maschinn benotzen déi am Deel 12 installéiert ass: Automatiséiert RHEL 7 Installatiounen mat Kickstart als Client.
LDAP steet fir Lightweight Directory Access Protocol a besteet aus enger Rei vu Protokoller, déi e Client erlaabt, iwwer e Netzwierk, zentral gespäichert Informatioun z'erreechen (wéi e Verzeechnes vu Login Shells, absolute Weeër fir Heemverzeichnungen, an aner typesch System Benotzerinformatioun, zum Beispill) déi vu verschiddene Plazen zougänglech solle sinn oder fir eng grouss Unzuel vun Endbenotzer verfügbar sinn (en anert Beispill wier e Verzeechnes mat Heemadressen an Telefonsnummere vun alle Mataarbechter an enger Firma).
Sou (a méi) Informatioun zentral ze halen heescht datt et méi einfach erhale ka ginn an zougänglech ass vu jidderengem deen d'Erlaabnes kritt huet fir se ze benotzen.
Déi folgend Diagramm bitt e vereinfacht Diagramm vun LDAP, a gëtt hei ënnen méi detailléiert beschriwwen:
Erklärung vun uewen Diagramm am Detail.
- En Entrée an engem LDAP Verzeichnis duerstellt eng eenzeg Eenheet oder Informatioun an ass eenzegaarteg identifizéiert mat deem wat en Distinguished Name genannt gëtt.
- En Attribut ass e Stéck Informatioun assoziéiert mat enger Entrée (zum Beispill Adressen, verfügbare Kontaktnummeren an E-Mailadressen).
- All Attribut gëtt een oder méi Wäerter zougewisen, déi aus enger Plaz getrennte Lëscht besteet. E Wäert deen eenzegaarteg ass pro Entrée gëtt e Relative Distinguished Name genannt.
Wann dat gesot gëtt, loosst eis mam Server a Client Installatiounen virugoen.
Installatioun a Konfiguratioun vun engem LDAP Server a Client
Am RHEL 7 gëtt LDAP vun OpenLDAP implementéiert. Fir de Server a Client z'installéieren, benotzt déi folgend Kommandoen, respektiv:
# yum update && yum install openldap openldap-clients openldap-servers # yum update && yum install openldap openldap-clients nss-pam-ldapd
Wann d'Installatioun fäerdeg ass, ginn et e puer Saachen déi mir kucken. Déi folgend Schrëtt sollen eleng um Server ausgefouert ginn, ausser explizit notéiert:
1. Vergewëssert Iech datt SELinux net am Wee kënnt andeems Dir déi folgend Booleaner stänneg aktivéiert, souwuel um Server wéi och um Client:
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0
Wou allow_ypbind fir LDAP-baséiert Authentifikatioun erfuerderlech ass, an authlogin_nsswitch_use_ldap kann vun e puer Uwendungen gebraucht ginn.
2. Aktivéiert a starten de Service:
# systemctl enable slapd.service # systemctl start slapd.service
Denkt drun datt Dir och de Service mat systemctl auszeschalten, nei starten oder stoppen kann:
# systemctl disable slapd.service # systemctl restart slapd.service # systemctl stop slapd.service
3. Well de slapd-Service als ldap-Benotzer leeft (wat Dir mat ps -e -o verifizéiere kënnt pid,uname,comm | grep slapd), soll esou Benotzer den /var/lib/ldap-Verzeichnis besëtzen, fir datt de Server fäeg sinn Entréen z'änneren, déi vun administrativen Tools erstallt sinn, déi nëmmen als Root kënne lafen (méi doriwwer an enger Minutt).
Ier Dir d'Besëtzer vun dësem Verzeichnis rekursiv ännert, kopéiert d'Probe-Datebankkonfiguratiounsdatei fir anzeschloen:
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # chown -R ldap:ldap /var/lib/ldap
4. Setzt en OpenLDAP Administrativ Benotzer op a gitt e Passwuert un:
# slappasswd
wéi am nächste Bild gewisen:
a erstellt eng LDIF Datei (ldaprootpasswd.ldif) mat den folgenden Inhalter:
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD
wou:
- PASSWORD ass déi hashed String déi virdru kritt gouf.
- cn=config weist global Configuratiounsoptiounen un.
- olcDatabase weist e spezifeschen Datebank-Instanznumm un a kann normalerweis bannent /etc/openldap/slapd.d/cn=config fonnt ginn.
Bezitt op den theoreteschen Hannergrond, dee virdru geliwwert gouf, gëtt d'Datei ldaprootpasswd.ldif
en Entrée an den LDAP-Verzeichnis derbäi. An dëser Entrée stellt all Zeil en Attribut duer: Wäertpaar (wou dn, changetype, add, an olcRootPW d'Attributer sinn an d'Strings riets vun all Colon hir entspriechend Wäerter sinn).
Dir wëllt dëst am Kapp behalen wéi mir weidergoe goen, an notéiert w.e.g. datt mir déiselwecht Common Names benotzen (cn=)
am Rescht vun dësem Artikel, wou all Schrëtt vum viregten hänkt .
5. Füügt elo déi entspriechend LDAP-Entrée un andeems Dir den URI spezifizéiert deen op den ldap-Server referéiert, wou nëmmen de Protokoll/Host/Port Felder erlaabt sinn.
# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif
D'Ausgab soll ähnlech sinn wéi:
an importéiert e puer grondleeënd LDAP Definitiounen aus dem /etc/openldap/schema
Verzeichnis:
# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done
6. Hutt LDAP Är Domain an hirer Datebank benotzen.
Erstellt eng aner LDIF-Datei, déi mir ldapdomain.ldif
nennen, mat den folgenden Inhalter, ersetzt Äert Domain (am Domain Component dc=) a Passwuert wéi passend:
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
Da lued et wéi follegt:
# ldapmodify -H ldapi:/// -f ldapdomain.ldif
7. Elo ass et Zäit fir e puer Entréen an eise LDAP Verzeichnis ze addéieren. Attributer a Wäerter ginn duerch e Colon (:)
an der folgender Datei getrennt, déi mir baseldapdomain.ldif
nennen:
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
Füügt d'Entréen an de LDAP Verzeichnis:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif
8. Erstellt en LDAP-Benotzer mam Numm ldapuser (adduser ldapuser), erstellt dann d'Definitioune fir eng LDAP-Grupp an ldapgroup.ldif
.
# adduser ldapuser # vi ldapgroup.ldif
Füügt folgenden Inhalt.
dn: cn=Manager,ou=Group,dc=mydomain,dc=com objectClass: top objectClass: posixGroup gidNumber: 1004
wou gidNumber de GID an /etc/group fir ldapuser ass) a lued et:
# ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif
9. Füügt eng LDIF Datei mat den Definitioune fir de Benotzer 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
a lued et:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif
Ähnlech kënnt Dir de Benotzerentrée läschen, deen Dir just erstallt hutt:
# ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"
10. Erlaabt Kommunikatioun duerch d'Firewall:
# firewall-cmd --add-service=ldap
11. Lescht, awer net zulescht, erméiglecht de Client ze authentifizéieren mat LDAP.
Fir eis an dësem leschte Schrëtt ze hëllefen, benotze mir d'Authconfig Utility (eng Interface fir d'Konfiguratioun vun der Systemauthentifikatiounsressourcen).
Mat dem folgenden Kommando gëtt den Heemverzeechnes fir den ugefrote Benotzer erstallt wann et net existéiert nodeems d'Authentifikatioun géint den LDAP Server geléngt:
# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update
Resumé
An dësem Artikel hu mir erkläert wéi Dir d'Basis Authentifikatioun géint en LDAP Server opstellt. Fir de Setup, deen an dësem Guide beschriwwe gëtt, weider ze konfiguréieren, kuckt w.e.g. Kapitel 13 - LDAP Konfiguratioun am RHEL 7 System Administrator Guide, besonnesch Opmierksamkeet op d'Sécherheetsastellunge mat TLS.
Fillt gratis all Froen ze hannerloossen déi Dir hutt mat dem Kommentarformular hei drënner.