1 Sertifikātu izmantošana

Pārskats

Zabbix var izmantot RSA sertifikātus PEM formātā, ko parakstījusi publiska vai iekšēja sertifikātu iestāde (CA).

Sertifikātu verifikācija tiek veikta, salīdzinot ar iepriekš konfigurētu CA sertifikātu. Pēc izvēles var izmantot sertifikātu atsaukšanas sarakstus (CRL).

Katram Zabbix komponentam var būt konfigurēts tikai viens sertifikāts.

Plašāku informāciju par iekšējas CA iestatīšanu un uzturēšanu, sertifikātu pieprasījumu ģenerēšanu un parakstīšanu, kā arī sertifikātu atsaukšanu skatiet pamācībās, piemēram, OpenSSL PKI Tutorial v2.0.

Rūpīgi izvērtējiet un pārbaudiet savus sertifikātu paplašinājumus. Plašāku informāciju skatiet sadaļā X.509 v3 sertifikātu paplašinājumu izmantošanas ierobežojumi.

Sertifikātu konfigurācijas parametri

Tālāk norādītie konfigurācijas parametri tiek atbalstīti sertifikātu iestatīšanai Zabbix komponentos.

Parametrs Obligāts Apraksts
TLSCAFile Pilns ceļš līdz failam, kas satur augstākā līmeņa CA sertifikātus vienādranga sertifikāta pārbaudei.
Ja tiek izmantota sertifikātu ķēde ar vairākiem elementiem, sakārtojiet sertifikātus tā, lai vispirms būtu zemāka līmeņa CA sertifikāti, pēc tam augstāka līmeņa CA sertifikāti.
Viena faila sastāvā var iekļaut vairāku CA sertifikātus.
TLSCRLFile Pilns ceļš līdz failam, kas satur sertifikātu atsaukšanas sarakstus (CRL).
TLSCertFile Pilns ceļš līdz failam, kas satur sertifikātu.
Ja tiek izmantota sertifikātu ķēde ar vairākiem elementiem, sakārtojiet sertifikātus tā, lai vispirms būtu servera, starpniekservera vai aģenta sertifikāts, pēc tam zemāka līmeņa CA sertifikāti, un noslēgumā augstāka līmeņa CA sertifikāti.
TLSKeyFile Pilns ceļš līdz failam, kas satur privāto atslēgu.
Nodrošiniet, lai šo failu varētu lasīt tikai Zabbix lietotājs, iestatot atbilstošas piekļuves tiesības.
TLSServerCertIssuer Atļautais servera sertifikāta izdevējs.
TLSServerCertSubject Atļautais servera sertifikāta subjekts.

Konfigurācijas piemēri

Pēc nepieciešamo sertifikātu iestatīšanas konfigurējiet Zabbix komponentus, lai izmantotu uz sertifikātiem balstītu šifrēšanu.

Tālāk ir sniegti detalizēti soļi, kā konfigurēt:

Zabbix serveris

1. Sagatavojiet CA sertifikāta failu.

Lai verificētu otras puses sertifikātus, Zabbix serverim jābūt piekļuvei failam, kas satur augstākā līmeņa, pašparakstītos saknes CA sertifikātus. Piemēram, ja ir nepieciešami sertifikāti no divām neatkarīgām saknes CA, ievietojiet tos failā /home/zabbix/zabbix_ca_file.crt:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
            ...
        Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
            ...
        X509v3 extensions:
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Basic Constraints: critical
                CA:TRUE
            ...
-----BEGIN CERTIFICATE-----
MIID2jCCAsKgAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
....
9wEzdN8uTrqoyU78gi12npLj08LegRKjb5hFTVmO
-----END CERTIFICATE-----
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA
            ...
        Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
            ....
        X509v3 extensions:
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Basic Constraints: critical
                CA:TRUE
            ....       
-----BEGIN CERTIFICATE-----
MIID3DCCAsSgAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQB
...
vdGNYoSfvu41GQAR5Vj5FnRJRzv5XQOZ3B6894GY1zY=
-----END CERTIFICATE-----

2. Ievietojiet Zabbix servera sertifikātu/sertifikātu ķēdi failā, piemēram, /home/zabbix/zabbix_server.crt. Pirmais sertifikāts ir Zabbix servera sertifikāts, kam seko starpniek-CA sertifikāts:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
        ...
        Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix server
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                ...
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Basic Constraints: 
                CA:FALSE
            ...
-----BEGIN CERTIFICATE-----
MIIECDCCAvCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixk
...
h02u1GHiy46GI+xfR3LsPwFKlkTaaLaL/6aaoQ==
-----END CERTIFICATE-----
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2 (0x2)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
        ...
        Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
            ...
        X509v3 extensions:
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
        ...
-----BEGIN CERTIFICATE-----
MIID4TCCAsmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
...
dyCeWnvL7u5sd6ffo8iRny0QzbHKmQt/wUtcVIvWXdMIFJM0Hw==
-----END CERTIFICATE-----

Izmantojiet tikai iepriekš minētos atribūtus gan klienta, gan servera sertifikātiem, lai neietekmētu sertifikātu verificēšanas procesu. Piemēram, OpenSSL var neizdoties izveidot šifrētu savienojumu, ja tiek izmantoti X509v3 Subject Alternative Name vai Netscape Cert Type paplašinājumi. Plašāku informāciju skatiet sadaļā Ierobežojumi X.509 v3 sertifikātu paplašinājumu izmantošanā.

3. Ievietojiet Zabbix servera privāto atslēgu failā, piemēram, /home/zabbix/zabbix_server.key:

-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
...
IJLkhbybBYEf47MLhffWa7XvZTY=
-----END PRIVATE KEY-----

4. Rediģējiet TLS konfigurācijas parametrus Zabbix servera konfigurācijas failā:

TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSCertFile=/home/zabbix/zabbix_server.crt
TLSKeyFile=/home/zabbix/zabbix_server.key
Zabbix starpniekserveris

1. Sagatavojiet failus ar augstākā līmeņa CA sertifikātiem, Zabbix starpniekservera sertifikātu/sertifikātu ķēdi un privāto atslēgu, kā aprakstīts sadaļā Zabbix serveris. Pēc tam attiecīgi rediģējiet parametrus TLSCAFile, TLSCertFile un TLSKeyFile Zabbix starpniekservera konfigurācijas failā.

2. Rediģējiet papildu TLS parametrus Zabbix starpniekservera konfigurācijas failā:

  • Aktīvam starpniekserverim: TLSConnect=cert
  • Pasīvam starpniekserverim: TLSAccept=cert

Lai uzlabotu starpniekservera drošību, varat iestatīt arī parametrus TLSServerCertIssuer un TLSServerCertSubject. Papildinformāciju skatiet sadaļā Atļautā sertifikāta izdevēja un subjekta ierobežošana.

TLS parametri galīgajā starpniekservera konfigurācijas failā var izskatīties šādi:

TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Zabbix server,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_proxy.crt
TLSKeyFile=/home/zabbix/zabbix_proxy.key

3. Konfigurējiet šim starpniekserverim šifrēšanu Zabbix lietotāja saskarnē:

  • Dodieties uz: Administration → Proxies.
  • Atlasiet starpniekserveri un noklikšķiniet uz cilnes Encryption.

Tālāk redzamajos piemēros lauki Issuer un Subject ir aizpildīti. Papildinformāciju par to, kāpēc un kā izmantot šos laukus, skatiet sadaļā Atļautā sertifikāta izdevēja un subjekta ierobežošana.

Aktīvam starpniekserverim:

Pasīvam starpniekserverim:

Zabbix aģents

