Zabbix: Egyszeri bejelentkezés (SSO) hitelesítés az Active Directoryban
Ebben a cikkben egy átlátszó SSO (egyszeri bejelentkezés) hitelesítés lépésről lépésre történő beállítását vizsgáljuk meg a Zabbix 4.0-s (vagy újabb) verzióhoz az Active Directoryban Kerberos használatával.
A végeredmény az, hogy a felhasználó automatikusan hitelesítésre kerül a Zabbix címlapján, hitelesítő adatok megadása nélkül. Ehhez a felhasználónak be kell jelentkeznie a Windowsba a Zabbixban megadott Active Directory tartományi fiókkal. Ezenkívül a felhasználónak be kell állítania a böngészőt (a Kerberos támogatást engedélyezni kell, és a megbízható intranetes webhelyeket be kell állítani az IE-ben).
Egy kirakat:
Ubuntu Server 18.04 LTS;
Active Directory tartomány 2008-as (vagy magasabb) funkcionális szinttel
-
Zabbix Server 4.0.11, Apache2 webszerverként (útmutató a Zabbix telepítéséhez)
Megjegyzés. Az egyszeri bejelentkezés megvalósításához ebben a cikkben az Apache2 libapache2-mod-auth-kerb modult használjuk. Az Nginxről itt nem lesz szó, de van benne spnego-http-auth-nginx-module, amelyet az Nginx fordításakor külön engedélyezni kell.
Zabbix LDAP hitelesítés az Active Directoryban
Mindenekelőtt a domain felhasználókat össze kell kötnie a Zabbix-szal. Ehhez elegendő egy felhasználót létrehozni a Zabbix-ban ugyanazzal a bejelentkezési névvel, mint az AD tartományban. Például, ha a bejelentkezési neve (sAMAccountName attribútum) user_5, akkor a Zabbix egyik felhasználójának ugyanazzal a bejelentkezési névvel kell rendelkeznie.
Csináld ezt minden olyan felhasználónál, aki a Zabbix-ot fogja használni.
Ezután hozzon létre egy külön felhasználói fiókot az Active Directoryban, hogy a Zabbixet a tartományához rendelje. A gyakorlatban bármilyen domain fiókot használhat, de jobb, ha külön szolgáltatásfiókot hoz létre. Az én esetemben a zabbix_admin lesz. Felhasználó létrehozásához az AD-ben a PowerShell New-ADUser parancsmagot használom:
New-ADUser -Name "zabbix_admin" -GivenName "zabbix_admin" -Surname "zabbix_admin" -SamAccountName "zabbix_admin" -AccountPassword (Read-Host -AsSecureString "Password:") -DisplayName "zabbix_admin" -Enabled $trueFuttassa a fenti parancsot a PowerShell-konzolon, és állítson be egy felhasználói jelszót. Az új felhasználó a Felhasználók tároló alatt található a domain gyökerében.
Állítsuk be az LDAP hitelesítést a Zabbixben. A Zabbix kezelőfelületén lépjen az LDAP beállítások lapra az Adminisztráció -> Authentication menüpontban. Jelölje be az LDAP-hitelesítés engedélyezése lehetőséget, és töltse ki a következő mezőket:
LDAP gazdagép:
ldap://dc1.domain.localKikötő:
389-
Alap DN:
DC=domain, DC=local Keresési attribútum:
sAMAccountNameDN kötése:
CN=zabbix_admin,OU=Users,DC=domain,DC=local
Bármely paraméter leírását elolvashatja a Zabbix dokumentáció LDAP hitelesítés szakaszában: https://www.zabbix.com/documentation/current/manual/web_interface/frontend_sections/administration/authentication.
A konfigurálás befejezése előtt egy tesztbejelentkezés (a Teszt gomb) elvégzésével győződjön meg arról, hogy a beállítások érvényesek. Adjon meg egy felhasználónevet (korábban hoztuk létre a fiókot) és AD jelszavát.
Ha a teszt sikeres volt, mentse el beállításait, és módosítsa a Zabbix hitelesítési típusát Belsőről LDAP-ra.
HTTP-hitelesítés engedélyezése (HTTP-beállítások -> HTTP-hitelesítés engedélyezése).
Az LDAP hitelesítés be van állítva.
Tipp. Ha az LDAP-kiszolgáló nem érhető el, akkor nem tudja elérni a Zabbix-ot. A belső hitelesítéshez való visszatéréshez nyissa meg a MySQL-t, és futtassa a következő parancsot:
update zabbix.config set authentication_type='0' where configid='1';Átlátszó (egyszeri bejelentkezéses) hitelesítés konfigurálása a Zabbixban (Apache2, krb5-user)
Először is adja meg a szerver FQDN nevét az /etc/hostname fájlban, amelynek meg kell egyeznie a tartomány DNS-rekordjával. Az én esetemben a zabbix.domain.local.
Írja be a szerver FQDN-jét a helyi IP-címhez és a szerver IP-címét is az /etc/hosts mappába.
127.0.0.1 localhost zabbix.domain.local
10.1.1.10 zabbix.domain.localA Kerberos hitelesítés megfelelő működéséhez szinkronizálja az időt a tartományvezérlővel. Telepítse az ntpdate csomagot, és kösse össze a tartományvezérlővel.
apt-get install ntp ntpdate
ntpdate dc.domain.localA Chrony az idő szinkronizálására szolgál a CentOS 8 rendszerben. Az ntp és az ntpdate csomagok nem érhetők el a hivatalos tárolókban.
Most létre kell hoznia egy keytab fájlt egy tartományvezérlőn. A Keytab egy SPN-t és titkosított kulcsokat tartalmazó fájl. A Keytab a Kerberos-alapú hitelesítéshez használatos.
Jelentkezzen be a tartományvezérlőbe, és futtassa a parancssort rendszergazdaként. Lépjen a C:\-re.
Írd be a következőt:
ktpass -princ HTTP/zabbix.domain.local@DOMAIN.LOCAL -mapuser zabbix_admin -pass STRONGPASS -crypto ALL -ptype KRB5_NT_PRINCIPAL -out zabbix.keytab -setupn -setpassMásolja a C:\zabbix.keytab fájlt a /etc/apache2/ könyvtárba a Zabbix szerveren.
Telepítse a Kerberos csomagokat és egy modult az apache2-hez:
#apt install krb5-user libapache2-mod-auth-kerbA krb5-user konfigurálása. Az /etc/krb5.cnf szerkesztése:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMAIN.LOCAL
default_keytab_name = /etc/apache2/zabbix.keytab
dns_lookup_kdc = false
dns_lookup_realm = false
forwardable = true
ticket_lifetime = 24h
[realms]
DOMAIN.LOCAL = {
kdc = dc.domain.local
default_domain = DOMAIN.LOCAL
admin_server = dc.domain.local
}
[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCALAdja meg a domainjét. Néhány helyen a domain név nagybetűvel van írva, kövesse ezt a szabályt.
Megjegyzés. Nézze meg a „default_keytab_name=/etc/apache2/zabbix.keytab” keytab fájl elérési útját tartalmazó sort, és győződjön meg arról, hogy a fájl elérhető ott. Adjon olvasási engedélyt a www-data számára, és futtassa:
chown www-data:www-data /etc/apache2/zabbix.keytabGyőződjön meg arról, hogy a Kerberos hitelesítés működik Linux alatt:
kinit -kV -p HTTP/zabbix.domain.local -t /etc/apache2/zabbix.keytabEzt a hibát láthatja:
kinit: Client 'HTTP/zabbix.domain.local@DOMAIN.LOCAL’ not found in Kerberos database while getting initial credentialsEbben az esetben próbáljon meg hitelesíteni egy másik felhasználó hitelesítő adatait:
kinit -pV LOGINHa a hitelesítés sikeres, a probléma a keytab fájllal van. Győződjön meg arról, hogy megfelelően generálta. Ellenőrizze, hogy a megfelelő parancsot adta-e meg a keytab fájl létrehozásához.
Győződjön meg arról, hogy a Zabbix szolgáltatásfiókjához tartozó SPN-rekord létezik az AD-ben. Írja be a következő parancsot a tartományvezérlőn:
setspn -l zabbix_adminIlyen üzenetet fog látni. HTTP/zabbix.domain.local formátumban kell lennie. Ha nincs rekord, adja hozzá.
setspn -a HTTP/zabbix.domain.local zabbix_adminGyőződjön meg arról, hogy a felhasználói bejelentkezési név HTTP/zabbix.domain.local lett.
Ha nem, változtassa meg manuálisan.
Ezután szerkessze az apache2 konfigurációs fájlt - /etc/apache2/sites-available/000-default.conf.
Adja hozzá a következőket a ServerName zabbix.domain.local sorhoz:
<Location />
AuthType Kerberos
AuthName "Kerberos authenticated"
KrbAuthRealms DOMAIN.LOCAL
#KrbServiceName HTTP/zabbix.domain.local
KrbServiceName Any
Krb5Keytab /etc/apache2/zabbix.keytab
KrbMethodNegotiate On
KrbSaveCredentials on
KrbLocalUserMapping on
Require valid-user
</Location>Ha a KrbServiceName nem egyezik a keytab fájlban megadott névvel, hiba történik. Így tesztelés közben beállíthat bármilyen értéket. Miután meggyőződött arról, hogy a rendszer működik, adja meg az érvényes szolgáltatásnevet. A következő használatával ellenőrizheti:
klist -le /etc/apache2/zabbix.keytabHogyan állíthatom be a böngészőket a Kerberos hitelesítéshez?
Ahhoz, hogy az Internet Explorer a Kerberos hitelesítést használja a Zabbix rendszeren, hozzá kell adnia az URL-címét a Helyi intranet webhelyekhez. A Google Chrome az Internet Explorer beállításait használja, így nem kell külön konfigurálnia.
Megjegyzés. A Zabbix webhely URL-címe nem tartozhat a Megbízható webhelyek listájához, különben a Kerberos nem fog működni. A webhelyet csak az intranetes oldalakon kell megadni.
Nyissa meg az Opciók -> Biztonság az IE-ben.
Kattintson a Webhelyek lehetőségre a helyi intraneten, ellenőrizze az alábbi képernyőképen látható beállításokat, majd kattintson a Speciális gombra.
Adja meg a Zabbix szerver URL-címét.
Lépjen a Speciális lapra, és jelölje be az Integrált Windows-hitelesítés engedélyezése lehetőséget.
A Zabbix URL-címét a helyi intranetes zónába is elhelyezheti a csoportházirendek segítségével (Számítógép-konfiguráció -> Felügyeleti sablonok -> Windows-összetevők -> Internet Explorer -> Internetes vezérlőpult -> Biztonsági oldal -> Helyek-zóna hozzárendelési lista. Használja az 1-es zónakódot az intranetes webhelyekhez).
Adja hozzá a Zabbix szerver URL-jét a következő paraméterekhez
about:configMozilla Firefoxhoz:
network.automatic-ntlm-auth.trusted-uris
network.negotiate-auth.delegation-uris
network.negotiate-auth.trusted-urisHa bármilyen problémába ütközik, olvassa el a Kerberos böngészőkben történő beállításáról szóló részletes cikket.
Ezt követően a konfiguráció véget ért. Ha megpróbál hozzáférni a Zabbix szerver URL-címéhez, a rendszer automatikusan hitelesíti, és nem kéri a jelszó megadására.
Kerberos hitelesítési hibakeresés és hibaelhárítás az Apache-ban
Ha bármilyen problémája van, engedélyezze a hibakeresési módot az apache2-ben:
Írja be a következőt a záró címke elé az /etc/apache2/sites-available/000-defaults.conf fájlban:
LogLevel trace8Indítsa újra az apache-t, és ellenőrizze a Kerberos modul hibáját az error.log fájlban.
A kényelmesebbé tétel érdekében használja ezt a parancsot a bejegyzések IP-cím szerinti szűrésére:
tail -f /var/log/apache2/error.log | grep ‘Your IP address’A Kerberos kezeléséhez és diagnosztizálásához használhatja a kinit és a klist parancsokat.
A kinit egy eszköz a Kerberos jegyek beszerzésére és gyorsítótárazására, például:
kinit -V -k -t /etc/apache2/zabbix.keytab -p HTTP/zabbix.domain.local@DOMAIN.LOCALHa megfelelően hozta létre a keytab fájlt, a parancs lefut, és üzenetet kap, hogy a hitelesítés sikeres volt.
A klist használatával megtekintheti a gyorsítótárazott Kerberos jegyeket:
klist -a













