Központilag történő hitelesítés az OpenLDAP használatával

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Centralized authentication using OpenLDAP and the translation is 100% complete.
The information in this article is probably outdated. You can help the Gentoo community by verifying and updating this article.

Ez az útmutató bemutatja az LDAP alapjait, és megmutatja az olvasóknak, hogy miként kell beállítani az OpenLDAP-ot a számítógépek csoportja közötti hitelesítés céljából.

Warning
Az aktuális állapot nem eredményez működő beállítást. A részletekért tekintse meg a Talk:Centralized_authentication_using_OpenLDAP megbeszélést. A munka folyamatban van.

Az OpenLDAP használatának megkezdése

Mi az LDAP?

Az LDAP (Lightweight Directory Access Protocol) jelentése: könnyűsúlyú könyvtári hozzáférési protokoll. Az X.500 alapján az elsődleges funkcióinak nagy részét magában foglalja, de hiányzik az ezoterikus funkciók, amelyek az X.500 -at tartalmazzák. Most akkor mi ez az X.500, és miért létezik az LDAP?

Az X.500 egy modell az OSI koncepciójában létező könyvtári szolgáltatások (Directory Services) számára. Névtér-definíciókat, valamint a könyvtár lekérdezéséhez, és frissítéséhez szükséges protokollokat tartalmazza. Az x.500 modell sok esetben túlzásnak bizonyult. Az LDAP az X.500 modellhez hasonlóan adat/névtér-modellt biztosít a könyvtárhoz és egy protokollhoz. Az LDAP modellt azonban úgy tervezték, hogy az közvetlenül a TCP/IP stack-en keresztül fusson. Tekintsen az LDAP modellre úgy mint ha az az X.500 modell egy karcsúbb, könnyebben használhatóbb verziója lenne.

Mi a könyvtár?

A könyvtár egy specializált adatbázis, amit gyakori lekérdezésekhez, de ritka frissítésekhez terveztek. Az általános adatbázisoktól eltérően a könyvtárnak nincs tranzakciós támogatása, és nincs visszavonható funkciója sem. A könyvtárak könnyen replikálhatóak a rendelkezésre állás és a megbízhatóság növelése érdekében. Amikor a könyvtárakat replikálják, akkor az ideiglenes inkonzisztenciák megengedettek, amíg végül szinkronizálódnak.

Hogyan épül fel az információ?

A könyvtáron belüli összes információ hierarchikusan van felépítve. Még ennél is hierarchikusabb az adatok beírása a könyvtárba. A könyvtárnak tudnia kell, hogyan kell ezeket az adatokat egy fában tárolnia. Vessen egy pillantást egy kitalált cégre és egy internet-szerű fára:

CODE A GenFic szerveződési struktúrája. Ez most csak egy képzeletbeli Gentoo közösség a példa kedvéért.
dc:         org
             |
dc:        genfic         ## (Szervezet, "Organisation")
          /      \
ou:   People   servers    ## (Szervezeti egységek, "Organisational Units")
      /    \     ..
uid: ..   John            ## (OU-specifikus adat, "OU-specific data")

Mivel az adatokat nem a példában látott ASCII-rajz szerűen adják be az adatbázisba, ezért egy ilyen képzeletbeli fát, húgy építenek el, hogy minden csomópontját meghatározzák a valóságban. A képzeletbeli fa csomópontjainak a megnevezéséhez az LDAP egy előre meghatározott elnevezési sémát használ. A legtöbb LDAP-disztribúció (beleértve az OpenLDAP-ot is) már sok előre meghatározott (és általános jóváhagyott) sémát tartalmaz, úgy mint például az inetOrgPerson, vagy egy gyakran használt sémát a felhasználók meghatározására, amelyeket az UNIX/Linux számítógépek használhatnak, amelyeket posixAccount néven említenek. Megjegyzés: Vannak grafikus felhasználói felülettel (GUI-val) rendelkező web alapú eszközök is az LDAP könnyebb kezelése érdekében: Tekintse meg a Munka az OpenLDAP-al című leírást a nem teljes értékű lista tanulmányozásának az érdekében.

Az érdeklődő felhasználókat arra ösztönözzük, hogy olvassák el az OpenLDAP rendszergazdai útmutatóját.

Mire használható?

Az LDAP különféle dolgokhoz használható. Ez a dokumentum a központosított felhasználói menedzsmentre összpontosít, és az összes felhasználói fiókot egyetlen LDAP helyen tartja (ami nem azt jelenti, hogy egyetlen szerveren helyezkedik el, az LDAP támogatja a magas rendelkezésre állást és a redundanciát), mégis más célokat lehet elérni az LDAP segítségével is.

  • Nyilvános kulcsú infrastruktúra.
  • Megosztott naptár.
  • Megosztott címjegyzék.
  • Tárhely a DHCP, DNS, stb. számára.
  • Rendszerosztályú beállításdirektívák (több szerverbeállítás nyomon követése).
  • Központi hitelesítés (PosixAccount).
  • Stb...

Az OpenLDAP szerver beállítása

Közös megjegyzések

A genfic.org nevű domén egy példa ebben az útmutatóban. A domént az olvasók számára át lehet átnevezni. Győződjön meg arról, hogy a felső csomópont egy hivatalos legfelső szintű tartománynéz (.net, .com, .cc, .be, stb.). Mivel az LDAP nem biztosít titkosítást az adat transzfer során, ezért szükségesek a TLS szerver-tanúsítványok létrehozása. Általános gyakorlat, hogy összekapcsoljuk a DNS szervert, a CN tanúsítványt, és az LDAP CN-t. Ebben a példában a szerver az ldap.genfic.org doménen lesz elérhető, kizárólag az ldaps:// (protokoll) által. A szerver tanúsítvány pontosan erre a gazdagépre lesz vonatkoztatva, tehát CN=ldap.genfic.org. A TLS-hez tekintse meg a Tanúsítványokat és a Certificates/Become your own CA leírást.

USE flags for net-nds/openldap LDAP suite of application and development tools

