Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

Наилучшие практики для безопасной установки Zabbix

Обзор

В этом разделе содержатся рекомендации, соблюдение которых, позволит настроить Zabbix безопасным образом.

Практики, описанные здесь, не требуются для работы Zabbix. Они рекомендуются для повышения безопасности системы.

Контроль доступа

Принцип наименьших привилегий

Принцип наименьших привилегий всегда должен всегда быть использован для Zabbix. Принцип подразумевает, что учетные записи пользователей (в веб-интерфейсе Zabbix) или пользователь процесса (Zabbix сервер/прокси или агент) имеют привилегии необходимые только для выполнения предусмотренных функций. Другими словами, учётные записи пользователей в любое время должны иметь минимально возможное количество необходимых привилегий.

Предоставление дополнительных разрешений пользователю 'zabbix', откроет ему доступ до файлов конфигурации и выполнения операций, которые могут скомпрометировать общую безопасность всей инфраструктуры.

При введении принципа наименьших привилегий, необходимо учитывать типы пользователей веб-интерфейса. Важно понимать, что в том время как у пользователя с типом "Администратор" меньше привилегий, чем у пользователя с типом "Супер-Администраторов", у него так же есть доступ к административным функциям позволяющим управлять конфигурацией и выполнять пользовательские скрипты.

Некоторая информация доступна даже не привилегированным пользователям. Например, в то время как АдминистрированиеСкрипты не доступны для пользователей с типом отличным от Супер-Администраторов, сами скрипты доступны для получения используя Zabbix API. Должно применяться ограничение доступа к скриптам и не использование в них конфиденциальной информации(например данных доступа, и т.д.), чтобы избежать раскрытия конфиденциальной информации доступной в глобальных скриптах.

Защищённый пользователь для Zabbix агента

В конфигурации по умолчанию процессы Zabbix сервера и Zabbix агента делят одного 'zabbix' пользователя. Если вы хотите убедиться, что агент не сможет получить доступ к конфиденциальной информации из конфигурации сервера (например, данные подключения к базе данных), агента необходимо запускать из под другого пользователя:

  1. Создайте защищённого пользователя
  2. Укажите этого пользователя в файле конфигурации агента (параметр 'User')
  3. Перезапустите агента с правами администратора. Привилегии администратора сбросятся на указанного пользователя.

Кодировка UTF-8

UTF-8 является единственной кодировкой, которая поддерживается Zabbix. Она, как известно, работает без каких-либо проблем с безопасностью. Пользователи должны знать, что существуют известные проблемы с безопасностью при использовании некоторых других кодировок.

Советы по безопасности Zabbix и база данных CVE

Смотрите Советы по безопасности Zabbix и базу данных CVE.

Настройка SSL для веб-интерфейса Zabbix

На RHEL/Centos, установите пакет mod_ssl:

yum install mod_ssl

Создайте директорию для SSL ключей:

mkdir -p /etc/httpd/ssl/private
       chmod 700 /etc/httpd/ssl/private

Создайте SSL сертификат:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/private/apache-selfsigned.key -out /etc/httpd/ssl/apache-selfsigned.crt

Заполните запросы соответствующим образом. Самая важная строка здесь та, которая запрашивает Common Name. Вам необходимо указать имя домена, которое вы хотите связать с вашим сервером. Вместо него вы можете указать публичный IP адрес, если у вас отсутствует имя домена. В этой статье мы будем использовать example.com.

