9. Веб-мониторинг [Zabbix Documentation 4.0]

9. Веб-мониторинг [Zabbix Documentation 4.0] Сертификаты

Настройка шифрования для zabbix агента на основе сертификата

1. Подготовьте файлы с CA сертификатами верхнего уровня, сертификатом (цепочкой) агента и приватным ключем, как описано в Настройке сертификата на Zabbix сервере. Измените параметры TLSCAFile, TLSCertFile, TLSKeyFile в файле конфигурации агента соответственно.

2. При активных проверках измените TLSConnect параметр:

TLSConnect=cert

При пассивных проверках измените TLSAccept параметр:

TLSAccept=cert

3. Теперь у вас есть минимальная настройка агента на основе сертификата. Вы возможно захотите улучшить безопасность агента, указав параметры TLSServerCertIssuer и TLSServerCertSubject.(смотри Ограничение разрешенных Эмитента и Субъекта сертификата).

4. В конечном итоге параметры 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

(Пример предполагает, что хост наблюдается через прокси, отсюда Субъект сертификата прокси.)

5. Настройте шифрование этому агенту в веб-интерфейсе Zabbix:

В примере ниже поля Эмитент и Субъект заполнены – смотрите Ограничение разрешенных Эмитента и Субъекта сертификата о том, как использовать эти поля.

9. Веб-мониторинг [Zabbix Documentation 4.0]

Настройка шифрования для zabbix прокси на основе сертификата

1. Подготовьте файлы с CA сертификатами верхнего уровня, сертификатом (цепочкой) прокси и приватным ключем, как описано в Настройке сертификата на Zabbix сервере. Измените параметры TLSCAFile, TLSCertFile, TLSKeyFile в файле конфигурации прокси соответственно.

2. При активном прокси измените TLSConnect параметр:

TLSConnect=cert

При пассивном прокси измените TLSAccept параметр:

TLSAccept=cert

3. Теперь у вас есть минимальная настройка прокси на основе сертификата. Вы возможно захотите улучшить безопасность прокси, указав параметры TLSServerCertIssuer и TLSServerCertSubject (смотри Ограничение разрешенных Эмитента и Субъекта сертификата).

4. В конечном итоге параметры 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 server,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_proxy.crt
TLSKeyFile=/home/zabbix/zabbix_proxy.key

5. Настройте шифрование этому прокси в веб-интерфейсе Zabbix:

В примере ниже поля Эмитент и Субъект заполнены – смотрите Ограничение разрешенных Эмитента и Субъекта сертификата о том, как использовать эти поля.

При активном прокси

9. Веб-мониторинг [Zabbix Documentation 4.0]

При пассивном прокси

9. Веб-мониторинг [Zabbix Documentation 4.0]

Настройка аутентификации

Вкладка Аутентификация позволяет вам настроить опции аутентификации сценария.

9. Веб-мониторинг [Zabbix Documentation 4.0]

Параметры аутентификации:

