6 Drošs savienojums ar lietotāja saskarni

Pārskats

Šajā sadaļā ir sniegti Zabbix iestatīšanas soļi un konfigurācijas piemēri drošiem TLS savienojumiem starp Zabbix lietotāja saskarne un Zabbix serveri.

Konfigurēšana

Pēc noklusējuma saziņa starp Zabbix lietotāja saskarni un Zabbix serveri nav šifrēta. Lai uzlabotu drošību, iespējojiet TLS abās pusēs. Tālāk ir sniegts piemērs, kā to izdarīt visvienkāršākajā veidā.

1. Ģenerējiet sertifikātus un atslēgas.

Izveidojiet darba direktoriju:

sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl

Izveidojiet CA sertifikātu (pielāgojiet vērtību MyZabbixCA, lai tā atbilstu faktiskajam vispārpieņemtajam nosaukumam):

sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"

Ģenerējiet privāto atslēgu un sertifikātu Zabbix serverim (pielāgojiet vērtību zabbix-server.example.com, lai tā atbilstu faktiskajam vispārpieņemtajam nosaukumam):

sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr -subj "/CN=zabbix-server.example.com/"
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crt

Ģenerējiet privāto atslēgu un sertifikātu Zabbix lietotāja saskarnei (pielāgojiet vērtību zabbix-frontend-node, lai tā atbilstu faktiskajam vispārpieņemtajam nosaukumam):

sudo openssl genrsa -out frontend.key 2048
sudo openssl req -new -key frontend.key -out frontend.csr -subj "/CN=zabbix-frontend-node/"
sudo openssl x509 -req -days 365 -in frontend.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out frontend.crt

2. Iestatiet atbilstošas atļaujas.

Zabbix serverim (pielāgojiet īpašnieku/grupu atbilstoši jūsu distribūcijas Zabbix servera dēmona lietotājam):

sudo chown root:zabbix /etc/zabbix/ssl/server.{crt,key} /etc/zabbix/ssl/ca.crt
sudo chmod 640 /etc/zabbix/ssl/server.key
sudo chmod 644 /etc/zabbix/ssl/server.crt /etc/zabbix/ssl/ca.crt

Lietotāja saskarnei (pielāgojiet īpašnieku/grupu atbilstoši jūsu distribūcijas tīmekļa servera lietotājam):

sudo chown root:www-data /etc/zabbix/ssl/frontend.{crt,key}
sudo chmod 640 /etc/zabbix/ssl/frontend.key
sudo chmod 644 /etc/zabbix/ssl/frontend.crt

3. Konfigurējiet Zabbix serveri.

Failā zabbix_server.conf pievienojiet:

TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# Pēc izvēles:
# TLSFrontendCertIssuer=CN=MyZabbixCA
# TLSFrontendCertSubject=CN=zabbix-frontend-node

Pēc tam restartējiet serveri:

sudo systemctl restart zabbix-server

4. Konfigurējiet Zabbix lietotāja saskarni.

Web saskarnes instalēšanas laikā iespējojiet opciju Encrypt connections from Web interface (un, ja nepieciešams, opciju Verify server certificate issuer and subject) un aizpildiet laukus TLS CA file, TLS key file, TLS certificate file (un, ja nepieciešams, laukus Server TLS certificate issuer un Server TLS certificate subject):

Parameter Description
TLS CA file Norādiet pilnu ceļu uz sertificēšanas iestādes (CA) sertifikāta failu, kas tiek izmantots servera sertifikāta pārbaudei.
TLS key file Norādiet pilnu ceļu uz klienta privātās atslēgas failu, kas atbilst klienta sertifikātam.
TLS certificate file Ja nepieciešama savstarpēja TLS autentifikācija, norādiet pilnu ceļu uz klienta sertifikāta failu.
Server TLS certificate issuer Norādiet izdevēja atšķirīgo nosaukumu (DN), kas jāsalīdzina ar servera sertifikātu.
Server TLS certificate subject Norādiet subjekta atšķirīgo nosaukumu (DN), kas jāsalīdzina ar servera sertifikātu.

Esošās instalācijās rediģējiet tālāk norādītos laukus failā zabbix.conf.php:

$ZBX_SERVER_TLS['ACTIVE'] = '1';
$ZBX_SERVER_TLS['CA_FILE'] = '/etc/zabbix/ssl/ca.crt';
$ZBX_SERVER_TLS['KEY_FILE'] = '/etc/zabbix/ssl/frontend.key';
$ZBX_SERVER_TLS['CERT_FILE'] = '/etc/zabbix/ssl/frontend.crt';
// Pēc izvēles:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';

5. Pārbaudiet šifrēšanu, pārliecinoties, ka Zabbix lietotāja saskarnē vai Zabbix servera žurnālfailā nav kļūdu ziņojumu:

tail -f /var/log/zabbix/zabbix_server.log

Problēmu novēršana

Nepareiza vai nepilnīga TLS konfigurācija var izraisīt kļūdas Zabbix lietotāja saskarnē vai norādīt, ka Zabbix serveris darbojas, taču savienojums nav veiksmīgi izveidots:

Lai identificētu precīzu konfigurācijas problēmu, iestatiet Zabbix servera žurnāla līmeni uz 4, atkārtojiet kļūdu lietotāja saskarnē un pārbaudiet Zabbix servera žurnālu, lai atrastu atbilstošo kļūdas ziņojumu.

Tālāk aprakstīti biežākie kļūdu gadījumi un to iespējamie cēloņi.

Lietotāja saskarnes IP adrese nav atļauta

