Serje RHCSA: Twaqqif ta' Awtentikazzjoni bbażata fuq LDAP f'RHEL 7 - Parti 14


Se nibdew dan l-artikolu billi niddeskrivu xi punti bażiċi tal-LDAP (x'inhu, fejn jintuża u għaliex) u nuru kif twaqqaf server LDAP u kkonfigurat klijent biex jawtentika kontrih bl-użu tas-sistemi Red Hat Enterprise Linux 7.

Kif se naraw, hemm diversi xenarji oħra ta 'applikazzjoni possibbli, iżda f'din il-gwida se niffukaw kompletament fuq awtentikazzjoni bbażata fuq LDAP. Barra minn hekk, jekk jogħġbok żomm f'moħħok li minħabba l-kobor tas-suġġett, aħna se nkopru biss il-punti bażiċi tiegħu hawn, iżda tista 'tirreferi għad-dokumentazzjoni deskritta fis-sommarju għal dettalji aktar fil-fond.

Għall-istess raġuni, tinnota li ddeċidejt li nħalli barra diversi referenzi għal paġni man ta 'għodod LDAP għal finijiet ta' qosor, iżda l-ispjegazzjonijiet korrispondenti huma f'distanza ta 'subgħajk (man ldapadd, per eżempju).

Cela dit, ejja nibdew.

L-ambjent tat-test tagħna jikkonsisti f'żewġ kaxxi RHEL 7:

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

Jekk trid, tista 'tuża l-magna installata fil-Parti 12: Awtomatizza l-installazzjonijiet RHEL 7 billi tuża Kickstart bħala klijent.

LDAP tfisser Lightweight Directory Access Protocol u tikkonsisti f'sett ta' protokolli li jippermettu lil klijent jaċċessa, fuq netwerk, informazzjoni maħżuna ċentralment (bħal direttorju ta' qxur ta' login, mogħdijiet assoluti għal direttorji tad-dar, u informazzjoni tipika oħra dwar l-utent tas-sistema, pereżempju) li għandhom ikunu aċċessibbli minn postijiet differenti jew disponibbli għal numru kbir ta’ utenti finali (eżempju ieħor ikun direttorju ta’ indirizzi tad-dar u numri tat-telefon tal-impjegati kollha f’kumpanija).

Iż-żamma ta' tali (u aktar) informazzjoni ċentralment ifisser li tista' tinżamm u tiġi aċċessata aktar faċilment minn kull min ikun ingħata permessi biex jużaha.

Id-dijagramma li ġejja toffri dijagramma simplifikata ta 'LDAP, u hija deskritta hawn taħt f'aktar dettall:

Spjegazzjoni tad-dijagramma ta' hawn fuq fid-dettall.

  1. Daħla f'direttorju LDAP tirrappreżenta unità jew informazzjoni waħda u hija identifikata unikament b'dak li jissejjaħ Isem Distinti.
  2. Attribut huwa biċċa informazzjoni assoċjata ma' dħul (pereżempju, indirizzi, numri tat-telefon ta' kuntatt disponibbli, u indirizzi tal-email).
  3. Kull attribut huwa assenjat valur wieħed jew aktar li jikkonsistu f'lista separata bi spazju. Valur li huwa uniku għal kull entrata jissejjaħ Isem Relattiv Distinti.

Għalhekk, ejja nipproċedu bl-installazzjonijiet tas-server u tal-klijent.

Installazzjoni u Konfigurazzjoni ta' Server u Klijent LDAP

F'RHEL 7, LDAP huwa implimentat minn OpenLDAP. Biex tinstalla s-server u l-klijent, uża l-kmandi li ġejjin, rispettivament:

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

Ladarba l-installazzjoni titlesta, hemm xi affarijiet li nħarsu lejhom. Il-passi li ġejjin għandhom jitwettqu fuq is-server waħdu, sakemm ma jkunx innutat b'mod espliċitu:

1. Kun żgur li SELinux ma jfixkilx billi tippermetti l-booleans li ġejjin b'mod persistenti, kemm fuq is-server kif ukoll fuq il-klijent:

# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Fejn allow_ypbind huwa meħtieġ għal awtentikazzjoni bbażata fuq LDAP, u authlogin_nsswitch_use_ldap jista' jkun meħtieġ minn xi applikazzjonijiet.

2. Ippermetti u ibda s-servizz:

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

Żomm f'moħħok li tista 'wkoll tiddiżattiva, terġa' tibda jew twaqqaf is-servizz bis-systemctl ukoll:

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

3. Peress li s-servizz slapd jaħdem bħala l-utent ldap (li tista' tivverifika b'ps -e -o pid,uname,comm | grep slapd), utent bħal dan għandu jkollu d-direttorju /var/lib/ldap sabiex is-server tkun tista' timmodifika l-entrati maħluqa minn għodod amministrattivi li jistgħu jitħaddmu biss bħala root (aktar dwar dan f'minuta).

Qabel ma tibdel is-sjieda ta' dan id-direttorju b'mod rikorsiv, ikkopja l-kampjun tal-fajl tal-konfigurazzjoni tad-database għal slapd fih:

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

4. Stabbilixxi utent amministrattiv OpenLDAP u assenja password:

# slappasswd

kif muri fl-immaġni li jmiss:

u oħloq fajl LDIF (ldaprootpasswd.ldif) bil-kontenut li ġej:

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

fejn:

  1. PASSWORD hija s-sekwenza hashed miksuba qabel.
  2. cn=config jindika għażliet ta' konfigurazzjoni globali.
  3. olcDatabase jindika isem speċifiku tal-istanza tad-database u tipikament jista' jinstab ġewwa /etc/openldap/slapd.d/cn=config.

B'referenza għall-isfond teoretiku pprovdut aktar kmieni, il-fajl ldaprootpasswd.ldif se jżid dħul fid-direttorju LDAP. F'dik id-dħul, kull linja tirrappreżenta attribut: par ta 'valur (fejn dn, changetype, add, u olcRootPW huma l-attributi u l-kordi fuq il-lemin ta' kull kolon huma l-valuri korrispondenti tagħhom).

Jista' jkun li trid iżżomm dan f'moħħok hekk kif nipproċedu aktar, u jekk jogħġbok innota li qed nużaw l-istess Ismijiet Komuni (cn=) matul il-kumplament ta' dan l-artikolu, fejn kull pass jiddependi fuq dak preċedenti .

5. Issa, żid l-entrata LDAP korrispondenti billi tispeċifika l-URI li tirreferi għas-server ldap, fejn huma permessi biss l-oqsma tal-protokoll/host/port.

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

L-output għandu jkun simili għal:

u jimporta xi definizzjonijiet bażiċi LDAP mid-direttorju /etc/openldap/schema:

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

6. Ħalli LDAP juża d-dominju tiegħek fid-database tiegħu.

Oħloq fajl LDIF ieħor, li se nsejħulu ldapdomain.ldif, bil-kontenut li ġej, filwaqt li tissostitwixxi d-dominju tiegħek (fil-Komponent tad-Dominju dc=) u l-password kif xieraq:

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

Imbagħad tagħbijaha kif ġej:

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

7. Issa wasal iż-żmien li żżid xi entrati fid-direttorju LDAP tagħna. L-attributi u l-valuri huma separati b'kolon (:) fil-fajl li ġej, li se nsemmu 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

Żid l-entrati fid-direttorju LDAP:

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

8. Oħloq utent LDAP imsejjaħ ldapuser (adduser ldapuser), imbagħad oħloq id-definizzjonijiet għal grupp LDAP f'ldapgroup.ldif.

# adduser ldapuser
# vi ldapgroup.ldif

Żid il-kontenut li ġej.

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

fejn gidNumber huwa l-GID f'/etc/group għal ldapuser) u tagħbijah:

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

9. Żid fajl LDIF bid-definizzjonijiet għall-utent 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

u tagħbijaha:

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

Bl-istess mod, tista' tħassar id-dħul tal-utent li għadek kif ħloqt:

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

10. Ħalli l-komunikazzjoni permezz tal-firewall:

# firewall-cmd --add-service=ldap

11. L-aħħar, iżda mhux l-inqas, jippermetti lill-klijent biex jawtentika bl-użu ta 'LDAP.

Biex tgħinna f'dan il-pass finali, se nużaw l-utilità authconfig (interface għall-konfigurazzjoni tar-riżorsi tal-awtentikazzjoni tas-sistema).

Bl-użu tal-kmand li ġej, id-direttorju tad-dar għall-utent mitlub jinħoloq jekk ma jeżistix wara li l-awtentikazzjoni kontra s-server LDAP tirnexxi:

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

Sommarju

F'dan l-artikolu spjegajna kif twaqqaf awtentikazzjoni bażika kontra server LDAP. Biex tkompli tikkonfigura s-setup deskritta fil-gwida preżenti, jekk jogħġbok irreferi għall-Kapitolu 13 - Konfigurazzjoni LDAP fil-gwida tal-amministratur tas-Sistema RHEL 7, billi tagħti attenzjoni speċjali lill-issettjar tas-sigurtà bl-użu ta 'TLS.

Ħossok liberu li tħalli kwalunkwe mistoqsija li jista 'jkollok billi tuża l-formola tal-kummenti hawn taħt.