+cleartext Enable use of cleartext passwords
+syslog Enable support for syslog
argon2 Enable password hashing algorithm from app-crypt/argon2
autoca Automatic Certificate Authority overlay
crypt Add support for encryption -- using mcrypt or gpg where applicable
cxx Build support for C++ (bindings, extra libraries, code generation, ...)
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
experimental Enable experimental backend options
gnutls Prefer net-libs/gnutls as SSL/TLS provider (ineffective with USE=-ssl)
iodbc Add support for iODBC library
ipv6 Add support for IP version 6
kerberos Add kerberos support
kinit Enable support for kerberos init
minimal Build libraries & userspace tools only. Does not install any server code
odbc Enable ODBC and SQL backend options
overlays Enable contributed OpenLDAP overlays
pbkdf2 Enable support for pbkdf2 passwords
perl Add optional support/bindings for the Perl language
samba Add support for SAMBA (Windows File and Printer sharing)
sasl Add support for the Simple Authentication and Security Layer
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
sha2 Enable support for pw-sha2 password hashes
smbkrb5passwd Enable overlay for syncing ldap, unix and lanman passwords
ssl Add support for SSL/TLS connections (Secure Socket Layer / Transport Layer Security)
static-libs Build static versions of dynamic libraries as well
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking
tcpd Add support for TCP wrappers
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
verify-sig Verify upstream signatures on distfiles

Először hozzuk létre, majd telepítsük az emerge parancs segítségével az OpenLDAP programcsomagot. Tehát győződjünk meg az USE jelölőzászlók állapotáról, syslog beállítása, valamint a -minimal beállítása (mínusz előjellel, tehát kikapcsolva). Majd jöhet a telepítés:

root #emerge --ask net-nds/openldap

Az OpenLDAP két hitelesítési mechanizmust támogat:

  1. Standard felhasználói-jelszó (LDAP kifejezések szerint az user az binddn-t jelent) SIMPLE-nek nevezve.
  2. A hitelesítési kérések proxy-n keresztül az SASL-nek (Simple Authentication and Security Layer, tekintse meg a RFC4422 leírást).

Noha az OpenLDAP alapértelmezetten a SASL használatára van beállítva, ennek a cikknek a kezdeti verziója csak jelszó-alapú hitelesítést használt. Az OLC kiegészítőnek a használatától már ez a cikk elkezd a legegyszerűbb SASL mechanizmusról beszélni, amit EXTERNAL -nak nevez, amely a rendszer hitelesítésére támaszkodik. Ez csak a gazdagépre korlátozódik, amelyen a fut a szerver.

Az OpenLDAP-nak van egy fő felhasználója, a "rootdn" (Root Distinguished Name), amelyet az bele van "hardkódolva" az alkalmazásba. A klasszikus Unix root felhasználóval ellentétben a rootdn felhasználónak továbbra is a megfelelő jogosultságokkal kell rendelnie. A rootdn felhasználó csak a beállítás összefüggésében használható, és a könyvtárhoz tartozó definíciókban használható. Ebben az esetben a felhasználó hitelesítheti magát a rootdn felhasználóként, akár a beállítással használt jelszóval, akár a fa (könyvtár-alapú) jelszavával.

A felhasználói jelszavak (függetlenül attól, hogy rootdn vagy más felhasználók) ellenőrzési célokra egyszerű szöveges formában vagy hash formában is tárolhatók. Több különböző hash algoritmus áll rendelkezésre, de a gyenge algoritmusok (például az MD5) használata nem ajánlott. Az SHA titkosítást a cikk írásának pillanatában kriptográfiailag biztonságosnak tekintik.

Az alábbi paranccsal egy hash értéket hoz létre egy adott jelszóhoz. Ennek a parancsnak az eredménye használható a slapd.conf beállításfájlban, illetve ugyan ez a hash érték a felhasználóhoz tartozó belső könyvtár meghatározásához is felhasználható:

root #slappasswd
New password: my-password
Re-enter new password: my-password
{SSHA}EzP6I82DZRnW+ou6lyiXHGxSpSOw2XO4

A régmúltban alkalmazott beállítási eljárás (flat slapd.conf beállításfájl)

Warning
2021-től kezdve nem használják ezt a módszert. Ne használja ön se ezt a módszert! Az se nem jó megoldás, hogy ha az OpenLDAP eszközökkel átalakítja az LDIF-et. Nem megfelelően fog átfordulni.

Most szerkessze az LDAP szerver beállítását az /etc/openldap/slapd.conf fájlban. A bemutatott slapd.conf fájl az eredeti OpenLDAP forrásból származik. Az alábbiakban egy minta beállításfájl látható, ami használható a dolgok elindításához.

FILE /etc/openldap/slapd.conf
include	/etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include	/etc/openldap/schema/misc.schema
 
pidfile  /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
 
## ## ServerID used in case of replication
serverID 0 
loglevel 0
 
## ## Certificate/SSL Section
TLSCipherSuite normal
TLSCACertificateFile /etc/openldap/ssl/ldap.crt
TLSCertificateFile /etc/openldap/ssl/ldap.pem
TLSCertificateKeyFile /etc/openldap/ssl/ldap.key
TLSVerifyClient never
 
## ## Access Controls
access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
access to *
  by self write
  by users read
  by anonymous read
 
## ## Database definition
database mdb
suffix "dc=genfic,dc=org"
checkpoint 32 30
maxsize 10485760
#Note: It is important to set this to as large a value as possible,
#(relative to anticipated growth of the actual data over time)
#since growing the size later may not be practical when the system is under heavy load.
 
rootdn "cn=Manager,dc=genfic,dc=org"
## ## rootpwd generated earlier via slappasswd command
rootpw "{SSHA}EzP6I82DZRnW+ou6lyiXHGxSpSOw2XO4" 
directory "/var/lib/openldap-data"
index objectClass eq
 
## ## Synchronisation (pull from other LDAP server)
syncrepl rid=001
  provider=ldap://ldap2.genfic.org
  type=refreshAndPersist
  retry="5 5 300 +"
  searchbase="dc=genfic,dc=org"
  attrs="*,+"
  bindmethod="simple"
  binddn="cn=ldapreader,dc=genfic,dc=org"
  credentials="ldapsyncpass"
 
index entryCSN eq
index entryUUID eq
 
mirrormode TRUE
 
overlay syncprov
syncprov-checkpoint 100 10
Note
Ne feledje el hogy, a második csomópontnak a rid másmilyen értékét kell használnia, és a megfelelő címet kell használni az ldapuri szolgáltatóban.

A beállításfájl részletesebb elemzéséhez tekintse meg az OpenLDAP rendszergazdáknak szánt útmutatóját az upstream projekt dokumentációs oldalán, bár elég lehet az man 5 slapd.conf elolvasása is.

Ha nem indul el, akkor az első lépés a beállításfájl ellenőrzése:

user $slaptest -v -d 1 -f /etc/openldap/slapd.conf

Változtassa meg a hibakeresési szintet további információkért (fent a -d 1 jelöli). Ha minden jól megy, akkor megjelenik a beállításfájl tesztelése sikeres. Ha hiba van, akkor a slaptest felsorolja a slapd.conf fájlban lévő hibás sornak a sorszámát.

Alapértelmezés szerint a slapd a local4 rendszernaplóhoz írja a naplóeseményeket.

Warning
Vegye figyelembe, hogy a 2.4.23-as verzió óta az OpenLDAP alapértelmezése végül a hagyományos egyszerű beállításfájlokról (slapd.conf) az OLC -re (OnLineConfiguration, a cn=config szerkezetén keresztül is ismert) alapértelmezésre váltott. Az OLC használatának egyik előnye, hogy a dinamikus backend (cn=config) nem igényli a szerver újraindítását a beállítás frissítése után. A meglévő felhasználók áttérhetnek az új beállításmódszerre, ha meghívják a slaptest parancsot a -f és a -F beállított opcióival. Hagyományosan az OLC-t az ldif backend-ben (amelyek az emberi olvashatóság előnyeit megtartják) az /etc/openldap/slapd.d könyvtárban tárolják. A Gentoo-ban még nem kell konvertálni a beállítást, de a jelenleg dokumentált megközelítés támogatása a jövőben el lesz távolítva.

Migráció a slapd.conf használatáról az OLC formátum használatára

Warning
A következő szakasz teljesen használhatatlan, és hamarosan javulni fog. A következő szakasz helyett kövesse a tisztességes alapvető LDIF-alapú beállítási útmutatót. Az olcGlobal beállítást objectClass: moduleList, back_mdb.so vagy back_bdb.la, az USE objectClass beállítástól függően: olcSchemaConfig, nis.ldif és az ilyen fához tartozó adatbázis beállításától függően, beleértve olvasói szerep, a névtelen olvasmányok megtagadása és így tovább, létrehoz egy alap DN/ objectclass=organization-et, olyan eszközök nélkül, mint például a phpldapadmin, egyáltalán nem fog működni a beállítási szervezeteknél, hogy tovább csoportosítsák az objectClass -ot, észszerű szubstruktúrát, a csoportos importálást releváns Gentoo csoportokkal, pl. A wheel, audio, usb, asztali felhasználók meglehetősen korlátozottak lesznek egy eszközhasználat, akár csak ideiglenesen, hogy még egy vagy két felhasználót hozzanak létre.

Az OpenLDAP szerver beállításának megváltoztatásához legalább write (vagy normál esetben manage) hozzáférést kell megadni a cn=config-hoz.

Az alábbi példa bemutatja, hogyan adhatunk felügyeleti hozzáférést az OLC-hoz (cn=config adatbázis) a rendszer-adminisztrátoroknak (root felhasználónak) a megfelelő sorok hozzáadásával a slapd.conf fájl végéhez:

FILE /etc/openldap/slapd.confGranting root Linux account manage rights to cn=config
database config
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none

Ezután hajtsa végre a slaptest segédprogramot a -f és a -F opciókkal, hogy átalakítsa a slapd.conf fájlt beállításkönyvtárrá (slapd.d).

root #mkdir /etc/openldap/slapd.d
root #slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
root #chown -R ldap /etc/openldap/slapd.d

Ezen parancs futtatása átviszi és lefordítja a beállítást. Ezt követően arra van szükség, hogy a beállítást speciálisan előkészített ldif fájlok segítségével frissítse. Csak akkor, ha nem eléggé ismerős ezekkel, először szerkesztheti a slapd.conf fájlt, majd ezt követően újra lefordíthatja a slapd.conf fájlt a slapd.d/ könyvtárba. Ne feledje ellenőrizni a könyvtár jogosultságait.

További utasításokért olvassa el a generált fájlok soron belüli megjegyzéseit.

Az alábbi sor engedélyezi a slapd.d/ beállításmódszert.

FILE /etc/conf.d/slapd
OPTS="-F /etc/openldap/slapd.d -h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"

Végül hozza létre a /var/lib/openldap-data struktúrát:

root #mkdir -p /var/lib/openldap-data
root #chown -R ldap:ldap /var/lib/openldap-data
root #chmod -R 0700 /var/lib/openldap-data

Kezdeti beállítás az OLC segítségével

Egy kezdeti beállítás szabványos LDAP adatbázis-dumpként kerül szállításra, amely slapd.ldif vagy config.ldif néven érhető el.

Warning
Ahhoz, hogy további sémafájlokat tartalmazzon, a flat sémafájlokat ldif formátumra kell konvertálni. Az egyedi séma szintén ldif formátumra kell, hogy átalakításra kerüljön. További részletekért tekintse meg az openldap.ldif fájlt.
Warning
A fentebb biztosított fájl jelenleg nincs módosítva a Gentoo telepítési folyamat által. Valószínűleg módosítania kell. Ez akkor fordulhat elő, ha olyan hibaüzenetet kap, mint például str2ad(olcDbIndex): attribute type undefined, ami valószínűleg abból adódik, hogy a háttérmodul nincs betöltve, vagy ha a slapd nem hajlandó elindulni a pid fájl miatt.
FILE /etc/openldap/slapd.ldifUpdating run files directory
olcArgsFile: /run/openldap/slapd.args
olcPidFile: /run/openldap/slapd.pid
FILE /etc/openldap/slapd.ldifA megfelelő modul betöltése
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib64/openldap/openldap
olcModuleload: back_mdb.so

Ez a kezdeti beállítás betölthető (és kizárólag betölthető, eltérően a szokásos LDAP adatbázisoktól) a slapadd segédprogram segítségével:

root #slapadd -d -1 -F /etc/openldap/slapd.d -n 0 -l /etc/openldap/config.ldif

Amikor root fiókot használ, győződjön meg arról, hogy kijavítja a root által létrehozott fájlok tulajdonjogát, ahogyan azt az alábbi migrációs szakasz leírja.

Warning
Az alapértelmezett beállítás nem biztosít engedélyeket senkinek a szerver beállításának a módosítására.

A beállítási adatbázis módosításához megfelelő jogosultságokat kell biztosítani. Az alábbi példa bemutatja, hogyan kapja meg ezeket a privilégiumokat a root rendszerfelhasználó:

FILE config-access.ldif
# {0}config, config
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage  by * none
olcAddContentAcl: TRUE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=config
olcSyncUseSubentry: FALSE
olcMonitoring: FALSE

A további részletekért tekintse meg a man 5 slapd-config súgót.

Warning
Ezt az adatbázisbeállítást a dn: olcDatabase=frontend,cn=config és a dn: olcDatabase=mdb,cn=config közé kell hozzáadni, mert minden rész megköveteli az előző meglétét, és alapértelmezettet hoz létre, ha nincs.

