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


Aloitamme tämän artikkelin hahmottelemalla LDAP:n perusteita (mitä se on, missä sitä käytetään ja miksi) ja näytämme, kuinka LDAP-palvelin määritetään ja asiakas määritetään todentamaan sitä vastaan käyttämällä Red Hat Enterprise Linux 7 -järjestelmät.

Kuten näemme, on olemassa useita muita mahdollisia sovellusskenaarioita, mutta tässä oppaassa keskitymme täysin LDAP-pohjaiseen todentamiseen. Muista lisäksi, että aiheen laajuudesta johtuen käsittelemme tässä vain sen perusasiat, mutta voit katsoa tarkempia tietoja yhteenvedossa esitetystä dokumentaatiosta.

Samasta syystä huomaat, että olen päättänyt jättää useita viittauksia LDAP-työkalujen man-sivuihin lyhyyden vuoksi, mutta vastaavat selitykset ovat sormenpään päässä (man ldapadd, for esimerkki).

Se sanoi, aloitetaan.

Testausympäristömme

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ää kohdassa Osa 12: Automatisoi RHEL 7 -asennukset asennettua konetta Kickstartilla asiakkaana.

Mikä on LDAP?

LDAP on lyhenne sanoista Lightweight Directory Access Protocol, ja se koostuu protokollista, joiden avulla asiakas voi käyttää verkon kautta keskitetysti tallennettuja tietoja (kuten kirjautumiskuorihakemistoa). , absoluuttiset polut kotihakemistoihin ja esimerkiksi muut tyypilliset järjestelmän käyttäjätiedot), joiden pitäisi olla saatavilla eri paikoista tai useiden loppukäyttäjien saatavilla (toinen esimerkki olisi hakemisto kaikkien työntekijöiden kotiosoitteista ja puhelinnumeroista yritys).

Tällaisten (ja muiden) tietojen säilyttäminen keskitetysti mahdollistaa sen, että kaikki, joille on myönnetty käyttöoikeudet, ovat helpompia ylläpitää ja käyttää niitä.

Seuraava kaavio tarjoaa yksinkertaistetun LDAP:n kaavion, ja se kuvataan alla yksityiskohtaisemmin:

Yllä olevan kaavion yksityiskohtainen selitys.

  1. LDAP-hakemiston merkintä edustaa yhtä yksikköä tai tietoa, ja se tunnistetaan yksilöllisesti niin kutsutulla eronimellä.
  2. Attribuutti on merkintään liittyvä tieto (esimerkiksi osoitteet, käytettävissä olevat puhelinnumerot ja sähköpostiosoitteet).
  3. Jokaiselle attribuutille on määritetty yksi tai useampi arvo, joka koostuu välilyönneillä erotetusta luettelosta. Arvoa, joka on ainutlaatuinen merkintää kohti, kutsutaan suhteelliseksi erottuvaksi nimeksi.

Tästä huolimatta jatketaan palvelimen ja asiakkaan asentamista.

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

RHEL 7:ssä LDAP:n toteuttaa OpenLDAP. Asenna palvelin ja asiakas käyttämällä seuraavia komentoja:


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 tulee suorittaa yksin palvelimella, ellei toisin mainita:

1. Varmista, että SELinux ei ole tiellä ottamalla seuraavat loogiset funktiot käyttöön jatkuvasti sekä palvelimella että asiakkaalla:


setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Kun allow_ypbind vaaditaan LDAP-pohjaiseen todentamiseen, ja jotkin sovellukset saattavat 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 käytöstä, käynnistää uudelleen tai pysäyttää 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 komennolla ps -e -o pid,uname,comm | grep slapd >), tällaisen käyttäjän tulee omistaa /var/lib/ldap-hakemisto, jotta palvelin voi muokata hallintatyökaluilla luotuja merkintöjä, joita voidaan käyttää vain pääkäyttäjänä (lisätietoja tästä minuutti).

Ennen kuin muutat tämän hakemiston omistajuutta rekursiivisesti, kopioi siihen mallitietokannan slapd-määritystiedosto:


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), jossa on seuraava sisältö:


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

missä :

  1. SALASANA on aiemmin saatu tiivistetty merkkijono.
  2. cn=config tarkoittaa yleisiä määritysasetuksia.
  3. olcDatabase osoittaa tietyn tietokannan ilmentymän nimen, ja se löytyy yleensä osoitteesta /etc/openldap/slapd.d/cn=config.

Viitaten aiemmin annettuun teoreettiseen taustaan, ldaprootpasswd.ldif-tiedosto lisää merkinnän LDAP-hakemistoon. Tässä merkinnässä jokainen rivi edustaa attribuuttia: arvopari (jossa dn, changetype, add ja olcRootPW ovat attribuutteja ja kunkin kaksoispisteen oikealla puolella olevat merkkijonot ovat niitä vastaavia arvoja).

Sinun kannattaa pitää tämä mielessä, kun jatkamme eteenpäin, ja huomaa, että käytämme samoja yleisnimiä (cn=) koko tämän artikkelin ajan, jossa jokainen vaihe riippuu edellisestä. .

5. Lisää nyt vastaava LDAP-merkintä määrittämällä URI, joka viittaa ldap-palvelimeen, jossa vain protokolla-/isäntä-/porttikentät ovat sallittuja.


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

Tulosteen tulee olla samanlainen kuin:

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


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 jossa on seuraava sisältö, korvaamalla verkkotunnuksesi (Domain-komponentissa dc=) ja salasanasi tarpeen mukaan:


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 se sitten seuraavasti:


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

7. Nyt on aika lisätä merkintöjä LDAP-hakemistoomme. Attribuutit ja arvot erotetaan kaksoispisteellä (:) seuraavassa tiedostossa, jonka nimeksi tulee 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 määritelmät LDAP-ryhmälle osoitteessa 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/group-hakemiston 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 määritelmät (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

ja lataa se:


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

Samoin voit poistaa juuri luomasi käyttäjämerkinnän:


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 asiakkaalle mahdollisuus todentaa LDAP:n avulla.

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

Seuraavaa komentoa käyttämällä luodaan pyydetyn käyttäjän kotihakemisto, jos sitä ei ole olemassa sen jälkeen, kun todennus LDAP-palvelinta vastaan on onnistunut:


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

Yhteenveto

Tässä artikkelissa olemme selostaneet, kuinka perustodennus määritetään LDAP-palvelinta vastaan. Lisätietoja tässä oppaassa kuvattujen asetusten määrittämisestä on RHEL 7 -järjestelmänvalvojan oppaan luvussa 13 – LDAP-määritykset kiinnittäen erityistä huomiota TLS-suojausasetuksiin.

Voit vapaasti jättää kaikki kysymyksesi alla olevan kommenttilomakkeen avulla.