RHCSA-sarja: LDAP-pohjaisen todennuksen määrittäminen RHEL 7: ssä - osa 14


Aloitamme tämän artikkelin hahmotellen joitain LDAP-perusteita (mikä se on, missä sitä käytetään ja miksi) ja näytetään, kuinka LDAP-palvelin asetetaan ja asiakas määritetään todentamaan sitä vastaan Red Hat Enterprise Linux 7 -järjestelmillä.

Kuten näemme, on olemassa useita muita mahdollisia sovellusskenaarioita, mutta tässä oppaassa keskitymme kokonaan LDAP-pohjaiseen todennukseen. Lisäksi pidä mielessä, että aiheen laajuuden vuoksi käsittelemme vain sen perusasiat täällä, mutta voit tutustua yksityiskohtaisempiin yksityiskohtiin yhteenvedon hahmoteltuihin asiakirjoihin.

Samasta syystä huomaat, että olen päättänyt jättää useita viittauksia LDAP-työkalujen man-sivuihin lyhyyyden vuoksi, mutta vastaavat selitykset ovat sormenpäiden etäisyydellä (esimerkiksi man ldapadd).

Aloitetaan.

Testiympäristömme koostuu kahdesta RHEL 7 -laatikosta:

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

Halutessasi voit käyttää osaan 12 asennettua laitetta: Automatisoi RHEL 7 -asennukset käyttämällä Kickstartia asiakkaana.

LDAP tarkoittaa kevyttä hakemistoprotokollaa ja koostuu joukosta protokollia, jotka antavat asiakkaalle pääsyn verkon kautta keskitetysti tallennettuihin tietoihin (kuten kirjautumislomakkeiden hakemisto, kotihakemistojen absoluuttiset polut ja muut tyypilliset järjestelmän käyttäjätiedot). esimerkiksi), jonka pitäisi olla käytettävissä eri paikoista tai suuren määrän loppukäyttäjien käytettävissä (toinen esimerkki olisi hakemisto yrityksen kaikkien työntekijöiden kotiosoitteista ja puhelinnumeroista).

Tällaisen (ja muun) tiedon pitäminen keskitetysti tarkoittaa, että kaikki, joille on annettu lupa käyttää sitä, voivat ylläpitää ja käyttää sitä helpommin.

Seuraava kaavio tarjoaa yksinkertaistetun kaavion LDAP: stä, ja sitä kuvataan jäljempänä yksityiskohtaisemmin:

Yllä olevan kaavion selitys yksityiskohtaisesti.

  1. LDAP-hakemiston merkintä edustaa yhtä yksikköä tai tietoja, ja sen yksilöi yksilöllisesti nimeltään Distinguished Name.
  2. Attribuutti on tietoihin liittyvä tieto (esimerkiksi osoitteet, käytettävissä olevat puhelinnumerot ja sähköpostiosoitteet).
  3. Jokaiselle määritteelle on annettu yksi tai useampi arvo, joka koostuu välilyönnillä erotetusta luettelosta. Arvoa, joka on yksilöllinen merkintää kohden, kutsutaan suhteelliseksi erottuvaksi nimeksi.

Siitä huolimatta jatketaan palvelimen ja asiakasasennusten kanssa.

LDAP-palvelimen ja -asiakkaan asentaminen ja määrittäminen

RHEL 7: ssä LDAP: n toteuttaa OpenLDAP. Asenna palvelin ja asiakas seuraavilla komennoilla:

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

Kun asennus on valmis, tarkastelemme joitain asioita. Seuraavat vaiheet tulisi suorittaa pelkästään palvelimella, ellei nimenomaisesti mainita:

1. Varmista, että SELinux ei estä ottamalla seuraavat booleanit käyttöön jatkuvasti sekä palvelimella että asiakkaalla:

# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Kun LDAP-pohjaiseen todennukseen vaaditaan allow_ypbind, ja joillekin sovelluksille voidaan tarvita authlogin_nsswitch_use_ldap.

2. Ota palvelu käyttöön ja käynnistä se:

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

Muista, että voit myös poistaa palvelun käytöstä, käynnistää sen uudelleen tai lopettaa palvelun myös systemctl: llä:

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