Amikor OLC-t használ, soha ne szerkessze manuálisan a beállításfájlokat. A könyvtári fájlok a beállítás konzisztenciájának ellenőrzésére használhatók a következőkkel:

root #slaptest -v -d 1 -F /etc/openldap/slapd.d

A könyvtár karbantartása

Indítsa el a slapd programot most, miután a beállítási lépések befejeződtek:

root #service slapd start

A legtöbb felhasználó azt is szeretné, ha az OpenLDAP szolgáltatás automatikusan elindulna:

root #rc-update add slapd

most már lehetséges a címtárszerver használata a felhasználók hitelesítésére az apache/proftpd/qmail/samba fájlban.

A könyvtárszerver az alábbi eszközökkel kezelhető: net-nds/phpldapadmin, app-admin/diradm és net-nds/jxplorer a Gentoo ebuild szoftvertárolóból, vagy app-misc/ldapexplorertool a poly-c overlay-ből, amely elérhető a eselect repository segítségével.

Szerverkezelés az OLC segítségével.

Note
Az OLC-stílusú beállítás egyik előnye, hogy az LDAP szerver nem igényel újraindítást a beállítási változtatások alkalmazásához.

Az OLC-stílusú beállítás frissítésének néhány példája az alábbiakban kerül ismertetésre.

Például az OLC beállításkönyvtár helyének módosításához (szükséges a beállításfájlról beállításkönyvtár stílusra való váltás után):

FILE fix-configs.ldif
dn: cn=config
changetype: modify
delete: olcConfigFile
dn: cn=config
changetype: modify
replace: olcConfigDir
olcConfigDir: /etc/openldap/slapd.d

Az OpenLDAP példány által használt naplózási szint módosításához:

FILE loglevel.ldif
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats stats2 sync

A változtatások alkalmazásához futtassa a következő parancsot:

root #ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
Warning
Újraindításkor az init script ellenőrzi a frissített beállítást. Az előzőleg használt ldapmodify parancs csak a végzetes hibákat blokkolja. Az OLC segítségével információt szerezhet a nem végzetes hibákról:
root #slaptest -F /etc/openldap/slapd.d
58b7d4c2 olcThreads: value #0: warning, threads=64 larger than twice the default (2*16=32); YMMV.
config file testing succeeded

OpenLDAP naplózása

Az OpenLDAP számos naplóeseményt hoz létre, amelyek értelmezése nem feltétlenül egyértelmű, de a hibakereséshez szükségesek.

Mivel az OpenLDAP alapértelmezés szerint a naplóeseményeket a rendszernaplóba írja, ezért célszerű a rendszernaplózót újra beállítani, hogy az OpenLDAP naplóeseményeket egy dedikált naplófájlba irányítsa bele.

Ajánlott a stats stats2 naplózási szint használata az OpenLDAP önálló szerverén és a stats stats2 sync használata az OpenLDAP klaszterben. Ebben az esetben a lekérdezési eredmények naplózzák a munkamenethez kapcsolódó információkat, például a következőket:

root #grep conn=1 /var/log/slapd.log
Mar  9 12:26:47 ldap1 slapd[95182]: conn=1 fd=14 ACCEPT from IP=192.168.100.9:55655 (IP=192.168.1.1:389)
Mar  9 12:26:47 ldap1 slapd[95182]: conn=1 op=0 BIND dn="" method=128
Mar  9 12:26:47 ldap1 slapd[95182]: conn=1 op=0 RESULT tag=97 err=0 text=
Mar  9 12:26:47 ldap1 slapd[95182]: conn=1 op=1 SRCH base="ou=People,dc=genfic,dc=org" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uidNumber=1001))"
Mar  9 12:26:47 ldap1 slapd[95182]: conn=1 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass shadowLastChange shadowMax shadowExpire
Mar  9 12:26:47 ldap1 slapd[95182]: conn=1 op=1 ENTRY dn="uid=larry,ou=People,dc=genfic,dc=org"
Mar  9 12:26:47 ldap1 slapd[95182]: conn=1 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=

A szervernaplóban a err=49 hibák a leggyakoribbak:

FILE /var/log/slapd.log
Aug 10 12:47:27 ldap-2 slapd[32920]: conn=1004 op=0 RESULT tag=97 err=49 text=

Ami azt jelenti, hogy «érvénytelenek a hitelesítő adatok» (azaz rossz a jelszó).

Valamint a err=32 hiba:

FILE /var/log/slapd.log
Aug 10 14:15:35 ldap-2 slapd[32966]: conn=1085 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text=

Ami azt jelenti, hogy «Nincs ilyen objektum». Általában ez a hiba akkor jelenik meg, ha a binddn (felhasználó) nem rendelkezik jogosultságokkal a kért objektumhoz. Tehát vagy megpróbált valamit rosszul csinálni, vagy hiba van a beállított ACL-ben.

Access management (ACL-ek)

Az OpenLDAP-ban használt jogosultságokat és hozzáférés-vezérlési mechanizmusokat a slapd.access kézikönyv ismerteti. Alapszintaxisa a következő:

CODE ACL syntax in OpenLDAP
access to <what> [ by <who> [ <access> ] [ <control> ] ]+

Az alábbi táblázat az OpenLDAP-ban lévő hozzáférési szinteket mutatja:

Access level Privileges Description
none 0 no access
disclose d needed for information disclosure on error
auth dx needed to authenticate (bind)
compare cdx needed to compare
search scdx needed to apply search filters
read rscdx needed to read search results
write wrscdx needed to modify/rename
manage mwrscdx needed to manage

A jogosultságok beállításaival kapcsolatos pontos részletekért tekintse meg a kézikönyvet és a hivatalos OpenLDAP dokumentációt.

Warning
Ne feledje, hogy a rootdn felhasználó mindent tud olvasni és írni.

Beállításfájl

Az ACL-eket a beállításban beállított sorrendben dolgozzák fel, és a specifikusság alapján alkalmazzák (ami azt jelenti, hogy amikor egy ACL-szabály érvényesül, a fennmaradó ACL-szabályokat már nem ellenőrzik). Ezért a pontosabb meghatározásokat előre kell helyezni, mielőtt az általánosabbak következnének. További információért tekintse meg a Access Control Evaluation oldalt.

Például:

FILE /etc/openldap/slapd.conf
…
access to attrs=userPassword
         by dn="cn=ldapreader,dc=genfic,dc=org" read
         by self read
         by anonymous auth
         by * none
  
access to dn.base="cn=Subschema" by users read
access to dn.base="" by * read
…


Beállításkönyvtár

