Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

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

Обзор

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

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

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

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

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

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

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

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

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

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

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

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

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

Пути инсталятора Windows

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

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

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

dnf 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

Enabling Content Security Policy (CSP) on the web server

To protect Zabbix frontend against Cross Site Scripting (XSS), data injection, and similar attacks, we recommend enabling Content Security Policy on the web server. To do so, configure the web server to return the HTTP header.

The following CSP header configuration is only for the default Zabbix frontend installation and for cases when all content originates from the site's domain (excluding subdomains). A different CSP header configuration may be required if you are, for example, configuring the URL widget to display content from the site's subdomains or external domains, switching from OpenStreetMap to another map engine, or adding external CSS or widgets.

To enable CSP for your Zabbix frontend in Apache configuration, follow these steps:

1. Locate your virtual host's configuration file:

  • /etc/httpd/conf/httpd.conf on RHEL-based systems
  • /etc/apache2/sites-available/000-default.conf on Debian/Ubuntu

2. Add the following directive to your virtual host's configuration file:

<VirtualHost *:*>
           Header set Content-Security-Policy: "default-src 'self' *.openstreetmap.org; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data: *.openstreetmap.org; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self';"
       </VirtualHost>

3. Restart the Apache service to apply the changes:

# On RHEL-based systems:
       systemctl restart httpd.service
       
       # On Debian/Ubuntu
       systemctl restart apache2.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 не рекомендуется.

Отзыв доступа на запись к файлу конфигурации SSL на 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>

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

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