1 Коришћење сертификата

Преглед

Zabbix може да користи RSA сертификате у PEM формату, потписане од стране јавног или интерног ауторитета за сертификате (CA).

Верификација сертификата се врши у односу на унапред конфигурисани CA сертификат. Опционо, могу се користити Листе опозива сертификата (CRL).

Свака Zabbix компонента може имати конфигурисан само један сертификат.

За више информација о подешавању и раду интерног CA, генерисању и потписивању захтева за сертификате и опозивању сертификата, погледајте туторијале као што је OpenSSL PKI Tutorial v2.0.

Пажљиво размотрите и тестирајте проширења својих сертификата. За више детаља, погледајте Ограничења коришћења X.509 v3 проширења сертификата.

Параметри конфигурације сертификата

Следећи параметри конфигурације су подржани за подешавање сертификата на Zabbix компонентама.

Parameter Mandatory Description
TLSCAFile yes Пуна путања датотеке која садржи сертификате CA највишег нивоа за верификацију сертификата вршњака.
Ако користите ланац сертификата са више чланова, прво поређајте сертификате са сертификатима CA нижег нивоа, а затим сертификате CA вишег нивоа.
Сертификати из више CA могу бити укључени у једну датотеку.
TLSCRLFile no Пуна путања датотеке која садржи Листе опозваних сертификата (CRL).
TLSCertFile yes Пуна путања датотеке која садржи сертификат.
Ако користите ланац сертификата са више чланова, поређајте сертификате тако да прво буду сертификати сервера, проксија или агента, затим сертификати CA нижег нивоа, и на крају сертификати CA вишег нивоа.
TLSKeyFile yes Пуна путања датотеке која садржи приватни кључ.
Уверите се да ову датотеку може да чита само Zabbix корисник подешавањем одговарајућих права приступа.
TLSServerCertIssuer no Дозвољени издавалац сертификата сервера.
TLSServerCertSubject no Дозвољени субјект сертификата сервера.

Примери конфигурације

Након подешавања потребних сертификата, конфигуришите Zabbix компоненте да користе шифровање засновано на сертификатима.

Испод су детаљни кораци за конфигурисање:

Zabbix сервер

1. Припремите датотеку CA сертификата.

Да би верификовао peer сертификате, Zabbix сервер мора имати приступ датотеци која садржи самопотписане коренске CA сертификате највишег нивоа. На пример, ако су потребни сертификати од два независна коренска сертификациона ауторитета (CA), ставите их у датотеку на /home/zabbix/zabbix_ca_file.crt:

Сертификат:
       Подаци:
       Верзија: 3 (0x2)
       Серијски број: 1 (0x1)
       Алгоритам потписа: sha1WithRSAEncryption
       Издавалац: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
       ...
       Наслов: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
       Информације о јавном кључу субјекта:
       Алгоритам јавног кључа: rsaEncryption
       Јавни кључ: (2048 бита)
       ...
       X509v3 екстензије:
       X509v3 Употреба кључа: критично
       Потпис сертификата, CRL Sign
       CA:TRUE
       ...
       -----ПОЧЕТАК СЕРТИФИКАТА-----
       MIID2jCCAsKgAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
       ....
       9wEzdN8uTrqoyU78gi12npLj08LegRKjb5hFTVmO
       -----КРАЈ СЕРТИФИКАТА-----
       сертификат:
           Подаци:
               Верзија: 3 (0x2)
               Серијски број: 1 (0x1)
           Алгоритам потписа: sha1WithRSAEncryption
               Издавач: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA
       ...
               Предмет:  DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA
               Информације о јавном кључу субјекта:
              Алгоритам јавног кључа: rsaEncryption
             Јавни кључ: (2048 бита)
       ....
       X509v3 екстензије:
       X509v3 употреба кључа: критична
       Потпис сертификата, CRL Sign
       Основна ограничења X509v3: критична
       CA:TRUE
       ....
       -----ПОЧЕТАК СЕРТИФИКАТА-----
       MIID3DCCAsSgAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQB
       ...
       vdGNYoSfvu41GQAR5Vj5FnRJRzv5XQOZ3B6894GY1zY=
       -----КРАЈ СЕРТИФИКАТА-----

2. Поставите сертификат/ланац сертификата Zabbix сервера у датотеку, на пример, на /home/zabbix/zabbix_server.crt. Први сертификат је сертификат Zabbix сервера, а затим следи средњи CA сертификат:

Сертификат:
       Подаци:
       Верзија: 3 (0x2)
       Серијски број: 1 (0x1)
       Алгоритам потписа: sha1WithRSAEncryption
       Издавалац: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
       ...
       Наслов: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix server
       Информације о јавном кључу субјекта:
       Алгоритам јавног кључа: rsaEncryption
       Јавни кључ: (2048 бита)
       ...
       X509v3 екстензије:
       X509v3 употреба кључа: критична
       Дигитални потпис, шифровање кључа
       X509v3 основна ограничења:
       CA:FALSE
       ...
       -----ПОЧЕТАК СЕРТИФИКАТА-----
       MIIECDCCAvCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixk
       ...
       h02u1GHiy46GI+xfR3LsPwFKlkTaaLaL/6aaoQ==
       -----КРАЈ СЕРТИФИКАТА-----
       сертификат:
           Подаци:
               Верзија: 3 (0x2)
               Серијски број: 2 (0x2)
               Алгоритам потписа: sha1WithRSAEncryption
               Издавач: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA
               ...
               Предмет: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA
               Информације о јавном кључу субјекта:
               Алгоритам јавног кључа: rsaEncryption
               Јавни кључ: (2048 бита)
       ...
       X509v3 екстензије:
       X509v3 Употреба кључа: критична
       Потпис сертификата, CRL Sign
       X509v3 Основна ограничења: критична
       CA:TRUE, pathlen:0
       ...
       -----ПОЧЕТАК СЕРТИФИКАТА-----
       MIID4TCCAsmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB
       ...
       dyCeWnvL7u5sd6ffo8iRny0QzbHKmQt/wUtcVIvWXdMIFJM0Hw==
       -----КРАЈ СЕРТИФИКАТА-----

Користите само атрибуте поменуте горе за клијентске и серверске сертификате како бисте избегли утицај на процес верификације сертификата. На пример, OpenSSL можда неће успети да успостави шифровану везу ако се користе екстензије X509v3 Subject Alternative Name или Netscape Cert Type. За више информација погледајте Ограничења коришћења екстензија сертификата X.509 v3.

3. Поставите приватни кључ Zabbix сервера у датотеку, на пример, на /home/zabbix/zabbix_server.key:

-----ПОЧЕТАК ПРИВАТНОГ КЉУЧА-----
       MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
       ...
       IJLkhbybBYEf47MLhffWa7XvZTY=
       -----КРАЈ ПРИВАТНОГ КЉУЧА-----

4. Измените параметре конфигурације TLS-а у конфигурационој датотеци Zabbix сервера:

TLSCAFile=/home/zabbix/zabbix_ca_file
       TLSCertFile=/home/zabbix/zabbix_server.crt
       TLSKeyFile=/home/zabbix/zabbix_server.key
Zabbix прокси
  1. Припремите датотеке са CA сертификатима највишег нивоа, Zabbix прокси сертификатом/ланцем сертификата и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile, TLSCertFile и TLSKeyFile у Zabbix прокси конфигурационој датотеци у складу са тим.

  2. Уредите додатне TLS параметре у Zabbix прокси конфигурационој датотеци:

  • За активни прокси: TLSConnect=cert
  • За пасивни прокси: TLSAccept=cert

Да бисте побољшали безбедност проксија, можете подесити и параметре TLSServerCertIssuer и TLSServerCertSubject. За више информација, погледајте Ограничавање дозвољеног издаваоца сертификата и субјекта.

TLS параметри у коначној конфигурационој датотеци проксија могу изгледати на следећи начин:

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

3. Конфигуришите шифровање за овај прокси у Zabbix кориснички интерфејс:

  • Идите на: Администрација → Проксији.
  • Изаберите прокси и кликните на картицу Шифровање.

У доњим примерима, поља Издавалац и Наслов су попуњена. За више информација о томе зашто и како користити ова поља, погледајте Ограничавање дозвољеног издаваоца сертификата и наслова.

За активни прокси:

За пасивни прокси:

Zabbix агент
  1. Припремите датотеке са CA сертификатима највишег нивоа, сертификатом/ланцем сертификата Zabbix агента и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile, TLSCertFile и TLSKeyFile у конфигурационој датотеци Zabbix агента у складу са тим.

  2. Уредите додатне TLS параметре у конфигурационој датотеци Zabbix агента:

  • За активног агента: TLSConnect=cert
  • За пасивног агента: TLSAccept=cert

Да бисте побољшали безбедност агента, можете подесити параметре TLSServerCertIssuer и TLSServerCertSubject. За више информација погледајте Ограничавање дозвољеног издаваоца сертификата и субјекта.

