Mfululizo wa RHCSA: Kuweka Uthibitishaji unaotegemea LDAP katika RHEL 7 - Sehemu ya 14


Tutaanza makala haya kwa kueleza baadhi ya misingi ya LDAP (ni nini, inatumika wapi na kwa nini) na kuonyesha jinsi ya kusanidi seva ya LDAP na kusanidi mteja ili kuthibitisha dhidi yake kwa kutumia mifumo ya Red Hat Enterprise Linux 7.

Kama tutakavyoona, kuna matukio mengine kadhaa ya utumizi yanayowezekana, lakini katika mwongozo huu tutazingatia kabisa uthibitishaji wa msingi wa LDAP. Kwa kuongeza, tafadhali kumbuka kwamba kutokana na ukubwa wa somo, tutashughulikia tu misingi yake hapa, lakini unaweza kurejelea hati zilizoainishwa katika muhtasari kwa maelezo ya kina zaidi.

Kwa sababu hiyo hiyo, utagundua kuwa nimeamua kuacha marejeleo kadhaa kwa kurasa za mwanadamu za zana za LDAP kwa sababu ya ufupi, lakini maelezo yanayolingana yako umbali wa ncha ya vidole (man ldapadd, kwa mfano).

Hiyo ilisema, wacha tuanze.

Mazingira yetu ya majaribio yana visanduku viwili vya RHEL 7:

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

Ukitaka, unaweza kutumia mashine iliyosakinishwa katika Sehemu ya 12: Weka otomatiki usakinishaji wa RHEL 7 ukitumia Kickstart kama mteja.

LDAP inawakilisha Itifaki ya Ufikiaji wa Saraka Nyepesi na inajumuisha seti ya itifaki ambayo inaruhusu mteja kufikia, kupitia mtandao, habari iliyohifadhiwa serikali kuu (kama vile saraka ya makombora ya kuingia, njia kamili za saraka za nyumbani, na maelezo mengine ya kawaida ya mtumiaji wa mfumo, kwa mfano) ambayo inapaswa kupatikana kutoka sehemu tofauti au kupatikana kwa idadi kubwa ya watumiaji wa mwisho (mfano mwingine utakuwa orodha ya anwani za nyumbani na nambari za simu za wafanyikazi wote katika kampuni).

Kuweka maelezo kama hayo (na zaidi) katikati kunamaanisha kuwa yanaweza kudumishwa na kufikiwa kwa urahisi na kila mtu ambaye amepewa ruhusa ya kuyatumia.

Mchoro ufuatao unatoa mchoro uliorahisishwa wa LDAP, na umefafanuliwa hapa chini kwa undani zaidi:

Ufafanuzi wa mchoro hapo juu kwa undani.

  1. Ingizo katika saraka ya LDAP inawakilisha kitengo au taarifa moja na inatambulishwa kipekee kwa kile kinachoitwa Jina Lililotofautishwa.
  2. Sifa ni sehemu ya taarifa inayohusishwa na ingizo (kwa mfano, anwani, nambari za simu zinazopatikana, na anwani za barua pepe).
  3. Kila sifa imepewa thamani moja au zaidi zinazojumuisha orodha iliyotenganishwa na nafasi. Thamani ambayo ni ya kipekee kwa kila ingizo inaitwa Jina Lililotofautishwa na Jamaa.

Hiyo inasemwa, wacha tuendelee na usakinishaji wa seva na mteja.

Kusakinisha na Kusanidi Seva ya LDAP na Mteja

Katika RHEL 7, LDAP inatekelezwa na OpenLDAP. Ili kufunga seva na mteja, tumia amri zifuatazo, mtawaliwa:

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

Mara baada ya ufungaji kukamilika, kuna baadhi ya mambo tunayoangalia. Hatua zifuatazo zinapaswa kufanywa kwenye seva pekee, isipokuwa ikiwa imebainishwa wazi:

1. Hakikisha SELinux haisumbui kwa kuwezesha booleans zifuatazo kila mara, kwenye seva na mteja:

# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Ambapo allow_ypbind inahitajika kwa uthibitishaji kulingana na LDAP, na authlogin_nsswitch_use_ldap inaweza kuhitajika na baadhi ya programu.

2. Wezesha na uanze huduma:

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

Kumbuka kuwa unaweza pia kuzima, kuanzisha upya, au kusimamisha huduma na systemctl pia:

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

3. Kwa kuwa huduma ya slapd inaendeshwa kama mtumiaji wa ldap (ambaye unaweza kuthibitisha kwa ps -e -o pid,uname,comm | grep slapd), mtumiaji kama huyo anapaswa kumiliki saraka ya /var/lib/ldap ili seva iweze. kuwa na uwezo wa kurekebisha maingizo yaliyoundwa na zana za usimamizi ambazo zinaweza tu kuendeshwa kama mzizi (zaidi kuhusu hili kwa dakika moja).