1. Sagatavojiet failus ar augstākā līmeņa CA sertifikātiem, Zabbix aģenta sertifikātu/sertifikātu ķēdi un privāto atslēgu, kā aprakstīts sadaļā Zabbix serveris. Pēc tam attiecīgi rediģējiet parametrus TLSCAFile, TLSCertFile un TLSKeyFile Zabbix aģenta konfigurācijas failā.

2. Rediģējiet papildu TLS parametrus Zabbix aģenta konfigurācijas failā:

  • Aktīvajam aģentam: TLSConnect=cert
  • Pasīvajam aģentam: TLSAccept=cert

Lai uzlabotu aģenta drošību, varat iestatīt parametrus TLSServerCertIssuer un TLSServerCertSubject. Plašāku informāciju skatiet sadaļā Atļautā sertifikāta izdevēja un subjekta ierobežošana.

TLS parametri galīgajā aģenta konfigurācijas failā var izskatīties šādi. Ņemiet vērā, ka piemērā ir pieņemts, ka hosts tiek uzraudzīts ar starpniekserveri, tāpēc tas ir norādīts kā sertifikāta subjekts:

TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_agentd.crt
TLSKeyFile=/home/zabbix/zabbix_agentd.key

3. Konfigurējiet šifrēšanu Zabbix lietotāja saskarnē hostam, kuru uzrauga šis aģents.

  • Dodieties uz: Datu ievākšana → Hosti.
  • Atlasiet hostu un noklikšķiniet uz cilnes Šifrēšana.

Tālāk redzamajā piemērā lauki Izdevējs un Subjekts ir aizpildīti. Plašāku informāciju par to, kāpēc un kā izmantot šos laukus, skatiet sadaļā Atļautā sertifikāta izdevēja un subjekta ierobežošana.

Zabbix tīmekļa serviss

1. Sagatavojiet failus ar augstākā līmeņa CA sertifikātiem, Zabbix tīmekļa servisa sertifikātu/sertifikātu ķēdi un privāto atslēgu, kā aprakstīts sadaļā Zabbix serveris. Pēc tam attiecīgi rediģējiet parametrus TLSCAFile, TLSCertFile un TLSKeyFile Zabbix tīmekļa servisa konfigurācijas failā.

2. Rediģējiet papildu TLS parametru Zabbix tīmekļa servisa konfigurācijas failā: TLSAccept=cert

TLS parametri gala tīmekļa servisa konfigurācijas failā var izskatīties šādi:

TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSCertFile=/home/zabbix/zabbix_web_service.crt
TLSKeyFile=/home/zabbix/zabbix_web_service.key

3. Konfigurējiet Zabbix serveri, lai tas izveidotu savienojumu ar TLS konfigurēto Zabbix tīmekļa servisu, rediģējot parametru WebServiceURL Zabbix servera konfigurācijas failā:

WebServiceURL=https://example.com:443/report

Atļautā sertifikāta izdevēja un subjekta ierobežošana

Kad divi Zabbix komponenti (piemēram, serveris un aģents) izveido TLS savienojumu, tie pārbauda viens otra sertifikātus. Ja otras puses sertifikātu ir parakstījis uzticams CA (ar iepriekš konfigurētu augstākā līmeņa sertifikātu TLSCAFile), tas ir derīgs, tam nav beidzies derīguma termiņš un tas iztur citas pārbaudes, tad saziņa starp komponentiem var turpināties. Šajā vienkāršākajā gadījumā sertifikāta izdevējs un subjekts netiek pārbaudīti.

Tomēr tas rada risku: ikviens, kam ir derīgs sertifikāts, var uzdoties par jebkuru citu (piemēram, hosta sertifikātu var izmantot, lai uzdotos par serveri). Lai gan tas var būt pieņemami nelielās vidēs, kur sertifikātus paraksta īpašs iekšējs CA un uzdošanās risks ir zems, lielākās vai pret drošību jutīgākās vidēs ar to var nepietikt.