3. Koska slapd-palvelu toimii ldap-käyttäjänä (jonka voit vahvistaa ps-e -o pid, uname, comm | grep slapd), tällaisen käyttäjän tulisi omistaa hakemisto/var/lib/ldap, jotta palvelin voi osaa muokata hallintatyökalujen luomia merkintöjä, jotka voidaan suorittaa vain pääkäyttäjänä (lisää tästä minuutissa).

Ennen kuin muutat tämän hakemiston rekursiivisesti, kopioi slapd-mallin tietokannan kokoonpanotiedosto siihen:

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

4. Määritä OpenLDAP-järjestelmänvalvojan käyttäjä ja määritä salasana:

# slappasswd

kuten seuraavassa kuvassa näkyy:

ja luo LDIF-tiedosto (ldaprootpasswd.ldif), jolla on seuraava sisältö:

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

missä:

  1. PASSWORD on aiemmin saatu hajautusmerkkijono.
  2. cn = config ilmaisee yleiset määritysvaihtoehdot.
  3. olcDatabase ilmaisee tietyn tietokannan ilmentymän nimen, ja se löytyy yleensä /etc/openldap/slapd.d/cn=config -osiosta.

Aikaisemmin annettuun teoreettiseen taustaan viitaten tiedosto ldaprootpasswd.ldif lisää merkinnän LDAP-hakemistoon. Kyseisessä merkinnässä kukin rivi edustaa attribuuttia: arvopari (missä dn, muutostyyppi, lisäys ja olcRootPW ovat määritteitä ja kunkin kaksoispisteen oikealla puolella olevat merkkijonot vastaavat arvoja).

Haluat ehkä pitää tämän mielessä jatkaessamme ja huomaa, että käytämme samoja yleisiä nimiä (cn =) koko artikkelissa, jossa jokainen vaihe riippuu edellisestä .

5. Lisää nyt vastaava LDAP-merkintä määrittelemällä UAP, joka viittaa ldap-palvelimeen, jossa vain protokolla/isäntä/portti-kentät ovat sallittuja.

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

Tuloksen tulisi olla samanlainen kuin:

ja tuo joitain LDAP-perusmäärityksiä hakemistosta /etc/openldap/schema :

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

6. Pyydä LDAP: tä käyttämään verkkotunnustasi tietokannassaan.

Luo toinen LDIF-tiedosto, jota kutsutaan nimellä ldapdomain.ldif , ja jonka sisältö on seuraava ja korvaa toimialueesi (verkkotunnuskomponentissa dc =) ja salasana tarvittaessa:

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

Lataa sitten se seuraavasti:

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

7. Nyt on aika lisätä joitain merkintöjä LDAP-hakemistoon. Määritteet ja arvot erotetaan kaksoispisteellä (:) seuraavassa tiedostossa, jonka nimeämme 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

Lisää merkinnät LDAP-hakemistoon:

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

8. Luo LDAP-käyttäjä nimeltä ldapuser (adduser ldapuser) ja luo sitten LDAP-ryhmän määritelmät kohtaan ldapgroup.ldif .

# adduser ldapuser
# vi ldapgroup.ldif

Lisää seuraava sisältö.

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

missä gidNumber on ldapuserin/etc/groupin GID) ja lataa se:

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

9. Lisää LDIF-tiedosto, jossa on käyttäjän ldapuser ( ldapuser.ldif ) -määritykset:

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

ja lataa se:

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

Samoin voit poistaa juuri luomasi käyttäjätunnuksen:

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

10. Salli viestintä palomuurin kautta:

# firewall-cmd --add-service=ldap

11. Viimeisenä, mutta ei vähäisimpänä, anna asiakkaan todentaa LDAP: n avulla.

Autamme meitä tässä viimeisessä vaiheessa käytämme authconfig-apuohjelmaa (käyttöliittymä järjestelmän todennusresurssien määrittämiseen).

Seuraavan komennon avulla pyydetyn käyttäjän kotihakemisto luodaan, jos sitä ei ole olemassa LDAP-palvelimen todentamisen onnistumisen jälkeen:

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

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka perustodennus todennetaan LDAP-palvelinta vastaan. Tässä oppaassa kuvattujen asetusten määrittelyä varten, katso RHEL 7 -järjestelmänvalvojan oppaan luku 13 - LDAP-määritykset kiinnittäen erityistä huomiota TLS: ää käyttäviin suojausasetuksiin.

Voit vapaasti jättää kysymyksiäsi käyttämällä alla olevaa kommenttilomaketta.