TLS параметри у коначној конфигурационој датотеци агента могу изгледати на следећи начин. Имајте на уму да пример претпоставља да домаћин прати прокси, па је наведен као наслов сертификата:

TLSConnect=cert
       TLSAccept=cert
       TLSCAFile=/home/zabbix/zabbix_ca_file
       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
  1. Конфигуришите шифровање у Zabbix кориснички интерфејс за домаћина који прати овај агент.
  • Идите на: Прикупљање података → Домаћини.
  • Изаберите домаћина и кликните на картицу Шифровање.

У доњем примеру, поља Издавалац и Наслов су попуњена. За више информација о томе зашто и како користити ова поља, погледајте Ограничавање дозвољеног издаваоца сертификата и наслова.

Zabbix веб сервис
  1. Припремите датотеке са CA сертификатима највишег нивоа, сертификатом/ланцем сертификата Zabbix веб сервиса и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile, TLSCertFile и TLSKeyFile у конфигурационој датотеци Zabbix веб сервиса у складу са тим.

  2. Измените додатни TLS параметар у конфигурационој датотеци Zabbix веб сервиса: TLSAccept=cert

TLS параметри у коначној конфигурационој датотеци веб сервиса могу изгледати овако:

TLSAccept=cert
       TLSCAFile=/home/zabbix/zabbix_ca_file
       TLSCertFile=/home/zabbix/zabbix_web_service.crt
       TLSKeyFile=/home/zabbix/zabbix_web_service.key
  1. Конфигуришите Zabbix сервер да се повеже са TLS-конфигурисаним Zabbix веб сервисом уређивањем параметра WebServiceURL у конфигурационој датотеци Zabbix сервера:
WebServiceURL=https://example.com

Ограничавање дозвољеног издаваоца сертификата и субјекта

Када две Zabbix компоненте (на пример, сервер и агент) успоставе TLS везу, оне међусобно валидирају сертификате. Ако је peer сертификат потписан од стране поузданог CA (са унапред конфигурисаним сертификатом највишег нивоа у TLSCAFile), важећи је, није истекао и прође друге провере, онда комуникација између компоненти може да се настави. У овом најједноставнијем случају, издавалац сертификата и субјект нису верификовани.

Међутим, ово представља ризик: свако ко има важећи сертификат може да се представља као било ко други (на пример, сертификат хоста може се користити за представљање сервера). Иако ово може бити прихватљиво у малим окружењима где сертификате потписује наменски интерни CA и ризик од представљања је низак, можда неће бити довољно у већим или окружењима осетљивијим на безбедност.

Ако ваш CA највишег нивоа издаје сертификате које Zabbix не би требало да прихвати или ако желите да смањите ризик од представљања, можете ограничити дозвољене сертификате тако што ћете навести њиховог издаваоца и субјекта.

На пример, у конфигурационој датотеци Zabbix проксија, можете навести:

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

Са овим подешавањима, активни прокси неће комуницирати са Zabbix сервером чији сертификат има другог издаваоца или тему. Слично томе, пасивни прокси неће прихватати захтеве са таквог сервера.

Правила за упаривање стрингова Issuer и Subject