ПараметрОписание
АутентификацияОпции аутентификации.
Пусто – без использования аутентификации.
Простая аутентификация – с использованием простой аутентификации.
NTLM аутентификация – с использованием NTLM (Windows NT LAN Manager) аутентификации.
Выбрав какой-либо метод аутентификации, будут доступны доступны два дополнительных поля для ввода имени пользователя и пароля.
Начиная с Zabbix 2.2, в полях имени пользователя и пароля можно использовать пользовательские макросы.
Проверка SSL узлаОтметьте для верификации SSL сертификата веб-сервера.
Сертификат сервера будет автоматически взят из места центра сертификации (CA) всей системы. Вы можете перезаписать расположение CA файлов, используя параметр конфигурации SSLCALocation в Zabbix сервере и прокси.
Этот параметр использует cURL опцию CURLOPT_SSL_VERIFYPEER.
Эта опция поддерживается начиная с Zabbix 2.4.
Проверка SSL хостаОтметьте для верификации, что поле Common Name или поле Subject Alternate Name сертификата веб-сервера совпадают.
Этот параметр использует cURL опцию CURLOPT_SSL_VERIFYHOST.
Эта опция поддерживается начиная с Zabbix 2.4.
Файл SSL сертификатаИмя файла SSL сертификата для аутентификации клиента. Файл сертификата должен быть в формате PEM1. Если файл сертификата также содержит и приватный ключ, оставьте поле Файл SSL ключа пустым. Если ключ зашифрован, укажите пароль в поле Пароль к SSL ключу. Папка, содержащая этот файл указывается в параметре конфигурации SSLCertLocation Zabbix сервера и прокси.
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_SSLCERT.
Эта опция поддерживается начиная с Zabbix 2.4.
Файл SSL ключаИмя файла приватного SSL ключа, который используется для аутентификации клиента. Файл приватного ключа должен быть в формате PEM1. Папка, содержащая этот файл указывается в параметре конфигурации SSLKeyLocation Zabbix сервера и прокси.
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_SSLKEY.
Эта опция поддерживается начиная с Zabbix 2.4.
Пароль к SSL ключуПароль к файлу приватного ключа.
В этом поле можно использовать пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_KEYPASSWD.
Эта опция поддерживается начиная с Zabbix 2.4.
Zabbix сервер подхватывает изменения в сертификатах без перезапуска.

Настройка сертификата на zabbix сервере

1. Для того, чтобы проверять сертификаты хостов, Zabbix сервер должен иметь доступ к файлу с их корневыми верхнего уровня самоподписными CA сертификатами.
Например, если мы ожидаем сертификаты от двух независимых корневых CA, мы можем поместить их сертификаты в файл
/home/zabbix/zabbix_ca_file, примерно следующим образом:

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. Поместите цепочку сертификатов Zabbix сервера в файл, например, /home/zabbix/zabbix_server.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=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-----

Здесь первым является сертификат Zabbix сервера, за ним промежуточные CA сертификат.

Про сертификаты:  Циперметрин 25 | Top-Ses

3. Поместите приватный ключ Zabbix сервера в файл, например, /home/zabbix/zabbix_server.key:

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

4. Измените параметры TLS в файле конфигурации Zabbix сервера, примерно так:

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

Настройка сценария

Для настройки веб-сценария:

Вкладка Сценарий позволяет вам настроить общие параметры веб-сценария.

9. Веб-мониторинг [Zabbix Documentation 4.0]

Все обязательные поля ввода отмечены красной звёздочкой.

Параметры сценария:

