Weboldal keresés

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 $true

Futtassa 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.local
  • Kikötő:

    389
  • Alap DN:

    DC=domain, DC=local
  • Keresési attribútum:

    sAMAccountName
  • DN 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.local

A 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.local

A 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 -setpass
  • Má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-kerb

A 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.LOCAL

Adja 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.keytab

Győ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.keytab

Ezt a hibát láthatja:

kinit: Client 'HTTP/zabbix.domain.local@DOMAIN.LOCAL’ not found in Kerberos database while getting initial credentials

Ebben az esetben próbáljon meg hitelesíteni egy másik felhasználó hitelesítő adatait:

kinit -pV LOGIN

Ha 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_admin

Ilyen üzenetet fog látni. HTTP/zabbix.domain.local formátumban kell lennie. Ha nincs rekord, adja hozzá.

setspn -a HTTP/zabbix.domain.local zabbix_admin

Győ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.keytab

Hogyan á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:config

Mozilla Firefoxhoz:

network.automatic-ntlm-auth.trusted-uris
network.negotiate-auth.delegation-uris
network.negotiate-auth.trusted-uris

Ha 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 trace8

Indí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.LOCAL

Ha 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

Kapcsolódó cikkek