Ja jūsu augstākā līmeņa CA izsniedz sertifikātus, kurus Zabbix nevajadzētu pieņemt, vai ja vēlaties samazināt uzdošanās risku, varat ierobežot atļautos sertifikātus, norādot to izdevēju un subjektu.

Piemēram, Zabbix starpniekservera konfigurācijas failā var norādīt:

TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Zabbix server,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com

Izmantojot šos iestatījumus, aktīvs starpniekserveris nesazināsies ar Zabbix serveri, kura sertifikātam ir cits izdevējs vai subjekts. Līdzīgi arī pasīvs starpniekserveris nepieņems pieprasījumus no šāda servera.

Issuer un Subject virkņu atbilstības noteikumi

Issuer un Subject virkņu atbilstības noteikumi ir šādi:

  • Issuer un Subject virknes tiek pārbaudītas neatkarīgi. Abas ir neobligātas.
  • Nenorādīta virkne nozīmē, ka tiek pieņemta jebkura virkne.
  • Virknes tiek salīdzinātas kā ir, un tām ir jāsakrīt precīzi.
  • Tiek atbalstītas UTF-8 rakstzīmes. Tomēr aizstājējzīmes (*) vai regulārās izteiksmes netiek atbalstītas.
  • Ir ieviestas šādas RFC 4514 prasības — rakstzīmes, kurām nepieciešama atsoļošana (ar atpakaļslīpsvītru '\', U+005C):
    • jebkurā virknes vietā: '"' (U+0022), '+' (U+002B), ',' (U+002C), ';' (U+003B), '<' (U+003C), '>' (U+003E), '\\' (U+005C);
    • virknes sākumā: atstarpe (' ', U+0020) vai numura zīme ('#', U+0023);
    • virknes beigās: atstarpe (' ', U+0020).
  • Nulles rakstzīmes (U+0000) netiek atbalstītas. Ja tiek konstatēta nulles rakstzīme, atbilstības pārbaude neizdosies.
  • RFC 4517 un RFC 4518 standarti netiek atbalstīti.

Piemēram, ja Issuer un Subject organizācijas (O) virknēs ir atstarpes beigās un Subject organizatoriskās vienības (OU) virknē ir dubultpēdiņas, šīs rakstzīmes ir jāatsoļo:

TLSServerCertIssuer=CN=Signing CA,OU=Development head,O=\ Example SIA\ ,DC=example,DC=com
TLSServerCertSubject=CN=Zabbix server,OU=Development group \"5\",O=\ Example SIA\ ,DC=example,DC=com
Lauku secība un formatējums

Zabbix ievēro RFC 4514 ieteikumus, kas šiem laukiem nosaka "apgrieztu" secību, sākot ar zemākā līmeņa laukiem (CN), turpinot ar vidējā līmeņa laukiem (OU, O) un noslēdzot ar augstākā līmeņa laukiem (DC).

TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com

Turpretī OpenSSL pēc noklusējuma attēlo Issuer un Subject virknes secībā no augstākā līmeņa uz zemāko līmeni. Tālāk redzamajā piemērā Issuer un Subject lauki sākas ar augstākā līmeņa (DC) lauku un beidzas ar zemākā līmeņa (CN) lauku. Arī formatējums ar atstarpēm un lauku atdalītājiem atšķiras atkarībā no izmantotajām opcijām, tādēļ tas neatbildīs Zabbix prasītajam formātam.

$ openssl x509 -noout -in /home/zabbix/zabbix_proxy.crt -issuer -subject
issuer= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Development group/CN=Signing CA
subject= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Development group/CN=Zabbix proxy

$ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt
Certificate:
    ...
        Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
        ...
        Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix proxy

Lai Issuer un Subject virknes pareizi noformatētu lietošanai Zabbix, izsauciet OpenSSL ar šādām opcijām:

$ openssl x509 -noout -issuer -subject \
    -nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname\
    -in /home/zabbix/zabbix_proxy.crt

Tad izvade būs apgrieztā secībā, ar komatiem atdalīta, un to varēs izmantot Zabbix konfigurācijas failos un lietotāja saskarnē:

issuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
subject=CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com

X.509 v3 sertifikātu paplašinājumu izmantošanas ierobežojumi

Ieviešot X.509 v3 sertifikātus Zabbix vidē, daži paplašinājumi var netikt pilnībā atbalstīti vai var izraisīt nekonsekventu darbību.

Subject Alternative Name paplašinājums

Zabbix neatbalsta Subject Alternative Name paplašinājumu, ko izmanto alternatīvu DNS nosaukumu, piemēram, IP adrešu vai e-pasta adrešu, norādīšanai. Zabbix var pārbaudīt tikai sertifikāta Subject laukā esošo vērtību (skatiet Atļautā sertifikāta izdevēja un subjekta ierobežošana). Ja sertifikāti ietver subjectAltName lauku, sertifikāta validācijas rezultāts var atšķirties atkarībā no konkrētajiem kriptogrāfiskajiem rīkkopām, kas izmantotas Zabbix komponentu kompilēšanai. Rezultātā Zabbix var vai nu pieņemt, vai noraidīt sertifikātus atkarībā no šo kombināciju īpatnībām.

Extended Key Usage paplašinājums

Zabbix atbalsta Extended Key Usage paplašinājumu. Tomēr, ja tas tiek izmantots, parasti ir nepieciešams norādīt abus atribūtus — clientAuth (TLS WWW klienta autentifikācijai) un serverAuth (TLS WWW servera autentifikācijai). Piemēram:

  • Pasīvajās pārbaudēs, kur Zabbix aģents darbojas kā TLS serveris, aģenta sertifikātā jābūt iekļautam atribūtam serverAuth.
  • Aktīvajām pārbaudēm, kur aģents darbojas kā TLS klients, aģenta sertifikātā jābūt iekļautam atribūtam clientAuth.

Lai gan GnuTLS var izdot brīdinājumu par atslēgas lietojuma pārkāpumiem, tas parasti ļauj saziņai turpināties, neskatoties uz šiem brīdinājumiem.

Name Constraints paplašinājums

Name Constraints paplašinājuma atbalsts dažādās kriptogrāfiskajās rīkkopās atšķiras. Pārliecinieties, ka jūsu izvēlētā rīkkopa atbalsta šo paplašinājumu. Šis paplašinājums var ierobežot Zabbix iespēju ielādēt CA sertifikātus, ja šī sadaļa ir atzīmēta kā kritiska, atkarībā no izmantotās rīkkopas.

Sertifikātu atsaukšanas saraksti (CRL)

Ja sertifikāts ir kompromitēts, sertifikācijas iestāde (CA) var to atsaukt, iekļaujot sertifikātu sertifikātu atsaukšanas sarakstā (CRL). CRL tiek pārvaldīti, izmantojot konfigurācijas failus, un tos var norādīt ar parametru TLSCRLFile servera, starpniekservera un aģenta konfigurācijas failos. Piemēram:

TLSCRLFile=/home/zabbix/zabbix_crl_file.crt

Šajā gadījumā zabbix_crl_file.crt var saturēt CRL no vairākām CA, un tas var izskatīties šādi:

-----BEGIN X509 CRL-----
MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
...
treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
-----END X509 CRL-----
-----BEGIN X509 CRL-----
MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t
...
CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs=
-----END X509 CRL-----

CRL fails tiek ielādēts tikai Zabbix palaišanas laikā. Lai atjauninātu CRL, restartējiet Zabbix.

Ja Zabbix komponenti ir kompilēti ar OpenSSL un tiek izmantoti CRL, pārliecinieties, ka katrai augstākā līmeņa un starpposma CA sertifikātu ķēdēs ir atbilstošs CRL (pat ja tas ir tukšs), kas iekļauts TLSCRLFile.