ПараметрОписание
Узел сетиИмя узла сети/шаблона к которому принадлежит сценарий.
ИмяУникальное имя сценария.
Начиная с Zabbix 2.2 поддерживаются пользовательские макросы и {HOST.*} макросы.
Группа элементов данныхВыберите группу элементов данных к которой будет принадлежать сценарий.
Элементы данных веб-сценария будут сгруппированы под выбранной группой элементов данных в Мониторинг→Последние данные.
Новая группа элементов данныхВведите название новой группы элементов данных для сценария.
Интервал обновленияКак часто сценарий будет выполняться.
Начиная с Zabbix 3.4.0, поддерживаются суффиксы времени, например, 30s, 1m, 2h, 1d.
Пользовательские макросы поддерживаются, начиная с 3.4.0.
Обратите внимание что, если используется пользовательский макрос и его значение изменилось (к примеру, 5m → 30s), следующая проверка будет выполнена в соответствии с предыдущим значением (в далеком будущем с примерами значений).
ПопытокКоличество попыток выполнения шагов веб-сценария. В случае сетевых проблем (превышено время ожидания, отсутствие подключения и прочего) Zabbix может повторить выполнение шагов несколько раз. Указанное количество будет одинаково действовать для каждого шаг сценария. Можно указать до 10 попыток, значение по умолчанию равно 1.
Примечание: Zabbix не повторит шаг из-за ошибочного кода ответа или несовпадении необходимой строки.
Данный параметр поддерживается начиная c Zabbix 2.2.
АгентВыбор агента клиента.
Zabbix будет представляться выбранным браузером. Полезно для мониторинга Веб-сайтов, которые генерируют различное содержимое для разных браузеров.
Начиная с Zabbix 2.2, в этом поле можно использовать пользовательские макросы.
HTTP прокси Вы можете указать необходимый HTTP прокси, следуя следующему формату: [протокол://][имя пользователя[:пароль]@]прокси.mycompany.com[:порт].
Эта опция задаёт CURLOPT_PROXY [en] опцию cURL.
Опциональный префикс протокол:// можно использовать, чтобы указать альтернативные протоколы прокси (поддержка префикса протокола добавлена в cURL 7.21.7). Если протокол не указан, прокси будет считаться HTTP прокси.
По умолчанию будет использоваться порт 1080.
Если указан, прокси заменит переменные окружения связанные с прокси такие как http_proxy, HTTPS_PROXY. Если не указан, переменные окружения не будут заменены. Введённое значение передается “как есть”, проверка правильности не производится.
Вы также можете указать адрес SOCKS прокси. Если вы укажите ошибочный протокол, подключение провалится и элемент данных станет неподдерживаемым.
Примечание: Для HTTP прокси поддерживается только простая аутентификация.

В этом поле можно использовать пользовательские макросы.
Данный параметр поддерживается начиная с Zabbix 2.2.

ПеременныеПеременные, которые можно использовать в шагах сценария (URL, переменные post).
Переменные имеют следующий формат:
{макрос1}=значение1
{макрос2}=значение2
{макрос3}=regex:<регулярное выражение>
Например:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex: hostid is ([0-9] )
На эти макросы затем можно ссылаться в шагах сценария, используя {username}, {password} и {hostid}. Zabbix автоматически заменит их на актуальные значения. Обратите внимание, что переменным с regex: требуется по крайней мере один шаг, чтобы получить значение с регулярного выражения, поэтому извлечённое значение можно применять только в последующих шагах.
Если часть значения начинается с regex:, тогда последующая часть обрабатывается как регулярное выражение, которое будет искать указанную часть веб-страницы, и если найдет, запомнит найденное значение в переменную. Должна присутствовать как минимум одна подгруппа так, чтобы найденные значения можно было извлечь.
Переменные, которые ищут совпадение части веб-страницы по регулярному выражению, поддерживаются начиная с Zabbix 2.2.
Пользовательские макросы и {HOST.*} макросы поддерживаются начиная с Zabbix 2.2.
Переменные автоматически URL кодируются, когда используются в полях запросов или в данных формы для переменных post, но их необходимо вручную URL кодировать, когда они используются в сыром post или напрямую в URL.
ЗаголовкиПользовательские HTTP заголовки, которые будут отправлены при выполнении запроса.
Заголовки следует передавать списком используя тот же синтаксис как они могут появиться в HTTP протоколе, опционально можно использовать некоторые дополнительные возможности поддерживаемые CURLOPT_HTTPHEADER опциями cURL.
Например: Accept-Charset:​ utf-8
Accept-Language:​ en-US
Content-Type:​ application/​xml;​ charset=utf-8
Пользовательские макросы и {HOST.*} макросы поддерживаются начиная с Zabbix 2.2.
Возможность указать пользовательские заголовки поддерживается начиная с Zabbix 2.4.
АктивированСценарий активирован, если параметр отмечен, в противном случае – деактивирован.

Обратите внимание, что при редактировании существующего сценария, в диалоге будут доступны две дополнительные кнопки:

Про сертификаты:  Сертификат соответствия ТС RU С-RU.АЯ51.В.00523, от 07 апреля 2016 г.

Вкладка Шаги позволит вам настроить шаги веб-сценария. Чтобы добавить шаг веб-сценария, нажмите на Добавить в блоке Шаги.

9. Веб-мониторинг [Zabbix Documentation 4.0]

Настройка шагов

9. Веб-мониторинг [Zabbix Documentation 4.0]

Параметры шага:

ПараметрОписание
ИмяУникальное имя шага.
Начиная с Zabbix 2.2, имя может содержать поддерживаемые макросы.
URLURL для подключения и получения данных. Например:
https://www.google.com
http://www.zabbix.com/download
Имена доментов можно указывать Юникод символами начиная с Zabbix 3.4. Они автоматически конвертируются методом punycode в ASCII при выполнении шага веб-сценария.
Кнопку Анализ можно использовать чтобы отделить из URL опциональные поля запроса (например, ?name=Admin&password=mypassword), переместив атрибуты и значения в Поля запроса, чтобы URL кодировка выполнялась автоматически.
Переменные можно использовать в URL, воспользовавшись синтаксисом {макрос}. Переменные можно URL кодировать вручную, используя {{макрос}.urlencode()} синтаксис.
Пользовательские макросы и {HOST.*} макросы поддерживаются начиная с Zabbix 2.2.
Ограничено 2048 символами начиная с Zabbix 2.4.
Поля запросаПеременные HTTP GET для URL.
Задаются в виде пар атрибутов и значений.
Значения URL кодируются автоматически. Значения с переменных сценария, пользовательских макросов или {HOST.*} макросов раскрываются и затем URL кодируются автоматически. При использовании {{макрос}.urlencode()} синтаксиса произойдёт двойная URL кодировка этих переменных.
Пользовательские макросы и {HOST.*} макросы поддерживаются начиная с Zabbix 2.2.
PostПеременные HTTP POST.
В Данные формы режиме задаются в виде пар атрибутов и значений.
Значения URL кодируются автоматически. Значения с переменных сценария, пользовательских макросов или {HOST.*} макросов раскрываются и затем URL кодируются автоматически.
В Сырые данные режиме, атрибуты/значения отображаются в одной строке и объединяются & символом.
Сырые значения можно URL кодировать/декодировать вручную, используя синтаксис {{макрос}.urlencode()} или {{макрос}.urldecode()}.
Например: id=2345&userid={user}
Если {user} задан переменной на уровне веб-сценария, он будет заменён своим значением при выполнении шага. Если вы желаете URL кодировать значение, замените {user} на {{user}.urlencode()}.
Пользовательские макросы и {HOST.*} макросы поддерживаются начиная с Zabbix 2.2.
ПеременныеСписок переменных на уровне шага, которые можно использовать в GET и POST функциях.
Задаются в виде пар атрибутов и значений.
Переменные на уровне шага переопределяют переменные уровня сценария и из предыдущих шагов. Однако, значение переменной с уровня шага влияет только на следующие шаги (а не на текущий шаг).
Такие переменные имеют следующий формат:
{макрос}=значение
{макрос}=regex:<регулярное выражение>
Более подробную информацию вы найдете в описании переменных уровня сценария.
Возможность использования переменных на уровне шага поддерживается начиная с Zabbix 2.2.
Переменные автоматически URL кодируются, когда используются в полях запросов или в данных формы для переменных post, но их необходимо вручную URL кодировать, когда они используются в сыром post или напрямую в URL.
ЗаголовкиHTTP заголовки, которые будут отправлены при выполнении запроса.
Задаются в виде пар атрибутов и значений.
Заголовки на уровне шага перезаписывают заголовки уровня сценария. Например, ‘User-Agent:’ без наличия данных, удалит User-Agent указанный на уровне сценария.
Поддерживаются пользовательские макросы и {HOST.*} макросы.
Это поле задаёт CURLOPT_HTTPHEADER cURL опцию.
Возможность указать пользовательские заголовки поддерживается начиная с Zabbix 2.4.
Следовать перенаправлениямОтметьте для следования по HTTP перенаправлениям.
Этот параметр использует cURL опцию CURLOPT_FOLLOWLOCATION.
Эта опция поддерживается начиная с Zabbix 2.4.
Получать только заголовкиОтметьте для получения только заголовков из HTTP ответа.
Этот параметр использует cURL опцию CURLOPT_NOBODY.
Эта опция поддерживается начиная с Zabbix 2.4.
Время ожиданияZabbix не будет тратить более указанного времени при обработке URL (от одной секунды максимум до 1 часа). В действительности же этот параметр определяет максимальное время содания подключения к URL и максимальное время для выполнения HTTP запроса. Следовательно, Zabbix не будет тратить более 2 x Время ожидания секунд на один шаг.
Поддерживаются суффиксы времени, например, 30s, 1m, 1h.
Пользовательские макросы поддерживаются.
Требуемая строкаТребуемый шаблон регулярного выражения.
Если полученное содержимое (HTML) не совпадает с требуемым шаблоном, то шаг будет считаться ошибочным. Если поле не заполнено, то проверка на наличие строки не производится.
Например:
Homepage of Zabbix
Welcome.*admin
Обратите внимание: Ссылки на регулярные выражения, созданные в веб-интерфейсе Zabbix, в этом поле не поддерживаются.
Пользовательские макросы и {HOST.*} макросы поддерживаются начиная с Zabbix 2.2.
Требуемые коды состоянияСписок ожидаемых кодов состояния HTTP. Если Zabbix получает код не из списка, то шаг будет считаться ошибочным.
Если поле не заполнено, то проверка на требуемые коды состояния не производится.
Например: 200,201,210-299.
Начиная с Zabbix 2.2 можно использовать пользовательские макросы.
Любые изменения в шагах веб-сценариев будут сохранены только, если сам сценарий был также сохранен.

Смотрите также пример из реальной жизни, о том как можно настроить шаги веб-мониторинга.

Ограничение разрешенных эмитента и субъекта сертификата

Когда два компонента Zabbix (например, сервер и агент) устанавливают TLS соединение, они оба проверяют сертификаты друг друга.
Если сертификат узла подписан доверенным CA (с предварительно подготовленным сертификатом верхнего уровня в TLSCAFile), является действительным, он не истёк и проходит некоторые другие проверки, тогда коммуникация может продолжаться. Эмитент и субъект сертификата в этом простом случае не проверяется.

Здесь имеется риск – кто-угодно при наличии действительного сертификата может выдавать себя за другого (например, сертификат хоста можно использовать, чтобы выдавать себя за сервер). Такое поведение может быть приемлемо в небольших средах, где сертификаты подписываются специализированного внутреннего CA и риск действий от чужого имени является минимальным.

Если ваш CA верхнего уровня используется для выдачи других сертификатов, которые не должны приниматься Zabbix или вы хотите снизить риск действий от чужого имени, вы можете ограничить разрешенные сертификаты, указав их строки Эмитента и Субъекта.

Про сертификаты:  Как подписать ПДФ (PDF) файл электронной подписью (ЭЦП)

Например, вы можете записать в файл конфигурации 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 сервером с другими строками Эмитента и Субъекта в сертификате, пассивный прокси не пример запросы от такого сервера.

Несколько заметок о соответствии строк Эмитента и Субъекта:

  1. Строки Эмитента и Субъекта проверяются независимо. Обе строки опциональны.
  2. Не указанная строка означает, что принимается любая строка.
  3. Строки сравниваются “как-есть”, они должны в точности быть такими же.
  4. Шаблоны и регулярные выражения при проверке соответствия не поддерживаются.
    1. управляющие символы ‘“’ (U 0022), ‘ ‘ U 002B, ‘,’ U 002C, ‘;’ U 003B, ‘<‘ U 003C, ‘>’ U 003E, ” U 005C в любом месте в строке.
    2. управляющие символы пробела (‘ ‘ U 0020) или символ решетки (‘#’ U 0023) в начале строки.
    3. управляющий символ пробела (‘ ‘ U 0020) в конце строки.

Очередность полей в Эмитента и Субъекта строках и форматирование очень важны! Zabbix следует RFC 4514 рекомендации и использует “обратный” порядок этих полей.

Обратный порядок можно продемонстрировать в примере:

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

Обратите внимание, что он начинается с верхнего уровня (CN), переходит к среднему уровню (OU, O) и заканчивается полями верхнего уровня (DC).

По умолчанию OpenSSL отображает поля Эмитента и Субъекта в “нормальном” порядке, в зависимости от использованных дополнительных опций:

$ 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

Здесь строки Эмитента и Субъекта начинаются с верхнего уровня (DC) и заканчиываются полем нижнего уровня (CN), пробелы и разделители полей зависят от используемых опций. Ни одно из этих значений не будет совпадать в Zabbix полях Эмитента и Субъекта!

Для получения надлежащих строк Эмитента и Субъекта, допустмых в Zabbix, вызовите OpenSSL со специальными опциями
-nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname:
$ 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
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

Теперь строковые поля находятся в обратном” порядке, поля разделены запятой, строки можно использовать в файлах конфигурации Zabbix и в веб-интерфейсе.

Ограничения при использовании расширений x.509 v3 сертификатов

  • Расширение Использование Расширенного Ключа.
    Если используется, то, как правило, необходимо указывать как clientAuth (TLS WWW аутентификация клиента), так и serverAuth (TLS WWW аутентификация сервера).
    Например, при пассивных проверках Zabbix агент выступает в роли TLS сервера, таким образом необходимо указать serverAuth в сертификате агента. При активных проверках в сертификате агента необходимо задать clientAuth.
    GnuTLS выводит предупреждение в случае нарушения использования ключа, но разрешает продолжение соединения.
  • Расширение Ограничения Имени.
    Не все наборы инструментов криптографии поддерживают его. Это расширение может помешать Zabbix в загрузке CA сертификатов, где этот раздел промаркирован как критический (зависит от конкретного набора инструментов криптографии).

Простой мониторинг ssl сертификатов с помощью zabbix

Недостатком простоты является некоторое количество ручной работы по добавлению элементов данных и триггеров, но лучше один раз сделать и потом не бегать с дымящейся известно_чем в день X.

1. Импортируем шаблон в Zabbix (на версиях 2.2 — 2.4 точно будет работать) zbx_export_templates_ssl;

2. «Присоединяем» шаблон к Zabbix server;

3. Правим конфиг Zabbix агента на сервере (я надеюсь он у вас установлен и мониторит сам сервер, потому что для этого есть хороший шаблон «из коробки»). Добавляем в /etc/zabbix/zabbix_agentd.conf (если у вас debian или вроде того).

UserParameter=ssl.eol[*],date -d "`echo | openssl s_client -connect "$1":"$2" 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | sed 's|.*notAfter=||'`"  %s
UserParameter=ssl.current,date  %s

4. Перезапускаем Zabbix агента /etc/init.d/zabbix-agent restart

5. Затем можно сходить в «Последние данные», выбрать Zabbix server и убедиться что элемент данных возвращает значения. А так же открыть шаблон и посмотреть из чего он состоит.

Итак, у нас есть два элемента данных ssl.current — текущее время и ssl.eol[google.com,443] (end-of-life) в unix формате. Данные забираются с агента путём манипуляции с конвертацией даты. Для элемента данных добавлено два триггера, которые срабатывают за три недели и за неделю до окончания срока действия сертификата. Для простоты клонируйте элементы данных и триггеры, меняя нужные значения. И не забудьте добавить зависимость трёхнедельного триггера от недельного.

Если у вас что-то не завелось — попробуйте на Zabbix сервере вручную выполнить запрос:

echo | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -dates

Команда позаимствована тут: http://www.shellhacks.com/ru/Kak-Proverit-Srok-Deystviya-SSL-Sertifikata-iz-Komandnoy-Stroki-v-Linux

Расширенный мониторинг

Иногда необходимо записать в журнал полученное содержимое HTML страницы. Это крайне полезно, если некоторые шаги веб-сценария завершаются с ошибкой. Для этой цели служит уровень отладки 5 (трассировка). Этот уровень можно указать в файлах конфигурации сервера и прокси или использовать опции выполнения административных функций (-R log_level_increase="http poller,N", где N является номером процесса). При условии, что уровень отладки 4 уже задан, расширенный мониторинг можно запустить так, как демонстрируется в следующих примерах:

Увеличение уровня журналирования по всем http поллерам:
shell> zabbix_server -R log_level_increase="http poller"
Увеличение уровня журналирования по второму http поллеру:
shell> zabbix_server -R log_level_increase="http poller,2"

Если расширенный мониторинг не требуется, его можно истановить, используя -R log_level_decrease опцию.

Оцените статью
Мой сертификат
Добавить комментарий