L'autenticació Kerberos es pot emprar al monitoratge Web i d'elements HTTP amb Zabbix.
Aquesta secció descriu un exemple de configuració de Kerberos amb el servidor Zabbix per monitorar el web www.example.com amb un Kerberos principal per a un procés de Zabbix a Debian/Ubuntu.
1. Instal·leu el KDC i les utilitats del client:
Durant la configuració del paquet, responeu les indicacions, p. ex.:
Reialme Kerberos versió 5 per defecte: EXAMPLE.COM
Servidors Kerberos per al vostre reialme: localhost (o el vostre FQDN)
Servidor administratiu per al vostre reialme Kerberos: localhost (o el vostre FQDN)2. Assigneu un nom d'equip fàcil de descriure (opcional, per a proves locals).
Editeu /etc/hosts i afegiu una entrada per al vostre controlador de domini i servidor web si no teniu DNS:
Línia d'exemple que podeu afegir:
3. Configureu el client Kerberos i el domini KDC:
Exemple de configuració:
[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.COMSi teniu previst utilitzar .localdomain o altres noms no públics, afegiu mapes explícits de domini→domini perquè el mapatge de nom d'equip→domini funcioni. Les incompatibilitats aquí provoquen errors No s'ha trobat el servidor a la base de dades Kerberos.
4. Inicialitzeu la base de dades Kerberos (d'un sol ús, equip KDC). Establiu un mot de pas mestre segur quan se us demani:
5. Creeu el principal HTTP/host.fqdn@REALM utilitzant el nom d'equip exacte que empraran els clients; preferiblement minúscules (per exemple, HTTP/[email protected]). Una incompatibilitat entre majúscules i minúscules provoca No s'ha trobat el servidor a la base de dades Kerberos.
Dins de kadmin.local:
addprinc [email protected] # principal administratiu
addprinc -randkey HTTP/[email protected]
ktadd -k /etc/apache2/http.keytab HTTP/[email protected]
quitMoveu la keytab a l'equip web (o manteniu-la local si és la mateixa màquina) i configureu els permisos que pugui utilitzar Apache:
chown www-data:www-data /etc/apache2/http.keytab
chmod 600 /etc/apache2/http.keytab
# verify
sudo -u www-data -k /etc/apache2/http.keytab6. Instal·leu i activeu el mòdul Apache GSSAPI:
sudo apt install libapache2-mod-auth-gssapi
sudo a2enmod auth_gssapi
sudo a2enmod headers
sudo systemctl restart apache2No totes les versions de mod_auth_gssapi admeten totes les directives Gssapi*. Si Apache falla amb Comanda no vàlida 'GssapiCredStore', elimineu la directiva no compatible o actualitzeu el mòdul.
7. Configureu un VirtualHost (ajusteu DocumentRoot / path a la vostra interfície d'usuari de Zabbix):
Dins de zabbix.conf:
<VirtualHost *:80>
Nom del servidor dc01.example.com
DocumentRoot /usr/share/zabbix/ui
<Directori /usr/share/zabbix/ui>
Opcions FollowSymLinks
AllowOverride None
Requereix que tots siguin atorgats
AuthType GSSAPI
AuthName "Inici de sessió Kerberos"
GssapiCredStore keytab:/etc/apache2/http.keytab
GssapiLocalName On
Requereix usuari vàlid
</Directori>
RequestHeader set X-Remote-User %{REMOTE_USER}s env=REMOTE_USER
RequestHeader no definit Autorització
</VirtualHost>Reinicieu Apache:
8. Habiliteu/inicieu els serveis KDC i verifiqueu els ports d'escolta (equip KDC):
sudo systemctl enable --now krb5-kdc krb5-admin-server
ss -tnlp | grep :80 # o: sudo netstat -tnlp | grep :809. Obtingueu un TGT per a proves (executeu-lo com a l'usuari que utilitzarà el tiquet).
Espereu veure krbtgt/[email protected] a la llista de tiquets. Executeu kinit com el mateix usuari del sistema operatiu que necessita el tiquet (per exemple, zabbix per a comprovacions web o www-data/Apache per a proves SSO interactives del navegador). Els tiquets emesos a un usuari de sistema operatiu diferent no seran visibles tret que s'ajustin KRB5CCNAME i els permisos.
kinit [email protected]
klist10. Proveu l'intercanvi de SPNEGO amb curl (des d'un client amb un TGT vàlid). Un 200 OK (o redirecció a l'aplicació) indica que SPNEGO ha tingut èxit:
11. Opcionalment, si la interfície d'usuari de Zabbix ha d'acceptar inicis de sessió autenticats per HTTP, activeu l'autenticació HTTP al front end de Zabbix (ui/conf/zabbix.conf.php):
A la interfície d'usuari web, aneu a Usuaris > Autenticació i moveu-vos a la pestanya Configuració HTTP.
Marqueu la casella de selecció Habilita l'autenticació HTTP i feu clic a D'acord a la finestra emergent. Seleccioneu "Formulari d'inici de sessió HTTP" al menú desplegable Formulari d'inici de sessió predeterminat. Decideu si Inici de sessió que distingeix entre majúscules i minúscules s'adapta a la vostra política de directori. Feu clic al botó Actualitza per acabar.
12. Configuració del navegador (s'utilitza Firefox com a exemple): definiu network.negotiate-auth.trusted-uris com a host(s) que realitzen Negotiate (dc01.example.com) perquè el navegador enviï els tokens Kerberos automàticament.
Dins d'about:config:
Ara, si visiteu http://dc01.example.com, hauríeu d'iniciar la sessió directament a Zabbix sense el formulari.
13. Mantingueu les claus/tiquets actualitzats. La vida útil predeterminada dels tiquets de Kerberos és d'aproximadament 10 hores. Afegiu un temporitzador cron/systemd per evitar caducitats:
#per al servei web
kinit -kt /etc/apache2/http.keytab HTTP/[email protected]
#per a l'usuari de supervisió
kinit -kt /var/lib/zabbix/kerb.keytab [email protected]14. Comprovacions de manteniment:
klist -k /etc/apache2/http.keytab — verifica que el principal de servei estigui present a keytab.sudo tail -f /var/log/apache2/error.log — vigila els errors de GSSAPI (gss_acquire_cred[_from]() no ha pogut obtenir les credencials del servidor significa keytab/permisos o principal que falta).curl --negotiate que retorna 401/403 sovint significa principal incorrecte, no hi ha tiquet, no coincideix la capçalera de l'equip o un problema de permisos del sistema de fitxers; revisa els registres i els mapatges de domini /etc/krb5.conf.Els fitxers keytab només han de ser llegibles pel compte que els necessita. Exemples de permisos: 0400 propietat de zabbix:zabbix per a un keytab d'usuari zabbix, o 0440 i root:www-data per a un keytab d'Apache.
Eviteu emmagatzemar contrasenyes de text sense format de llarga durada a l'equip. Utilitzeu keytabs o principals de màquina units a un domini sempre que sigui possible.
Quan executeu proves o scripts que defineixen KRB5CCNAME o copien keytabs, comproveu la propietat i els permisos després de l'operació; un servidor web que rebutja les credencials sol ser un problema de permisos de fitxer.