Zabbix servera žurnālā ir ietverts līdzīgs kļūdas ziņojums:

54283:20260819:105926.400 frontend connection from "127.0.0.1" is not allowed by FrontendAllowedIP

Savienojums tiek pārtraukts pēc TCP rokasspiediena, jo lietotāja saskarnes IP adrese nav autorizēta.

Pievienojiet lietotāja saskarnes IP adresi parametram FrontendAllowedIP failā zabbix_server.conf un restartējiet Zabbix serveri.

Nešifrēts savienojums nav atļauts

Zabbix servera žurnālā ir ietverts kļūdas ziņojums, kas līdzīgs šim:

56884:20260819:111154.285 frontend connection of type "unencrypted" is not allowed by TLSFrontendAccept

Zabbix serveris ir konfigurēts pieņemt tikai TLS savienojumus, piemēram, ar TLSFrontendAccept=cert, taču lietotāja saskarne mēģina izveidot savienojumu bez šifrēšanas.

Iespējojiet lietotāja saskarnes šifrēšanu un konfigurējiet nepieciešamos TLS failus failā zabbix.conf.php, kā aprakstīts sadaļas Configuration 4. darbībā.

Lietotāja saskarne mēģina izmantot TLS, kamēr serveris sagaida nešifrētu savienojumu

Zabbix servera žurnālā ir ietverts kļūdas ziņojums, kas līdzīgs šim:

61091:20260819:115916.019 End of zbx_tls_accept():FAIL error:'TLS handshake set result code to 1: file ../ssl/record/rec_layer_s3.c line 317 func ssl3_read_n: error:0A000126:SSL routines::unexpected eof while reading: TLS write fatal alert "decode error"'

Precīzs kļūdas ziņojums ir atkarīgs no OpenSSL versijas.

Zabbix serveris ir konfigurēts pieņemt tikai nešifrētus savienojumus, piemēram, izmantojot TLSFrontendAccept=unencrypted, kamēr lietotāja saskarne mēģina izveidot TLS savienojumu.

Konfigurējiet Zabbix serveri TLS savienojumu pieņemšanai, iestatot TLSFrontendAccept=cert un definējot TLSCertFile un TLSKeyFile failā zabbix_server.conf. Varat arī atspējot lietotāja saskarnes šifrēšanu failā zabbix.conf.php.

Lietotāja saskarnes sertifikāts nav uzticams

Zabbix servera žurnālā ir ietverts kļūdas ziņojums, kas līdzīgs šim:

62248:20260819:124203.812 End of zbx_tls_accept():FAIL error:'self-signed certificate: TLS handshake set result code to 1: file ../ssl/statem/statem_srvr.c line 3522 func tls_process_client_certificate: error:0A000086:SSL routines::certificate verify failed: TLS write fatal alert "unknown CA"'

Lietotāja saskarne uzrādīja sertifikātu, taču Zabbix serveris neuzticas sertifikācijas iestādei (CA), kas to parakstīja.

Tāda pati problēma var tikt parādīta arī lietotāja saskarnes sistēmas informācijā:

fread(): SSL operation failed with code 1. OpenSSL Error messages:

error:0A000418:SSL routines::tlsv1 alert unknown ca [zabbix.php:17 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → Widgets\SystemInfo\Actions\WidgetView->doAction() → CSystemInfoHelper::getData() → CSystemInfoHelper::getServerStatus() → CZabbixServer->getStatus() → CZabbixServer->request() → fread() → CConfigFile->{closure:/user/share/conf/zabbix.conf.php:89}() in conf/zabbix.conf.php:95]

Lietotāja saskarnē var tikt parādīts arī ziņojums “Incorrect response received from Zabbix server "localhost"”.

Pārbaudiet, vai lietotāja saskarnes sertifikātu ir parakstījusi CA, kas norādīta TLSCAFile parametrā failā zabbix_server.conf.

TLS atslēgas fails nav lasāms

Lietotāja saskarnē var tikt parādīts ziņojums “TLS atslēgas fails: fails nav lasāms.”

Var tikt parādīts arī ziņojums “Nevar izveidot savienojumu ar Zabbix serveri TLS iestatījumu dēļ. Dažas funkcijas nav pieejamas.”

Tīmekļa servera lietotājam nav pietiekamu atļauju, lai lasītu vienu vai vairākus zabbix.conf.php konfigurētos sertifikāta, atslēgas vai CA failus. Tas var notikt, ja sertifikātu faili tiek glabāti ierobežotas piekļuves direktorijā, piemēram, /root/ vai lietotāja mājas direktorijā.

Pārvietojiet sertifikātu failus uz direktoriju, kurai var piekļūt tīmekļa serveris, un iestatiet atbilstošas atļaujas, kā aprakstīts Configuration 2. darbībā.

TLS faili ir nederīgi vai bojāti

Lietotāja saskarnē var tikt parādīts paziņojums “Nevar izveidot savienojumu ar Zabbix serveri TLS iestatījumu dēļ. Dažas funkcijas nav pieejamas.”.

Tas var notikt, ja konfigurētie sertifikāta vai atslēgas faili pastāv un ir nolasāmi, bet to saturs ir tukšs, bojāts vai citādi nederīgs. Šādā gadījumā lietotāja saskarne neizveido savienojumu ar Zabbix serveri, un Zabbix servera žurnālā netiek reģistrēts atbilstošs savienojuma mēģinājums.

Pārbaudiet, vai sertifikāta un atslēgas faili satur derīgus, pareizi formatētus datus un vai privātā atslēga atbilst sertifikātam.