Правила за упаривање стрингова Issuer и Subject су следећа:

  • Стрингови Issuer и Subject се проверавају независно. Оба су опциона.
  • Неодређени стринг значи да се прихвата било који стринг.
  • Стрингови се упоређују какви јесу и морају се тачно подударати.
  • Подржани су UTF-8 знакови. Међутим, џокери (*) или регуларни изрази нису подржани.
  • Следећи захтеви RFC 4514 су имплементирани - знакови који захтевају излаз (са обрнутом косом цртом '\', U+005C):
  • било где у стрингу: '"' (U+0022), '+' (U+002B), ',' (U+002C), ';' (U+003B), '<' (U+003C), '>' (U+003E), '\\' (U+005C);
  • на почетку стринга: размак (' ', U+0020) или знак броја ('#', U+0023);
  • на крају стринга: размак (' ', U+0020).
  • Нулти знакови (U+0000) нису подржани. Ако се наиђе на празан знак, подударање неће успети.
  • Стандарди RFC 4517 и RFC 4518 нису подржани.

На пример, ако стрингови организације Issuer и Subject (O) садрже размаке на крају, а стринг организационе јединице Subject (OU) садржи двоструке наводнике, ови знакови морају бити избегнути:

TLSServerCertIssuer=CN=Signing CA,OU=Development head,O=\ Example SIA\ ,DC=example,DC=com
       TLSServerCertSubject=CN=Zabbix сервер,OU=Development group \"5\",O=\ Example SIA\ ,DC=example,DC=com
Редослед и форматирање поља

Zabbix прати препоруке RFC 4514, који одређује „обрнути“ редослед за ова поља, почевши од поља најнижег нивоа (CN), преко поља средњег нивоа (OU, O), и завршавајући са пољима највишег нивоа (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

Насупрот томе, OpenSSL подразумевано приказује стрингове Issuer и Subject редоследом од највишег до најнижег нивоа. У следећем примеру, поља „Издавалац“ и „Наслов“ почињу пољем највишег нивоа („DC“) и завршавају се пољем нижег нивоа („CN“). Форматирање размацима и сепараторима поља такође варира у зависности од коришћених опција и стога се неће подударати са форматом који захтева Zabbix.

$ опенссл к509 -нооут -ин /хоме/заббик/заббик_проки.црт -издавач -субјецт
       издавач= /ДЦ=цом/ДЦ=заббик/О=Заббик СИА/ОУ=Развојна група/ЦН=Потписујући ЦА
       субјецт= /ДЦ=цом/ДЦ=заббик/О=Заббик СИА/ОУ=Развојна група/ЦН=Заббик проки

       $ опенссл к509 -нооут -тект -ин /хоме/заббик/заббик_проки.црт
       сертификат:
           ...
               Издавач: ДЦ=цом, ДЦ=заббик, О=Заббик СИА, ОУ=Развојна група, ЦН=потписни ЦА
               ...
               Предмет: ДЦ=цом, ДЦ=заббик, О=Заббик СИА, ОУ=Развојна група, ЦН=Заббик проки

Да бисте правилно форматирали низове Иссуер и Субјецт за Заббик, Позовите OpenSSL са следећим опцијама:

$ 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

Излаз ће тада бити у обрнутом редоследу, одвојен зарезима и употребљив у Zabbix конфигурационим датотекама и фронтенду:

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 екстензија сертификата

Приликом имплементације X.509 v3 сертификата унутар Zabbix-а, одређене екстензије можда неће бити у потпуности подржане или могу довести до недоследног понашања.

Екстензија за алтернативно име субјекта

Zabbix не подржава екстензију Алтернативно име субјекта, која се користи за одређивање алтернативних DNS имена као што су IP адресе или имејл адресе. Zabbix може само да валидира вредност у пољу Наслов сертификата (погледајте Ограничавање дозвољеног издаваоца сертификата и субјекта). Ако сертификати садрже поље subjectAltName, исход валидације сертификата може да варира у зависности од специфичних крипто алата који се користе за компајлирање Zabbix компоненти. Као резултат тога, Zabbix може или да прихвати или да одбије сертификате на основу ових комбинација.

Екстензија за проширену употребу кључа

Zabbix подржава екстензију Проширена употреба кључа. Међутим, ако се користи, генерално је потребно да буду наведени и атрибути clientAuth (за аутентификацију TLS WWW клијента) и serverAuth (за аутентификацију TLS WWW сервера). На пример:

  • Код пасивних провера, где Zabbix агент ради као TLS сервер, атрибут serverAuth мора бити укључен у сертификат агента.

  • Код активних провера, где агент ради као TLS клијент, атрибут clientAuth мора бити укључен у сертификат агента.

Иако GnuTLS може издати упозорење за кршења употребе кључа, обично дозвољава да се комуникација настави упркос овим упозорењима.

Проширење „Ограничења имена“

Подршка за проширење Ограничења имена варира међу крипто алатима. Уверите се да изабрани алат подржава ово проширење. Ово проширење може ограничити Zabbix у учитавању CA сертификата ако је овај одељак означен као критичан, у зависности од специфичног алата који се користи.

Листе опозваних сертификата (CRL)

Ако је сертификат угрожен, ауторитет за издавање сертификата (CA) може га опозвати укључивањем сертификата у Листу опозваних сертификата (CRL). CRL-овима се управља путем конфигурационих датотека и могу се навести помоћу параметра TLSCRLFile у конфигурационим датотекама сервера, проксија и агента. На пример:

TLSCRLFile=/home/zabbix/zabbix_crl_file.crt

У овом случају, zabbix_crl_file.crt може да садржи CRL-ове од више CA и може да изгледа овако:

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

CRL датотека се учитава само када се Zabbix покрене. Да бисте ажурирали CRL, поново покрените Zabbix.

Ако су Zabbix компоненте компајлиране са OpenSSL-ом и користе се CRL-ови, уверите се да сваки CA највишег нивоа и средњи у ланцима сертификата има одговарајући CRL (чак и ако је празан) укључен у TLSCRLFile.