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.
- LDAP-hakemiston merkintä edustaa yhtä yksikköä tai tietoja, ja sen yksilöi yksilöllisesti nimeltään Distinguished Name.
- Attribuutti on tietoihin liittyvä tieto (esimerkiksi osoitteet, käytettävissä olevat puhelinnumerot ja sähköpostiosoitteet).
- 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ä:
- PASSWORD on aiemmin saatu hajautusmerkkijono.
- cn = config ilmaisee yleiset määritysvaihtoehdot.
- 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.