Központilag történő hitelesítés az OpenLDAP használatával
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.
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:
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:
- Standard felhasználói-jelszó (LDAP kifejezések szerint az user az binddn-t jelent) SIMPLE-nek nevezve.
- 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)
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.
/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
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.
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
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:
/etc/openldap/slapd.conf
Granting root Linux account manage rights to cn=configdatabase 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.
/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.
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.
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.
/etc/openldap/slapd.ldif
Updating run files directoryolcArgsFile: /run/openldap/slapd.args
olcPidFile: /run/openldap/slapd.pid
/etc/openldap/slapd.ldif
A megfelelő modul betöltésedn: 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.
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ó:
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.
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.
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):
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:
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"
Ú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:
/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:
/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ő:
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.
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:
/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:
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:
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:
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.
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.
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
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:
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ó):
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
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:
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:
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.
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:
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
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:
/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:
/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:
/etc/security/limits.conf
ldap soft nofile 4096
ldap hard nofile 8192
Végül indítsa újra a szolgáltatást.
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:
/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.
/etc/openldap/ldap.conf
Add the followingBASE 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 apam_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
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.
/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.
/etc/nsswitch.conf
Example nsswitch.conf with SSSD supportpasswd: 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.
/etc/pam.d/system-auth
Enable 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.
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.
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.
/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.
/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
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
{{{1}}}
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./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
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.
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.