Az ACL-eket a beállításban beállított sorrendben dolgozzák fel, és a specifikusság alapján alkalmazzák (ami azt jelenti, hogy amikor egy ACL-szabály érvényesül, a fennmaradó ACL-szabályokat már nem ellenőrzik). Ezért a pontosabb meghatározásokat előre kell helyezni, mielőtt az általánosabbak következnének. OLC használata esetén ezt a sorrendet az olcAccess irányelvek kezelik.

Például:

FILE add_acl.ldif
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to dn.base="cn=subschema" by users read
olcAccess: {1}to dn.base="" by * read

Az alábbi példa egy új ACL-t illeszt be az elejére, amely miatt a meglévő olcAccess bejegyzések eggyel eltolódnak:

FILE insert_acl.ldif
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword
  by dn="cn=ldapreader,dc=genfic,dc=org" read
  by self read
  by anonymous auth
  by * none

Az ACL törléséhez:

FILE delete_acl.ldif
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
delete: olcAccess
olcAccess: {1}

Replikáció

Magas rendelkezésre állás

Az OpenLDAP általános magas rendelkezésre állású beállítása a változtatások replikációja több LDAP rendszeren keresztül.

Az OpenLDAP replikáció ebben az útmutatóban egy specifikus replikációs fiókkal ( ldapreader ) van beállítva, amely rendelkezik olvasási jogokkal az elsődleges LDAP szerveren, és amely áthúzza az elsődleges LDAP szerver változásait a másodlagos szerverre.

Ez a beállítás tükrözött módon működik, lehetővé téve, hogy a másodlagos LDAP szerver elsődlegesként működjön. Az OpenLDAP belső struktúrájának köszönhetően a változtatások nem kerülnek ismételten alkalmazásra, ha már léteznek az LDAP struktúrában.

Warning
Az OpenLDAP klaszter upstream normál működéséhez ugyanazt a verziót ajánlja minden csomóponton.

Replikáció beállítása

A replikáció beállításához először állítson be egy második OpenLDAP szervert, hasonlóan az előzőekhez. Azonban ügyeljen arra, hogy a konfigurációs fájlban:

  • A sync replication provider beállítása során ügyeljen arra, hogy az a másik rendszerre mutasson.
  • A serverID értéke minden OpenLDAP rendszer esetében különböző legyen.
Note
Egy tükrözött telepítés használata azt jelenti, hogy az OpenLDAP szolgáltatást úgy kell konfigurálni, mint egyetlen szerver telepítést, így a serverID értékének az egyes csomópontokon azonosnak kell lennie. Az egyes példányokat rid értékek azonosítják, amelyeknek egyedinek kell lenniük.
Szinkronizációs fiók

Ezután hozzák létre a szinkronizációs fiókot. Készíteni fogunk egy LDIF fájlt (az LDAP szerverek számára adatbevitelként használt formátum), és hozzáadjuk azt minden LDAP szerverhez:

user $slappasswd -s myreaderpassword
 {SSHA}XvbdAv6rdskp9HgFaFL9YhGkJH3HSkiM
FILE ldapreader.ldif
dn: cn=ldapreader,dc=genfic,dc=org
userPassword: {SSHA}XvbdAv6rdskp9HgFaFL9YhGkJH3HSkiM
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: ldapreader
description: LDAP reader used for synchronization
user $ldapadd -x -W -D "cn=Manager,dc=genfic,dc=org" -f ldapreader.ldif
Password: ## enter the administrative password
Syncprov overlay engedélyezése

Az overlay statikusan és dinamikusan is kapcsolható. Dinamikus építés esetén modul betöltése szükséges. Jelenleg a Gentoo rendszerben általában statikusan van felépítve. Az ellenőrzéshez írja be:

root #/usr/lib64/openldap/slapd -VVV
@(#) $OpenLDAP: slapd 2.4.44 (Feb 28 2017 10:07:46) $
	@larry:/var/tmp/portage/net-nds/openldap-2.4.44/work/openldap-2.4.44-abi_x86_64.amd64/servers/slapd

Included static overlays:
    syncprov
Included static backends:
    config
    ldif
    bdb
    hdb
Syncprov modul betöltése (opcionális)

A syncprov modul betöltéséhez használja a következő LDIF fájlt:

FILE syncprov-module-load.ldif
#Load the syncprov module.
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
Replikáció beállítása az adatbázishoz

A következő lépés, amely mindenki számára kötelező, az adatbázis replikációjának beállítása (mindkét csomóponton végrehajtandó):

FILE syncprov-add-overlay.ldif
# syncrepl Provider for primary db
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpCheckpoint: 100 10
olcSpSessionlog: 100

# Add indexes for replica to the frontend db.
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
Warning
A ldif-backend egyik gyengén dokumentált jellemzője, hogy nem engedélyezi a fájlok törlését. Ezért overlay hozzáadása lehetséges, azonban annak eltávolítása nem.
Végső beállítás

Végül adja hozzá a replikáció definícióját.

1. csomóponton:

FILE add-replication-node1.ldif
dn: cn=config
changetype: modify
add: olcServerID
olcServerID: 1

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl: 
  rid=001 
  provider=ldap://ldap-2.genfic.org 
  binddn="cn=ldapreader,dc=genfic,dc=org" 
  bindmethod=simple 
  credentials="secret" 
  searchbase="dc=genfic,dc=org" 
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="60 +"

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcMirrorMode
olcMirrorMode: TRUE

A secret hagyományosan a jelszó karakterláncot jelenti.

2. csomóponton:

FILE add-replication-node2.ldif
add-replication-node2.ldif 
dn: cn=config
changetype: modify
add: olcServerID
olcServerID: 1

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl:
  rid=002
  provider=ldap://ldap-1.genfic.org
  binddn="cn=ldapreader,dc=genfic,dc=org"
  bindmethod=simple
  credentials="secret"
  searchbase="dc=genfic,dc=org"
  type=refreshAndPersist
  timeout=0
  network-timeout=0
  retry="60 +"

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcMirrorMode
olcMirrorMode: TRUE

Az egyetlen különbség a szerver azonosítójában (rid) és a szolgáltató URI-ban van.

Note
Az LDAP adatbázist csak a klaszter egyik csomópontján kell betölteni, és a másik csomóponton nem szabad betölteni. Az adatbázis automatikusan replikálódik az idézett definíció hozzáadása után.

Ha az LDAP master (tükör csomópont az eredetileg betöltött adatbázissal) nem érhető el (a slapd szolgáltatás nincs elindítva, vagy a 389/tcp portot egy csomagszűrő blokkolja), a másodlagos csomóponton a slapd szolgáltatás az alábbi hibaüzenettel nem indul el:

root #tail -f /var/log/slapd.log
May 14 15:39:29 ldap2 slapd[1749]: olcMirrorMode: value #0: <olcMirrorMode> database is not a shadow
May 14 15:39:29 ldap2 slapd[1749]: config error processing olcDatabase={1}mdb,cn=config: <olcMirrorMode> database is not a shadow
May 14 15:39:29 ldap2 slapd[1749]: slapd stopped.
May 14 15:39:29 ldap2 slapd[1749]: connections_destroy: nothing to destroy.

Szinte biztos, hogy az adatbázis nem fog beleférni az alapértelmezett korlátokba. Ezért növelni kell a ldapreader korlátait. Például:

FILE add_replicator-limits.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="cn=ldapreader,dc=genfic,dc=org" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
Warning
Adatbázis fájl megjegyzés: a replikált adatbázis mérete jelentősen eltérhet az eredetitől. Az én esetemben körülbelül 300 megabájtos ldif dump került betöltésre majdnem 900 megabájtos mdb adatfájlba, és replikálódott 1,5 gigabájtos mdb adatfájlba.

Teljesítményhangolás

Az alapértelmezett szolgáltatás beállítások jelentősen korlátozzák az LDAP szerver teljesítményét.

Symptoms

Amikor a szerver terhelése eléri a rendszer korlátját, a kliensalkalmazások különböző időtúllépési hibákkal sikertelenek lesznek.

A szervernaplóban ez az alábbihoz hasonló hibaüzeneteket eredményez:

FILE /var/log/slapd.log
May 17 15:56:11 ldap2 slapd[13834]: fd=76 DENIED from unknown (192.168.210.101)
May 17 15:56:11 ldap2 slapd[13834]: warning: cannot open /etc/hosts.allow: Too many open files
May 17 15:56:11 ldap2 slapd[13834]: warning: cannot open /etc/hosts.deny: Too many open files
May 17 15:56:11 ldap2 slapd[13834]: fd=237 DENIED from unknown (192.168.77.130)
May 17 15:56:11 ldap2 slapd[13834]: warning: cannot open /etc/hosts.allow: Too many open files
May 17 15:56:11 ldap2 slapd[13834]: daemon: accept(8) failed errno=24 (Too many open files)

Operációs rendszer korlátainak növelése

Először olvassa el a ldap rendszerfelhasználói korlátokat:

root #su ldap -c 'ulimit -aHS' -s '/bin/bash'
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 6981
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 6981
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Az első paraméter, amelyet növelnie kell, az a nyitott fájlok korlát.

A maximálisan elérhető érték a kernel dokumentációjának Documentation/sysctl/fs.txt fájljában van leírva:

FILE /usr/src/linux-4.9.95-gentoo/Documentation/sysctl/fs.txt
nr_open:
This denotes the maximum number of file-handles a process can 
allocate. Default value is 1024*1024 (1048576) which should be
enough for most machines. Actual limit depends on RLIMIT_NOFILE
resource limit.


A PAM rendszerkorlátokat az /etc/security/limits.conf fájlban, vagy opcionálisan az /etc/security/limits.d/ könyvtárban tárolják. Azok a démonok, amelyeket a sys-apps/openrc init rendszer indít el, ezeket a paramétereket használják (részletekért lásd: sys-apps/openrc: start-stop-daemon should use system-services PAM stack), így csak annyit kell tennie, hogy beírja a fájlba:

FILE /etc/security/limits.conf
ldap           soft    nofile          4096
ldap           hard    nofile          8192

Végül indítsa újra a szolgáltatást.

Warning
Valamilyen ismeretlen okból az upstart init rendszer a systemddel együtt tervezett módon figyelmen kívül hagyja a rendszer PAM beállításait, azaz az /etc/security/limits.conf fájlt. A Gentoo alatt systemd init rendszert használó felhasználók kérem, lépjenek kapcsolatba velem a megoldás ellenőrzése érdekében.

A következő korlátozás a sysctl net.core.somaxconn paramétere.

Futási idő alatt ez az érték frissíthető az alábbiak segítségével:

root #sysctl -w net.core.somaxconn=256
net.core.somaxconn = 256

Az új érték ellenőrzése után ne felejtse el rögzíteni azt:

FILE /etc/sysctl.conf
## For LDAP:
net.core.somaxconn = 256

És esetleg néhány más, alkalmazás-specifikus paraméter is.

OpenLDAP kliens eszközök beállítása

Szerkessze az LDAP kliens konfigurációs fájlt. Ezt a fájlt az ldapsearch és más ldap parancssori eszközök olvassák.

FILE /etc/openldap/ldap.confAdd the following
BASE         dc=genfic, dc=org
URI          ldap://ldap.genfic.org:389/ ldap://ldap-1.genfic.org:389/ ldap://ldap-2.genfic.org:389/
TLS_REQCERT  allow
TIMELIMIT    2

Tesztelje a futó szervert az alábbi parancs segítségével:

user $ldapsearch -x -D "cn=Manager,dc=genfic,dc=org" -W

Ha hibákat kap, próbálja meg hozzáadni a -d 255 paramétert a részletesség növelése és a probléma megoldása érdekében.

Kliensbeállítás központosított hitelesítéshez

Számos módszer/eszköz használható távoli hitelesítéshez. Néhány disztribúciónak saját, könnyen használható beállításeszköze is van. Az alábbiakban néhány példa található, különösebb sorrend nélkül. Lehetőség van helyi felhasználók és központilag engedélyezett fiókok egyidejű kombinálására. Ez fontos, mert például, ha az LDAP szerver nem érhető el, akkor továbbra is be lehet jelentkezni rootként.

  • SSSD (Single Sign-on Services Daemon). Elsődleges funkciója, hogy hozzáférést biztosítson az identitás- és hitelesítési távoli erőforráshoz egy közös keretrendszeren keresztül, amely lehetővé teszi a gyorsítótárazást és az offline támogatást a rendszer számára. PAM és NSS modulokat biztosít, és a jövőben támogatni fogja a D-Bus interfészeket a kibővített felhasználói információkhoz. Emellett jobb adatbázist kínál a helyi felhasználók tárolásához, valamint a kibővített felhasználói adatokhoz.
  • Használja a pam_ldap modult az LDAP szerverre való bejelentkezéshez és a hitelesítéshez. A jelszavak nem kerülnek továbbításra a hálózaton titkosítatlan formában.
  • NSLCD (Name Service Look up Daemon). Hasonló az SSSD-hez, de régebbi.
  • NSS (Name Service Switch), amely a hagyományos pam_unix modult használja a jelszóhash-ek hálózaton keresztüli lekéréséhez. Annak érdekében, hogy a felhasználók frissíthessék a jelszavukat, ezt kombinálni kell a pam_ldap módszerrel.

Az első kettő az alábbiakban kerül bemutatásra a működéshez szükséges minimális beállításlehetőségekkel.

Kliens PAM beállítás SSSD módszerrel

Warning
2021 óta nincs tesztelve.

Íme a közvetlenebb módszer. Az alábbiakban felsoroljuk azt a három fájlt, amelyet módosítani kell.

FILE /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services = nss, pam
domains = genfic
debug_level = 5
  
[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd
  
[domain/genfic]
id_provider = ldap
auth_provider = ldap
ldap_search_base = dc=genfic,dc=org
ldap_tls_reqcert = never
# primary and backup ldap servers below [first server and],[second server]
ldap_uri = ldap://X.X.X.X,ldap://X.X.X.X


Adja hozzá az sss-t a végéhez az alábbiakban bemutatott módon, hogy engedélyezze a keresés átadását az sssd rendszer szolgáltatásnak. Miután befejezte a szerkesztést, indítsa el az sssd szolgáltatást.

FILE /etc/nsswitch.confExample nsswitch.conf with SSSD support
passwd:     files sss
shadow:     files sss
group:      files sss
  
netgroup:   files sss
automount:  files sss
sudoers:    files sss

Az utolsó fájl a legkritikusabb. Mielőtt szerkesztené, nyisson meg egy további root terminált biztonsági mentésként. Azok a sorok, amelyek #-vel végződnek, azért lettek hozzáadva, hogy engedélyezzék a távoli hitelesítést. Figyeljen a pam_mkhomedir.so használatára, amely támogatja a felhasználói otthoni könyvtárak létrehozását.

FILE /etc/pam.d/system-authEnable pam_sss support
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass                                         #
auth        required      pam_deny.so
  
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so                         #
account     required      pam_permit.so
  
password    requisite     pam_pwquality.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok                                            #
password    required      pam_deny.so
  
session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0077
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so                                                        #

Most próbálja meg bejelentkezni egy másik készülékről.

Note
Az SSSD módszer nem csak LDAP-hitelesítésre használható, hanem AD-hitelesítésre is.

Kliens PAM beállítás a pam_ldap modul módszerrel

Mielőtt bármilyen változtatást végezne az ügyféloldali hitelesítési konfiguráción, győződjön meg róla, hogy az LDAP szerver elérhető, és a megfelelő információkat nyújtja. Az alábbi lépések feltételezik, hogy az LDAP-ban létrehoztak egy Bert Ram nevű felhasználót bertram bejelentkezési névvel. Cserélje ki ennek megfelelően egy, az LDAP példányban található felhasználóra. A menedzser szerepkört óvatosan használja. Legalább ellenőrizze az LDAP olvasó szerepkörrel rendelkező felhasználóval és egy olyan felhasználóval, aki be fog jelentkezni a konfigurálandó ügyfélgép(ek)re.

# Uses the manager role, prompts for Manager's password
# if you can't use the manager role change -D to reader role
ldapsearch -x uid=bertram -H ldaps://ldap.genfic.org -b "dc=genfic,dc=org" -D cn=Manager,dc=genfic,dc=org -W

# Make a member query for the initgroups with the user that will login
# tests also this user's password
ldapsearch -x '({{|}}(&(objectClass=posixAccount)(uid=bertram))({{&}}(objectClass=posixGroup)(memberUid=bertram)))'  -H ldaps://ldap.genfic.org -b "dc=genfic,dc=org" -D "cn=Bert Ram,dc=genfic,dc=org" -W

Először állítsa be a PAM-ot, hogy engedélyezze az LDAP-hitelesítést. Telepítse a sys-auth/nss-pam-ldapd csomagot, hogy a PAM támogassa az LDAP-hitelesítést. Ezután szerkessze a /etc/pam.d/system-auth fájlt, és adja hozzá a releváns sorokat, hogy először a helyi bejelentkezés ellenőrzése történjen. Ez biztosítja a biztonságot legalább egy helyi root bejelentkezéssel és egy helyi felhasználóval – amelyek a Gentoo telepítése során lettek létrehozva. Harmadszor, a /etc/nsswitch.conf fájlt kell szerkeszteni, hogy az LDAP-ot is ellenőrizze a helyi adatbázis és fájlok opció mellett. Végül ellenőrizze a bejelentkezést az egyik terminálon, mielőtt újraindítaná az ügyfélgépet, kijelentkezne a root-ból vagy a jelenlegi felhasználóból.

Note
A sys-auth/pam_ldap a sys-auth/nss_ldap csomaggal kombinálva alternatíva lehet. Ez egy globálisan olvasható /etc/ldap.conf fájlt igényel, ami kérdéses a legújabb OpenLDAP beállításokkal, amelyek tiltják az anonim kötéseket. Egy olvasható egyszerű szövegű jelszó ugyanolyan jó, mint az anonim kötések. Ráadásul a kód már régóta nem változott, és néhány hivatkozás nem érhető el. Mindazonáltal még mindig működik. Továbbá az ügyfél rendszerek ldap.conf fájlja ütközhet más szolgáltatásokkal.
root #emerge --ask nss-pam-ldapd

Először készítsen biztonsági másolatot erről a fájlról. Másolja egy biztonságos helyre (az /etc mappán kívülre), arra az esetre, ha módosításokat hajtott végre. Tegye a másolatot csak olvashatóvá, például így: chmod 444 system-auth.copy. Illesszen be egy pam_ldap.so nyilatkozatot mind az auth, account, password és session blokkokba.

FILE /etc/pam.d/system-auth
#%PAM-1.0

# anything before pam_unix left out
auth      sufficient   pam_unix.so ...
# ...after pam_unix, before pam_deny
auth      sufficient  pam_ldap.so minimum_uid=1000 use_first_pass
auth      required    pam_deny.so

# anything before pam_unix left out
account   required    pam_unix.so
# ...after pam_unix again, before pam_permit.so
account   sufficient  pam_ldap.so minimum_uid=1000
account   required    pam_permit.so

# anything before pam_unix left out
password  sufficient  pam_unix.so nullok md5 shadow use_authtok
# ...after pam_unix again, before pam_deny.so
password  sufficient  pam_ldap.so minimum_uid=1000 try_first_pass
password  required    pam_deny.so

# anything before pam_unix left out
session   required    pam_unix.so
session   optional    pam_ldap.so minimum_uid=1000

A /etc/nsswitch.conf fájlban minden passwd, group, shadow és initgroups sor elé hozzá kell adni az ldap-ot.

FILE /etc/nsswitch.conf
# Many explanations in comments before...

passwd:         db files ldap
group:          db files ldap
shadow:         db files ldap
initgroups:     db [SUCCESS=continue] files ldap
gshadow:        files

# more statements afterwards
Warning
Ha az initgroups nem tartalmazza az ldap-ot forrásként, az LDAP-hitelesítő adatokkal bejelentkező felhasználók csak az elsődleges csoportjukhoz fognak hozzáférni. Minden egyéb csoport, mint például wheel, audio, video és a többi, hiányozni fog.

Most módosítsa a /etc/nslcd.conf fájlt. Tartalmaznia kell a következőket:

  • URI az LDAP szerver eléréséhez, használjon TLS-t/ ldaps:// bármilyen módon, különben a jelszavak titkosítatlanul kerülnek továbbításra.
  • Általános bázis a DN-ek kereséséhez.
  • Bind-DN (és titok), mivel az anonim kötés nem biztonságos.
  • Egyedi bázis csoport, passwd és/ vagy shadow esetén, ha az LDAP fa eltér az alapértelmezésektől (a fájl megjegyzéseiben említettek szerint).
  • Opcionális kliens tanúsítványok, ha kölcsönös TLS-t használ.
  • Csoporttagság leképezése memberUid-re, ha az elsődleges csoportot további csoporttagságokkal fejezi ki
Note
{{{1}}}
Warning
Győződjön meg arról, hogy a /etc/nslcd.conf fájl tulajdonosa az nslcd, és csak az nslcd tudja olvasni a fájlt a chmod 400 paranccsal.
FILE /etc/nslcd.conf
# shows only the lines that were edited/ mentioned above, there is plenty more
# well documented. Order of the lines stays the same.

# The user and group nslcd should run as.
uid nslcd
gid nslcd

uri ldaps://ldap.genfic.org/

base dc=genfic,dc=org

# a plain assumption for a user with only read permission on the LDAP
binddn userid=ldapreader,dc=genfic,dc=org
bindpw a plain text secret

# Reduce timeout from 30s to something sane otherwise login waits at least
# until timeout
bind_timelimit 2

# There are many other mappings for different schemas. Assuming you use
# posixAccount as schema member can be mapped to memberUid to add
# initgroups correctly
map	group	member	memberUid

Ez csak egy megjegyzés, és különbséget kell tenni a systemd és az OpenRC között. Indítsa el nslcd:

root #/etc/init.d/nslcd start

Ha a szolgáltatás sikeresen elindult, váltson át az egyik konzol terminálra. Térjen vissza a grafikus munkamenethez a Ctrl+Alt+F7 billentyűkombináció megnyomásával. Váltson át a 6 bejelentkezési konzol egyikére a Ctrl+Alt+F1..F6 billentyűkombináció megnyomásával. A bejelentkezési felületen próbálja ki a bertram felhasználót.

Konvertálja a userbase fájlt LDAP formátumra

Note
A hivatkozás nem működik. Más Linux-disztribúciók szoftvercsomagokat és javításokat biztosítanak.

Az OpenLDAP beállítása a központosított adminisztráció és a Linux/Unix elemek kezelésére nem egyszerű feladat, de az interneten elérhető eszközöknek és script-eknek köszönhetően a rendszer áthelyezése egy egyedi-adminisztrációs nézőpontból egy OpenLDAP-alapú, központilag kezelt rendszerre szintén nem túl nehéz.

Látogasson el a https://www.padl.com/OSS/MigrationTools.html oldalra, és töltse le az ott található szkripteket. Szüksége lesz a migrációs eszközökre és a make_master.sh szkriptre.

Ezután bontsa ki az eszközöket, és másolja a make_master.sh szkriptet a kibontott helyre.

root #mktemp -d
/tmp/tmp.zchomocO3Q
root #cd /tmp/tmp.zchomocO3Q
root #tar xvzf /path/to/MigrationTools.tgz
root #mv /path/to/make_master.sh MigrationTools-47
root #cd MigrationTools-47

A következő lépés a rendszer adatok migrálása az OpenLDAP-ra. A make_master.sh szkript elvégzi ezt a feladatot, miután megkapta az LDAP struktúrára és környezetre vonatkozó információkat.

A jelen írás idején az eszközök a következő bemeneteket igénylik:

Input Description Example
LDAP BaseDN The base location (root) of the tree. dc=genfic,dc=org
Mail domain Domain used in e-mail addresses genfic.org
Mail host FQDN of the mail server infrastructure. smtp.genfic.org
LDAP Root DN Administrative account information for the LDAP structure. cn=Manager,dc=genfic,dc=org
LDAP Root Password Password for the administrative account, cfr earlier slappasswd command.

Az eszköz meg fogja kérdezni, hogy mely fiókokat és beállításokat kell migrálni.

Warning
Nem szükséges módosítania a pam.d/system-auth fájlt.

Hibaelhárítás

Emerge hibák jelentkezése az LDAP-a történő konverzió után

Ha bármilyen okból a helyi felhasználói fiókok (például /etc/passwd, /etc/shadow) vagy csoportok (például /etc/group) törlésre kerülnek a file userbase LDAP-ra történő konvertálása után, hibák léphetnek fel a hiányzó felhasználók (vagy csoportok) miatt bizonyos csomagok telepítésekor. Ezért érdemes óvatosan eljárni, és a helyi adatok biztonsági mentéséről gondoskodni, mielőtt bármilyen módosítást végezne.

Példa hiba a www-servers/apache telepítése közben, amelyet a "apache" helyi felhasználói fiók hiánya okoz:

Installing build system files
make[1]: Leaving directory '/var/tmp/portage/www-servers/apache-2.4.41/work/httpd-2.4.41'               [ ok ]
chown: invalid user: ?apache:apache?
* ERROR: www-servers/apache-2.4.41::gentoo failed (install phase):
*   fowners failed

Ilyen esetekben megoldás lehet a csomag telepítése a FEATURES=-network-sandbox használatával. Ez azonban potenciális biztonsági következményekkel járhat, ezért a rendszer felhasználóinak helyi fájlokban kell maradniuk.

Köszönetnyilvánítás

Szeretnénk megköszönni Matt Helernek, hogy kölcsönadta nekünk a dobozát ennek az útmutatónak a céljára. Köszönet illeti a #ldap (webchat) szobában lévő remek srácokat is a Libera Chat IRC hálózaton.


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Benjamin Coles, Sven Vermeulen (SwifT) , Brandon Hale, Benny Chuang, jokey,
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.