Zabbix konfigurēšana ar Kerberos
Pārskats
Kerberos autentifikāciju var izmantot tīmekļa uzraudzībā un HTTP vienumos Zabbix.
Šajā lapā ir aprakstīts piemērs, kā konfigurēt Kerberos Zabbix serverim, lai Debian/Ubuntu vidē veiktu www.example.com tīmekļa uzraudzību, izmantojot Kerberos principālu Zabbix procesam.
Konfigurācija
1. Instalējiet KDC un klienta utilītprogrammas:
sudo apt update
sudo apt install krb5-kdc krb5-admin-server krb5-user
Pakotnes iestatīšanas laikā atbildiet uz uzvednēm, piemēram:
Default Kerberos version 5 realm: EXAMPLE.COM
Kerberos servers for your realm: localhost (or your FQDN)
Administrative server for your Kerberos realm: localhost (or your FQDN)
2. Kartējiet viegli iegaumējamu resursdatora nosaukumu (neobligāti, lokālai testēšanai).
Rediģējiet /etc/hosts un pievienojiet ierakstu savam DC un tīmekļa serverim, ja jums nav DNS:
sudo vi /etc/hosts
Piemēra rinda, ko varat pievienot:
192.168.1.100 dc01.example.com dc01
3. Konfigurējiet Kerberos klientu un KDC realm:
sudo vi /etc/krb5.conf
Iestatījumu piemērs:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
rdns = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = dc01.example.com
admin_server = dc01.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Ja plānojat izmantot .localdomain vai citus nepubliskus nosaukumus, pievienojiet skaidras domēna→realm kartēšanas, lai darbotos resursdatora nosaukuma→realm kartēšana.
Neatbilstības šeit izraisa kļūdas Server not found in Kerberos database.
4. Inicializējiet Kerberos datubāzi (vienreiz, KDC hosts). Kad tiek prasīts, iestatiet drošu galveno paroli:
sudo krb5_newrealm
5. Izveidojiet HTTP/host.fqdn@REALM principālu, izmantojot precīzu resursdatora nosaukumu, ko izmantos klienti; ieteicams izmantot mazos burtus (piemēram, HTTP/[email protected]).
Reģistra vai nosaukuma neatbilstība izraisa kļūdu Server not found in Kerberos database.
sudo kadmin.local
Programmā kadmin.local:
addprinc [email protected] # administratīvais principāls
addprinc -randkey HTTP/[email protected]
ktadd -k /etc/apache2/http.keytab HTTP/[email protected]
quit
Pārvietojiet keytab failu uz tīmekļa serveri (vai atstājiet to lokāli, ja tā ir tā pati iekārta) un iestatiet Apache izmantojamas atļaujas:
chown www-data:www-data /etc/apache2/http.keytab
chmod 600 /etc/apache2/http.keytab
# pārbaude
sudo -u www-data -k /etc/apache2/http.keytab
6. Instalējiet un iespējojiet Apache GSSAPI moduli:
sudo apt install libapache2-mod-auth-gssapi
sudo a2enmod auth_gssapi
sudo a2enmod headers
sudo systemctl restart apache2
Ne visas mod_auth_gssapi versijas atbalsta katru Gssapi* direktīvu.
Ja Apache neizdodas palaist ar kļūdu Invalid command 'GssapiCredStore', noņemiet neatbalstīto direktīvu vai jauniniet moduli.
7. Konfigurējiet VirtualHost (pielāgojiet DocumentRoot / ceļu uz savu Zabbix lietotāja saskarni):
sudo vi /etc/apache2/sites-available/zabbix.conf
Failā zabbix.conf:
<VirtualHost *:80>
ServerName dc01.example.com
DocumentRoot /usr/share/zabbix/ui
<Directory /usr/share/zabbix/ui>
Options FollowSymLinks
AllowOverride None
Require all granted
AuthType GSSAPI
AuthName "Kerberos Login"
GssapiCredStore keytab:/etc/apache2/http.keytab
GssapiLocalName On
Require valid-user
</Directory>
RequestHeader set X-Remote-User %{REMOTE_USER}s env=REMOTE_USER
RequestHeader unset Authorization
</VirtualHost>
Restartējiet Apache:
sudo systemctl restart apache2
8. Iespējojiet un palaidiet KDC pakalpojumus, kā arī pārbaudiet, vai porti tiek izmantoti (KDC hosts):
sudo systemctl enable --now krb5-kdc krb5-admin-server
ss -tnlp | grep :80 # vai: sudo netstat -tnlp | grep :80
9. Iegūstiet TGT testēšanai (izpildiet kā lietotājs, kurš izmantos biļeti).
Biļešu sarakstā jābūt redzamam krbtgt/[email protected].
Palaidiet kinit kā tas pats OS lietotājs, kuram nepieciešama biļete (piemēram, zabbix tīmekļa pārbaužu veikšanai vai www-data/Apache interaktīvās pārlūkprogrammas SSO testiem).
Citai OS lietotāja identitātei izsniegtās biļetes nebūs redzamas, ja vien netiks pielāgoti KRB5CCNAME un atļaujas.
kinit [email protected]
klist
10. Pārbaudiet SPNEGO apmaiņu ar curl (no klienta ar derīgu TGT).
Atbilde 200 OK (vai novirzīšana uz lietotni) norāda, ka SPNEGO ir veiksmīgs:
curl -v --negotiate -u : http://dc01.example.com/
11. Ja nepieciešams, iespējojiet HTTP autentifikāciju Zabbix lietotāja saskarnē, lai tā pieņemtu ar HTTP autentificētus pieteikumus.
lietotāja saskarnes konfigurācijas failā (zabbix.conf.php) iestatiet:
$ZBX_FEATURE_FLAGS['http_auth_enabled'] = true;
Pēc tam konfigurējiet HTTP autentifikāciju tīmekļa saskarnē.
12. Pārlūkprogrammas konfigurācija (kā piemērs izmantots Firefox): iestatiet network.negotiate-auth.trusted-uris uz hosts, kas veic Negotiate autentifikāciju (dc01.example.com), lai pārlūkprogramma automātiski nosūtītu Kerberos marķierus.
Sadaļā about:config:
network.negotiate-auth.trusted-uris = dc01.example.com
Tagad, apmeklējot http://dc01.example.com, jums vajadzētu tikt tieši pieteiktam Zabbix bez pieteikšanās formas.
13. Uzturiet atslēgas un biļetes aktuālas. Kerberos biļetes noklusējuma darbības laiks ir aptuveni 10 stundas. Pievienojiet cron/systemd taimeri, lai novērstu to derīguma termiņa beigas:
# tīmekļa pakalpojumam
kinit -kt /etc/apache2/http.keytab HTTP/[email protected]
# uzraudzības lietotājam
kinit -kt /var/lib/zabbix/kerb.keytab [email protected]
14. Regulārās pārbaudes:
klist -k /etc/apache2/http.keytab- pārbaudiet, vai keytab failā ir servisa principāls.sudo tail -f /var/log/apache2/error.log- pārraugiet GSSAPI kļūdas (gss_acquire_cred[_from]() failed to get server credsnozīmē problēmu ar keytab failu vai atļaujām, vai arī trūkstošu principālu).- Ja
curl --negotiateatgriež 401/403, tas bieži nozīmē nepareizu principālu, trūkstošu biļeti, neatbilstību hosts galvenē vai failu sistēmas atļauju problēmu; pārbaudiet žurnālus un domēnu kartējumus failā/etc/krb5.conf.
Piezīmes par drošību un failu atļaujām
Keytab failiem jābūt lasāmiem tikai kontam, kuram tie ir nepieciešami.
Atļauju piemēri: 0400, īpašnieks zabbix:zabbix, ja tas ir zabbix lietotāja keytab fails, vai 0440 un root:www-data, ja tas ir Apache keytab fails.
Izvairieties no ilgstoši derīgu nešifrētu paroļu glabāšanas uz hosts. Ja iespējams, izmantojiet keytab failus vai domēnam pievienotu datoru principāļus.
Palaižot testus vai skriptus, kas iestata KRB5CCNAME vai kopē keytab failus, pēc darbības vēlreiz pārbaudiet īpašnieku un atļaujas — tīmekļa serveris, kas noraida akreditācijas datus, bieži norāda uz faila atļauju problēmu.