Продолжаем обзор новых возможностей 3.0, мы уже успели обзорно рассказать о возможностях новой версии, отдельно остановились на возможности прогнозирования проблем на основе собранной статистики, а сегодня расскажем о шифровании.
Шифрование было одним из самых давних и ожидаемых нововведений в Zabbix, и за это время успели обсудить несколько вариантов его реализации: от аутентификации по предварительному ключу PSK до полной поддержки TLS и Kerberos. Год назад было решено остановиться на TLS.
И вот теперь в Zabbix 3.0 все компоненты, такие как сервер, агент и прокси, могут быть настроены на использование шифрования, или могут продолжить общаться в открытую, как и прежде. Все это дает возможность использовать Zabbix в тех системах, где шифрование между узлами является обязательным условием. Кроме того, поддержка безопасного соединения добавлена и для утилит командной строки, таких как zabbix_sender и zabbix_get.
Для шифрования Zabbix может использовать одну из следующих библиотек: OpenSSL, GnuTLS или mbedTLS (PolarSSL). Такое решение в первую очередь принято, чтобы всегда иметь возможность сменить библиотеку, если в используемой обнаружится критическая уязвимость, изменится тип лицензии или разработка и поддержка закончится. Другим преимуществом является нейтралитет Zabbix к любому из перечисленных наборов.
TLS поддерживается версии 1.2 — предыдущие версии SSL/TLS протокола содержали уязвимости, поэтому использовать их мы посчитали плохой идеей.
Кроме скрытия передающихся сообщений от посторонних, реализована и аутентификация. Теперь возможно получить ответы на вопросы «Можно ли доверять источнику данных» или «Отправляем ли мы файл со списком паролей на наш сервер». Для аутентификации на выбор доступно: использование сертификата ( для тех, у кого в наличии инфраструктура открытых ключей или высокие требования к безопасности) или ключ PSK (для небольших инсталляций).
Не потребуется и открывать никаких новых портов — по-прежнему используются только стандартные для Zabbix TCP/10050-10051.
Если шифрование пользователю не интересно, то можно продолжить использовать Zabbix как и прежде. При этом обновленные компоненты Zabbix будут поддерживать новую возможность, поэтому начать настраивать защищенные соединения можно в любой удобный для себя момент.
Также важно отметить, что мы добавили несколько новых полей в таблицах БД Zabbix, для того чтобы хранить дополнительные настройки, сделали возможным их изменения через веб (логично же) или API, а также добавили новые параметры в конфигурационных файлах.
Пример настройки шифрования демонстрируем следующим скриншотом.
Два параметра определяют, как сервер или прокси подсоединяются к агенту (для пассивных проверок, «Connections to host») и отдельный параметр, определяющий, какие типы соединений разрешены от агента (активные проверки и zabbix_sender, «Connections from host»). «Connections from host» также используется для того, чтобы ограничить подключения к серверу от тех, кто обзавелся украденным сертификатом или разузнал PSK.
Со стороны агентов и утилит zabbix_get, zabbix_sender настройка шифрования производится через новые параметры конфигурационных файлов или аргументов командной строки.
В момент тестирования возможно разрешить сразу несколько видов соединений (т.е. открытые и защищенные), дальше настроить шифрование и аутентификацию на основе сертификата или PSK, убедиться, что все работает, и, наконец, запретить нешифрованные соединения.
При этом, конечно еще есть над чем поработать, например:
Поддержка шифрования и взаимной аутентификации в Zabbix дает возможность пользователям постепенно и выборочно улучшать безопасность компонентов системы мониторинга. Предлагаем вам самим опробовать это и другие нововведения. Полную спецификацию на шифрованию можно найти в документации , ну а также читайте про остальные нововведения в Zabbix на Хабре, если вдруг пропустили.
Перевод статьи из нашего блога.
Шифрование было одним из самых давних и ожидаемых нововведений в Zabbix, и за это время успели обсудить несколько вариантов его реализации: от аутентификации по предварительному ключу PSK до полной поддержки TLS и Kerberos. Год назад было решено остановиться на TLS.
И вот теперь в Zabbix 3.0 все компоненты, такие как сервер, агент и прокси, могут быть настроены на использование шифрования, или могут продолжить общаться в открытую, как и прежде. Все это дает возможность использовать Zabbix в тех системах, где шифрование между узлами является обязательным условием. Кроме того, поддержка безопасного соединения добавлена и для утилит командной строки, таких как zabbix_sender и zabbix_get.
Технические детали
Для шифрования Zabbix может использовать одну из следующих библиотек: OpenSSL, GnuTLS или mbedTLS (PolarSSL). Такое решение в первую очередь принято, чтобы всегда иметь возможность сменить библиотеку, если в используемой обнаружится критическая уязвимость, изменится тип лицензии или разработка и поддержка закончится. Другим преимуществом является нейтралитет Zabbix к любому из перечисленных наборов.
TLS поддерживается версии 1.2 — предыдущие версии SSL/TLS протокола содержали уязвимости, поэтому использовать их мы посчитали плохой идеей.
Кроме скрытия передающихся сообщений от посторонних, реализована и аутентификация. Теперь возможно получить ответы на вопросы «Можно ли доверять источнику данных» или «Отправляем ли мы файл со списком паролей на наш сервер». Для аутентификации на выбор доступно: использование сертификата ( для тех, у кого в наличии инфраструктура открытых ключей или высокие требования к безопасности) или ключ PSK (для небольших инсталляций).
Не потребуется и открывать никаких новых портов — по-прежнему используются только стандартные для Zabbix TCP/10050-10051.
Если шифрование пользователю не интересно, то можно продолжить использовать Zabbix как и прежде. При этом обновленные компоненты Zabbix будут поддерживать новую возможность, поэтому начать настраивать защищенные соединения можно в любой удобный для себя момент.
Также важно отметить, что мы добавили несколько новых полей в таблицах БД Zabbix, для того чтобы хранить дополнительные настройки, сделали возможным их изменения через веб (логично же) или API, а также добавили новые параметры в конфигурационных файлах.
Пример настройки шифрования демонстрируем следующим скриншотом.
Два параметра определяют, как сервер или прокси подсоединяются к агенту (для пассивных проверок, «Connections to host») и отдельный параметр, определяющий, какие типы соединений разрешены от агента (активные проверки и zabbix_sender, «Connections from host»). «Connections from host» также используется для того, чтобы ограничить подключения к серверу от тех, кто обзавелся украденным сертификатом или разузнал PSK.
Со стороны агентов и утилит zabbix_get, zabbix_sender настройка шифрования производится через новые параметры конфигурационных файлов или аргументов командной строки.
В момент тестирования возможно разрешить сразу несколько видов соединений (т.е. открытые и защищенные), дальше настроить шифрование и аутентификацию на основе сертификата или PSK, убедиться, что все работает, и, наконец, запретить нешифрованные соединения.
Последующие улучшения
При этом, конечно еще есть над чем поработать, например:
- В настоящий момент переиспользование TLS сессий через кеширование не поддерживается, поэтому сейчас каждое подключение инициализирует соединение с нуля, что естественно медленней.
- Добавить поддержку шифрования для Zabbix Java gateway.
- Сейчас реализована поддержка только сертификатов X.509 с ключами RSA. Поддержка сертификатов ECDSA должна помочь улучшить производительность.
- Отозванные сертификаты можно проверить только через CRL-файлы, онлайн проверка издателя в текущий момент не реализована.
Поддержка шифрования и взаимной аутентификации в Zabbix дает возможность пользователям постепенно и выборочно улучшать безопасность компонентов системы мониторинга. Предлагаем вам самим опробовать это и другие нововведения. Полную спецификацию на шифрованию можно найти в документации , ну а также читайте про остальные нововведения в Zabbix на Хабре, если вдруг пропустили.
Перевод статьи из нашего блога.
Комментарии (10)
chelaxe
26.02.2016 16:05Хотелось бы how to как организовать шифрование на основе сертификатов. Причем бы вплоть до команд генерации сертификатов в OpenSSL например. С ходу не смог разобраться.
evg_krsk
26.02.2016 18:23Кстати да, было бы очень полезно. Тем более в грамотном переводе на русский (раз уж вы взялись переводить статьй из официального блога).
alexvl
26.02.2016 21:59Переправил коллегам. Если найдём время, то сделаем.
alexvl
29.02.2016 14:41Решили не изобретать велосипед. Всё очень хорошо и качественно описано тут http://pki-tutorial.readthedocs.org/en/latest/
chelaxe
Когда ждать поддержки шифрования на Windows агентах?
alexvl
Oна уже есть. Другое дело, что на данный момент мы не предлагаем готовые агенты для Windows с поддержкой шифрования. Это связано с тем, что мы пока не решили как лучшим образом строить такие бинарники: со внешними зависимостями на библиотеки шифрования (их может не быть в системе) или встраивать их в сам бинарник, что тоже не является идеальным решением.
c0ba
А что плохого во втором варианте?
evg_krsk
Навскидку, плохо с точки зрения закрытия дыр в безопасности в этих библиотеках.
alexvl
Да, именно так.