В этом разделе содержатся рекомендации, соблюдение которых позволит настроить Zabbix безопасным образом.
Практики, описанные здесь, не являются обязательными для работы Zabbix. Они рекомендуются для повышения безопасности системы.
Принцип наименьших привилегий всегда должен всегда быть использован для Zabbix. Принцип подразумевает, что учетные записи пользователей (в веб-интерфейсе Zabbix) или пользователь процесса (Zabbix сервер/прокси или агент) имеют привилегии, необходимые только для выполнения предусмотренных функций. Другими словами, учётные записи пользователей всегда должны иметь минимально возможное количество необходимых привилегий.
Предоставление дополнительных разрешений пользователю 'zabbix' откроет ему доступ до файлов конфигурации и выполнения операций, которые могут скомпрометировать общую безопасность всей инфраструктуры.
При реализации принципа наименьших привилегий необходимо учитывать типы пользователей веб-интерфейса. Важно понимать, что хотя у пользователя с типом "Администратор" меньше привилегий, чем у пользователя с типом "Супер-Администраторов", у него (тем не менее) есть доступ к административным функциям, позволяющим управлять конфигурацией и выполнять пользовательские скрипты.
Некоторая информация доступна даже не привилегированным пользователям. Например, хотя раздел Администрирование → Скрипты недоступен для пользователей с типом, отличным от Супер-Администраторов, но сами скрипты доступны для получения посредством Zabbix API. Во избежание раскрытия конфиденциальной информации, доступной в глобальных скриптах, нужно ограничивать доступ к скриптам и не использовать в них конфиденциальную информацию (например, данные доступа и т.д.).
В конфигурации по умолчанию процессы Zabbix сервера и Zabbix агента делят одного 'zabbix' пользователя. Если вы хотите убедиться, что агент не сможет получить доступ к конфиденциальной информации из конфигурации сервера (например, данные подключения к базе данных), агента необходимо запускать из под другого пользователя:
UTF-8 является единственной кодировкой, которая поддерживается Zabbix. Она, как известно, работает без каких-либо проблем с безопасностью. Пользователи должны знать, что существуют известные проблемы с безопасностью при использовании некоторых других кодировок.
При использовании инсталятора Windows рекомендуется использовать предоставляемые инсталятором пути по умолчанию, поскольку применение пользовательских путей без надлежащим образом назначенных прав может скомпрометировать безопасность вашей инсталляции.
На RHEL, установите пакет mod_ssl:
Создайте директорию для SSL ключей:
Создайте 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, чтобы применить изменения:
Добавьте виртуальный хост в конфигурацию Apache и настройте постоянную переадресацию для корневого каталога на Zabbix SSL URL. Не забудьте заменить example.com на актуальное имя сервера.
/etc/httpd/conf/httpd.conf
#Добавьте строки
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
Перезапустите сервис Apache, чтобы применить изменения:
Чтобы защитить веб-интерфейс Zabbix от атак, понижающих версию протокола, мы рекомендуем включить HSTS политику на веб-сервере.
Например, чтобы включить HSTS политику в конфигурации Apache для веб-интерфейса вашего Zabbix:
добавьте следующую директиву к конфигурации вашего виртуального хоста:
Перезапустите сервис Apache, чтобы применить изменения:
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/Ubuntu2. 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 (используется как пример):
Подпись PHP (Заголовок X-Powered-By HTTP) можно отключить, изменив файл конфигурации php.ini (подпись отключена по умолчанию):
Чтобы изменения файлов конфигурации вступили в силу, необходимо перезапустить веб-сервер.
Дополнительный уровень безопасности можно достичь, используя mod_security (пакет libapache2-mod-security2) с Apache. mod_security позволяет полностью удалить подпись сервера вместо удаления лишь версии из подписи сервера. После установки mod_security, подпись можно изменить на любое значение, исправив "SecServerSignature" на любое желаемое значение.
Пожалуйста, обратитесь к документации по вашему веб-серверу для того, чтобы узнать как удалять/изменять подписи к программному обеспечению.
Рекомендуется отключить страницы ошибок по умолчанию, чтобы избежать раскрытия информации. По умолчанию веб-сервер использует встроенные страницы ошибок:
Как часть процесса по улучшению защищенности веб-сервера, используемые по умолчанию страницы ошибок необходимо заменить/удалить. Можно использовать директиву "ErrorDocument", чтобы задать пользовательскую страницу/текст для веб-сервера Apache (используется как пример).
Пожалуйста, обратитесь к документации по вашему веб-серверу для того, чтобы узнать как заменять/удалять используемые по умолчанию страницы ошибок.
Рекомендуется удалить тестовую страницу веб-сервера, чтобы избежать раскрытия информации. По умолчанию, корневой каталог веб-сервера содержит тестовую страницу с именем index.html (Apache2 на Ubuntu используется как пример):
Как часть процесса по улучшению защищенности веб-сервера, тестовую страницу необходимо удалить или сделать недоступной.
По умолчанию, в конфигурации Zabbix HTTP заголовок ответа X-Frame-Options настроен на SAMEORIGIN
; это означает, что содержимое может быть загружено только во фрейм с таким же источником, как и у самой страницы.
Элементы веб-интерфейса Zabbix, которые извлекают содержимое с внешних URL-адресов (например, виджет панели URL), отображают полученное содержимое в так называемой песочнице (sandbox), при этом все ограничения песочницы включены.
Такие настройки улучшают безопасность веб-интерфейса Zabbix и обеспечивают защиту от XSS и кликджекинг атак. Супер Администраторы могут изменить параметры Использовать sandbox атрибут в iframe and HTTP заголовок X-Frame-Options по мере необходимости. Пожалуйста, тщательно взвесьте риски и преимущества перед изменением настроек по умолчанию. Отключать полностью песочницу или X-Frame-Options не рекомендуется.
Zabbix агент на Windows, скомпилированный с OpenSSL, попытается получить доступ к файлу конфигурации SSL в c:\openssl-64bit. Директория "openssl-64bit" на диске C: может быть создана непривилегированными пользователями.
Поэтому для повышения безопасности системы, необходимо создать данную директорию вручную и убрать доступ на запись для пользователей, не являющихся администраторами.
Пожалуйста, обратите внимание, что имена директорий будут отличаться на 32-битных и 64-битных версиях Windows.
Для повышения сложности атак методом перебора пароля, рекомендуется ограничить доступ к файлу ui/data/top_passwords.txt
, изменив конфигурацию веб-сервера. В данном файле находится список самых распространённых и контексто-зависимых паролей, используемый для ограничения возможности пользователей от использования подобных паролей в случае, если параметр Избегать легко угадываемых паролей включен в политике паролей.
Например, в NGINX доступ к файлу может быть ограничен при помощи директивы location
:
В Apache, используя файл .htacess
: