RHCSA serija: LDAP pagrįsto autentifikavimo nustatymas RHEL 7 – 14 dalis


Pradėsime šį straipsnį aprašydami kai kuriuos LDAP pagrindus (kas tai yra, kur jis naudojamas ir kodėl) ir parodysime, kaip nustatyti LDAP serverį ir sukonfigūruoti klientą, kad jis autentifikuotųsi naudojant Red Hat Enterprise Linux 7sistemos.

Kaip matysime, yra keletas kitų galimų taikymo scenarijų, tačiau šiame vadove daugiausia dėmesio skirsime LDAP autentifikavimui. Be to, atminkite, kad dėl temos platumo čia apžvelgsime tik pagrindinius dalykus, tačiau išsamesnės informacijos galite rasti santraukoje pateiktoje dokumentacijoje.

Dėl tos pačios priežasties pastebėsite, kad dėl trumpumo nusprendžiau nepateikti kelių nuorodų į LDAP įrankių vadovo puslapius, tačiau atitinkami paaiškinimai yra ranka pasiekiami (man ldapadd, pavyzdys).

Tai sakė, pradėkime.

Mūsų bandymų aplinka

Mūsų bandymo aplinka susideda iš dviejų RHEL 7 langelių:


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

Jei norite, galite naudoti įrenginį, įdiegtą 12 dalyje: Automatizuokite RHEL 7 diegimą naudodami Kickstart kaip klientą.

Kas yra LDAP?

LDAP reiškia Lightweight Directory Access Protocol ir susideda iš protokolų rinkinio, leidžiančio klientui tinkle pasiekti centralizuotai saugomą informaciją (pvz., prisijungimo apvalkalų katalogą). , absoliutūs keliai į namų katalogus ir, pavyzdžiui, kita tipiška sistemos naudotojo informacija), kuri turėtų būti pasiekiama iš skirtingų vietų arba prieinama daugeliui galutinių vartotojų (kitas pavyzdys būtų visų darbuotojų namų adresų ir telefonų numerių katalogas). kompanija).

Tokios (ir daugiau) informacijos laikymas centralizuotai reiškia, kad ją lengviau prižiūrėti ir pasiekti visi, kuriems buvo suteiktas leidimas ja naudotis.

Toliau pateiktoje diagramoje pateikiama supaprastinta LDAP diagrama, kuri išsamiau aprašyta toliau:

Išsamus aukščiau pateiktos diagramos paaiškinimas.

  1. Įrašas LDAP kataloge reiškia vieną vienetą arba informaciją ir yra unikaliai identifikuojamas pagal vadinamąjį skiriamąjį pavadinimą.
  2. Atributas yra su įrašu susieta informacijos dalis (pvz., adresai, galimi kontaktiniai telefono numeriai ir el. pašto adresai).
  3. Kiekvienam atributui priskiriama viena ar daugiau reikšmių, kurias sudaro tarpais atskirtas sąrašas. Vieno įrašo vertė yra unikali, vadinama santykiniu skiriamuoju pavadinimu.

Tai pasakius, tęskime serverio ir kliento diegimą.

LDAP serverio ir kliento diegimas ir konfigūravimas

RHEL 7 LDAP įgyvendina OpenLDAP. Norėdami įdiegti serverį ir klientą, naudokite atitinkamai šias komandas:


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

Kai diegimas bus baigtas, yra keletas dalykų, į kuriuos žiūrime. Šie veiksmai turėtų būti atliekami tik serveryje, nebent tai būtų aiškiai nurodyta:

1. Įsitikinkite, kad SELinux netrukdo, nuolat įjungdami toliau nurodytus loginius duomenis tiek serveryje, tiek kliente:


setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Kai LDAP pagrįstam autentifikavimui reikalingas allow_ypbind, o kai kurioms programoms gali prireikti authlogin_nsswitch_use_ldap.

2. Įgalinkite ir paleiskite paslaugą:


systemctl enable slapd.service
systemctl start slapd.service

Atminkite, kad paslaugą taip pat galite išjungti, iš naujo paleisti arba sustabdyti naudodami systemctl:


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

3. Kadangi paslauga slapd veikia kaip ldap naudotojas (kurį galite patvirtinti naudodami ps -e -o pid,uname,comm | grep slapd >), tokiam vartotojui turėtų priklausyti /var/lib/ldap katalogas, kad serveris galėtų modifikuoti įrašus, sukurtus administravimo įrankiais, kuriuos galima paleisti tik kaip root (daugiau apie tai minutė).

Prieš rekursyviai keisdami šio katalogo nuosavybės teisę, nukopijuokite į jį slapd duomenų bazės konfigūracijos failo pavyzdį:


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

4. Nustatykite OpenLDAP administracinį naudotoją ir priskirkite slaptažodį:


slappasswd

kaip parodyta kitame paveikslėlyje:

ir sukurkite LDIF failą (ldaprootpasswd.ldif) su tokiu turiniu:


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

kur:

  1. PASSWORD yra anksčiau gauta maišos eilutė.
  2. cn=config nurodo visuotines konfigūracijos parinktis.
  3. olcDatabase nurodo konkretų duomenų bazės egzemplioriaus pavadinimą ir paprastai jį galima rasti /etc/openldap/slapd.d/cn=config.

Remiantis anksčiau pateiktu teoriniu pagrindu, failas ldaprootpasswd.ldif įtrauks įrašą į LDAP katalogą. Šiame įraše kiekviena eilutė reiškia atributą: reikšmių pora (kur dn, changetype, add ir olcRootPW yra atributai, o eilutės, esančios dešinėje kiekvieno dvitaškio, yra atitinkamos reikšmės).

Galbūt norėsite tai atsiminti, kai tęsiame toliau, ir atminkite, kad likusioje šio straipsnio dalyje naudojame tuos pačius bendrinius pavadinimus (cn=), kur kiekvienas veiksmas priklauso nuo ankstesnio .

5. Dabar pridėkite atitinkamą LDAP įrašą, nurodydami URI, nurodantį ldap serverį, kuriame leidžiami tik protokolo/pagrindinio kompiuterio/prievado laukai.


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

Išvestis turėtų būti panaši į:

ir importuoti kai kuriuos pagrindinius LDAP apibrėžimus iš /etc/openldap/schema katalogo:


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

6. Leiskite LDAP naudoti jūsų domeną savo duomenų bazėje.

Sukurkite kitą LDIF failą, kurį vadinsime ldapdomain.ldif, su tokiu turiniu, atitinkamai pakeisdami savo domeną (domeno komponente dc=) ir slaptažodį:


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

Tada įkelkite jį taip:


ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. Dabar atėjo laikas įtraukti keletą įrašų į mūsų LDAP katalogą. Atributai ir reikšmės atskiriamos dvitaškiu (:) šiame faile, kurį pavadinsime 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

Įtraukite įrašus į LDAP katalogą:


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif

8. Sukurkite LDAP naudotoją pavadinimu ldapuser (adduser ldapuser), tada sukurkite LDAP grupės apibrėžimus ldapgroup.ldif<. /kodas>.


adduser ldapuser
vi ldapgroup.ldif

Pridėkite šį turinį.


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

kur gidNumber yra GID, esantis /etc/group, skirtas ldapuser) ir įkelkite jį:


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

9. Pridėkite LDIF failą su naudotojo ldapuser apibrėžimais (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

ir įkelk:


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

Taip pat galite ištrinti ką tik sukurtą vartotojo įrašą:


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

10. Leiskite bendrauti per užkardą:


firewall-cmd --add-service=ldap

11. Paskutinis, bet ne mažiau svarbus dalykas, įgalinkite klientą autentifikuoti naudojant LDAP.

Kad padėtume mums atlikti šį paskutinį veiksmą, naudosime authconfig (sistemos autentifikavimo išteklių konfigūravimo sąsają).

Naudojant šią komandą, užklausto vartotojo namų katalogas sukuriamas, jei jo nėra po sėkmingo autentifikavimo su LDAP serveriu:


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

Santrauka

Šiame straipsnyje paaiškinome, kaip nustatyti pagrindinį autentifikavimą naudojant LDAP serverį. Norėdami toliau konfigūruoti šiame vadove aprašytą sąranką, žr. RHEL 7 sistemos administratoriaus vadovo 13 skyrių – LDAP konfigūracija, ypatingą dėmesį skirdami saugos parametrams naudojant TLS.

Nedvejodami palikite bet kokius klausimus naudodami toliau pateiktą komentarų formą.