Country Name (2 letter code) [XX]:
       State or Province Name (full name) []:
       Locality Name (eg, city) [Default City]:
       Organization Name (eg, company) [Default Company Ltd]:
       Organizational Unit Name (eg, section) []:
       Common Name (eg, your name or your server's hostname) []:example.com
       Email Address []:

Отредактируйте конфигурацию Apache SSL:

/etc/httpd/conf.d/ssl.conf
       
       DocumentRoot "/usr/share/zabbix"
       ServerName example.com:443
       SSLCertificateFile /etc/httpd/ssl/apache-selfsigned.crt
       SSLCertificateKeyFile /etc/httpd/ssl/private/apache-selfsigned.key

Перезапустите сервис Apache, чтобы применить изменения:

systemctl restart httpd.service

Защита веб-сервера

Включение Zabbix в корневом каталоге URL

Добавьте виртуальный хост в конфигурацию Apache и настройте постоянную переадресацию для корневого каналога на Zabbix SSL URL. Не забудьте заменить example.com на актуальное имя сервера.

/etc/httpd/conf/httpd.conf
       
       #Добавьте строки
       
       <VirtualHost *:*>
           ServerName example.com
           Redirect permanent / https://example.com
       </VirtualHost>

Перезапустите сервис Apache, чтобы применить изменения:

systemctl restart httpd.service

Включение строгой транспортной безопасности HTTP (HSTS) на веб-сервере

Чтобы защитить веб-интерфейс Zabbix от атак понижающих версию протокола, мы рекомендуем включить HSTS политику на веб-сервере.

Например, чтобы включить HSTS политики в конфигурации Apache для веб-интерфейса вашего Zabbix:

/etc/httpd/conf/httpd.conf

добавьте следующую директиву к конфигурации вашего виртуального хоста:

<VirtualHost *:443>
          Header set Strict-Transport-Security "max-age=31536000"
       </VirtualHost>

Перезапустите сервис Apache, чтобы применить изменения:

systemctl restart httpd.service

Отключение отображения информации о веб-сервере

Рекомендуется отключить все подписи веб-сервера, как часть процесса по улучшению защищенности веб-сервера. По умолчанию веб-сервер раскрывает подпись программного обеспечения:

Эту подпись можно отключить, добавив две строки в файл конфигурации Apache (используется как пример):

ServerSignature Off
       ServerTokens Prod

Подпись PHP (Заголовок X-Powered-By HTTP) можно отключить, изменив файл конфигурации php.ini (подпись отключена по умолчанию):

expose_php = Off

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

Дополнительный уровень безопасности можно достичь, используя mod_security (пакет libapache2-mod-security2) с Apache. mod_security позволяет полностью удалить подпись сервера вместо удаления лишь версии из подписи сервера. После установки mod_security, подпись можно изменить на любое значение, исправив "SecServerSignature" на любое желаемое значение.

Пожалуйста, обратитесь к документации по вашему веб-серверу для того, чтобы узнать как удалять/изменять подписи к программному обеспечению.

Отключение страниц ошибок веб-сервера по умолчанию

Рекомендуется отключить страницы ошибок по умолчанию, чтобы избежать раскрытия информации. По умолчанию веб-сервер использует встроенные страницы ошибок:

Страницы ошибок по умолчанию необходимо заменить/удалить, как часть процесса по улучшению защищенности веб-сервера. Можно использовать директиву "ErrorDocument", чтобы задать пользовательскую страницу/текст для веб-сервера Apache (используется как пример).

Пожалуйста, обратитесь к документации по вашему веб-серверу для того, чтобы узнать как заменять/удалять страницы ошибок по умолчанию.

Удаление тестовой страницы веб-сервера

Рекомендуется удалить тестовую страницу веб-сервера, чтобы избежать раскрытия информации. По умолчанию, корневой каталог веб-сервера содержит тестовую страницу с именем index.html (Apache2 на Ubuntu используется как пример):

Тестовую страницу необходимо удалить или сделать недоступной, как часть процесса по улучшению защищенности веб-сервера.

Настройка заголовка HTTP ответа X-Frame-Options

По умолчанию, в конфигурации Zabbix HTTP заголовок ответа X-Frame-Options настроен на SAMEORIGIN, это означает, что содержимое может быть загружено только во фрейм с таким же источником, как и у самой страницы.

Элементы веб-интерфейса Zabbix, которые извлекают содержимое с внешних URL-адресов (например, виджет панели URL), отображают полученное содержимое в так называемой песочнице (sandbox), при этом все ограничения песочницы включены.

Такие настройки улучшают безопасность веб-интерфейса Zabbix и обеспечивают защиту от XSS и кликджекинг атак. Супер Администраторы могут изменить параметры Использовать sandbox атрибут в iframe and HTTP заголовок X-Frame-Options по мере необходимости. Пожалуйста, тщательно взвесьте риски и преимущества перед изменением настроек по умолчанию. Отключать полностью песочницу или X-Frame-Options не рекомендуется.

Отзыв доступа на запись к файлу конфигурации SLL на Windows

Zabbix агент на Windows скомпилированный с OpenSSL попытается получить доступ к файлу конфигурации SSL в c:\openssl-64bit. Директория "openssl-64bit" на диске C: может быть создана непривилегированными пользователями.

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

Пожалуйста, обратите внимание, что имена директорий будут отличаться на 32-битных и 64-битных версиях Windows.

Криптография

Скрытие файла со списком распространенных паролей

Для повышения сложности атак методом перебора пароля, рекомендуется ограничить доступ к файлу ui/data/top_passwords.txt изменив конфигурацию веб-сервера. В данном файле находится список самых распространённых и контексто-зависимых паролей, используемый для ограничения возможности пользователей от использования подобных паролей в случае, если параметр Избегать легко угадываемых паролей включен в политике паролей.

Например, в NGINX доступ к файлу может быть ограничен при помощи директивы location:

location = /data/top_passwords.txt {​​​​​​​
           deny all;
           return 404;
       }​​​​​​​

В Apache, используя файл .htacess:

<Files "top_passwords.txt">  
         Order Allow,Deny
         Deny from all
       </Files>