3. Веб-сервер

Обзор

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

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

На системах на основе RHEL, добавьте виртуальный хост в файл конфигурации Apache (/etc/httpd/conf/httpd.conf) и настройте постоянную переадресацию для корневого каталога на Zabbix SSL URL. Обратите внимание, что example.com следует заменить на фактическое имя сервера.

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

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

systemctl restart httpd.service

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

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

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

1. Найдите файл конфигурации виртуальных хостов:

  • /etc/httpd/conf/httpd.conf на системах на базе RHEL
  • /etc/apache2/sites-available/000-default.conf на Debian/Ubuntu

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

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

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

# на системах на базе RHEL:
       systemctl restart httpd.service
       
       # на Debian/Ubuntu:
       systemctl restart apache2.service

При настройке Zabbix важно принудительно применять атрибуты secure и SameSite для сеансовых файлов cookie для повышения безопасности и предотвращения атак с подделкой межсайтовых запросов (CSRF). Однако, принудительное применение SameSite=Strict может вызвать проблемы в определённых сценариях, такие как:

  • Виджеты URL панели отображают «пользователь не вошел в систему» ("user not logged in") при встраивании фреймов (iframes) того же домена.
  • Пользователи, получающие доступ к панели через HTTP вместо HTTPS, могут столкнуться с проблемами входа.
  • Невозможность поделиться URL-адресами к определённым разделам меню Zabbix или хостам.

Чтобы смягчить эти проблемы, пользователи должны иметь возможность настроить политику SameSite.

1. Безопасные файлы cookie

Установка флага secure гарантирует, что файлы cookie будут передаваться только по HTTPS, предотвращая раскрытие информации при незашифрованных соединениях.

Чтобы включить безопасные файлы cookie в Zabbix, добавьте или измените следующую настройку в конфигурации веб-сервера:

Для Apache:

Header always edit Set-Cookie ^(.*)$ $1;Secure

Для Nginx:

proxy_cookie_path / "/; Secure";

Убедитесь, что ваш веб-интерфейс Zabbix доступен через HTTPS; в противном случае файлы cookie с флагом Secure не будут отправляться.

2. Настройка атрибута SameSite

Настройки веб-сервера также могут принудительно применять атрибут SameSite:

Для Apache:

<IfModule mod_headers.c>
       Header onsuccess edit Set-Cookie (.*) "$1; SameSite=Strict"
       </IfModule>

Для Nginx (версия 1.19.3+):

proxy_cookie_flags ~ samesite=Strict; # Замените «~» на «zbx_session» для конкретности

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

Чтобы защитить интерфейс Zabbix от межсайтового скриптинга (Cross Site Scripting, XSS), внедрения данных (data injection) и подобных атак, мы рекомендуем включить политику безопасности контента (Content Security Policy, CSP) на веб-сервере. Для этого настройте веб-сервер на возврат HTTP-заголовка [en].

Следующая конфигурация заголовка CSP предназначена только для установки веб-интерфейса Zabbix по умолчанию и для случаев, когда весь контент происходит из домена сайта (за исключением поддоменов). Другая конфигурация заголовка CSP может потребоваться, если вы, например, настраиваете виджет URL для отображения контента из поддоменов сайта или внешних доменов, переключаете с OpenStreetMap на другой картографический движок или добавляете внешние CSS или виджеты. Если вы используете метод многофакторной аутентификации Duo Universal Prompt, обязательно добавьте «duo.com» в директиву CSP в файле конфигурации вашего виртуального хоста.

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

1. Найдите ваш файл конфигурации виртуальных хостов:

  • /etc/httpd/conf/httpd.conf на системах на базе RHEL
  • /etc/apache2/sites-available/000-default.conf на Debian/Ubuntu

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

<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. Перезапустите службу Apache, чтобы применить изменения:

# на системах на базе RHEL:
       systemctl restart httpd.service
       
       # на Debian/Ubuntu
       systemctl restart apache2.service

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

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

To improve security, disabling all web server signatures is recommended.

По умолчанию веб-сервер раскрывает подпись программного обеспечения:

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

ServerSignature Off
       ServerTokens Prod

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

expose_php = Off

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

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

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

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

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

По умолчанию веб-сервер использует встроенные страницы ошибок:

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

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

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

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

По умолчанию, корневой каталог веб-сервера Apache содержит тестовую страницу с именем index.html:

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

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

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

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

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

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

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

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

В Apache доступ к файлам можно ограничить с помощью файла .htaccess:

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

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

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