Kabla ya kubadilisha umiliki wa saraka hii kwa kujirudia, nakili sampuli ya faili ya usanidi wa hifadhidata kwa slapd ndani yake:

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

4. Sanidi mtumiaji wa utawala wa OpenLDAP na uweke nenosiri:

# slappasswd

kama inavyoonyeshwa kwenye picha ifuatayo:

na unda faili ya LDIF (ldaprootpasswd.ldif) na yaliyomo yafuatayo:

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

wapi:

  1. PASSWORD ni mfuatano wa heshi uliopatikana mapema.
  2. cn=config inaonyesha chaguo za usanidi wa kimataifa.
  3. olcDatabase inaonyesha jina maalum la mfano wa hifadhidata na inaweza kupatikana ndani ya /etc/openldap/slapd.d/cn=config.

Ikirejelea usuli wa kinadharia uliotolewa awali, faili ya ldaprootpasswd.ldif itaongeza ingizo kwenye saraka ya LDAP. Katika ingizo hilo, kila mstari unawakilisha sifa: jozi ya thamani (ambapo dn, changetype, add, na olcRootPW ni sifa na kamba za kulia kwa kila koloni ni maadili yao yanayolingana).

Huenda ukataka kukumbuka hili tunapoendelea zaidi, na tafadhali kumbuka kuwa tunatumia Majina yale yale ya Kawaida (cn=) katika sehemu iliyosalia ya makala haya, ambapo kila hatua inategemea iliyotangulia. .

5. Sasa, ongeza ingizo linalolingana la LDAP kwa kubainisha URI inayorejelea seva ya ldap, ambapo ni sehemu za itifaki/mwenyeji/mlango pekee ndizo zinazoruhusiwa.

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

Pato linapaswa kuwa sawa na:

na uingize baadhi ya ufafanuzi wa kimsingi wa LDAP kutoka /etc/openldap/schema saraka:

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

6. Fanya LDAP itumie kikoa chako kwenye hifadhidata yake.

Unda faili nyingine ya LDIF, ambayo tutaiita ldapdomain.ldif, pamoja na maudhui yafuatayo, ukibadilisha kikoa chako (katika Kipengele cha Kikoa dc=) na nenosiri inavyofaa:

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

Kisha pakia kama ifuatavyo:

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

7. Sasa ni wakati wa kuongeza baadhi ya maingizo kwenye orodha yetu ya LDAP. Sifa na thamani zinatenganishwa na koloni (:) katika faili ifuatayo, ambayo tutaipa jina 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

Ongeza maingizo kwenye saraka ya LDAP:

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

8. Unda mtumiaji wa LDAP anayeitwa ldapuser (adduser ldapuser), kisha unda ufafanuzi wa kikundi cha LDAP katika ldapgroup.ldif.

# adduser ldapuser
# vi ldapgroup.ldif

Ongeza maudhui yafuatayo.

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

ambapo gidNumber ndio GID ndani /etc/group kwa ldapuser) na upakie:

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

9. Ongeza faili ya LDIF yenye ufafanuzi wa ldapuser ya mtumiaji (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

na kuipakia:

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

Vivyo hivyo, unaweza kufuta ingizo la mtumiaji ambalo umeunda hivi punde:

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

10. Ruhusu mawasiliano kupitia ngome:

# firewall-cmd --add-service=ldap

11. Mwisho, lakini sio uchache, wezesha mteja kuthibitisha kwa kutumia LDAP.

Ili kutusaidia katika hatua hii ya mwisho, tutatumia matumizi ya authconfig (kiolesura cha kusanidi rasilimali za uthibitishaji wa mfumo).

Kwa kutumia amri ifuatayo, saraka ya nyumbani ya mtumiaji aliyeombwa inaundwa ikiwa haipo baada ya uthibitishaji dhidi ya seva ya LDAP kufanikiwa:

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

Muhtasari

Katika makala hii tumeelezea jinsi ya kusanidi uthibitishaji wa msingi dhidi ya seva ya LDAP. Ili kusanidi zaidi usanidi uliofafanuliwa katika mwongozo huu, tafadhali rejelea Sura ya 13 - Usanidi wa LDAP katika mwongozo wa msimamizi wa Mfumo wa RHEL 7, ukitoa kipaumbele maalum kwa mipangilio ya usalama kwa kutumia TLS.

Jisikie huru kuacha maswali yoyote ambayo unaweza kuwa nayo kwa kutumia fomu ya maoni hapa chini.