- 3 Веб-сервер
- Обзор
- Настройка перенаправления корневого URL на SSL Zabbix
- Включение HTTP Strict Transport Security (HSTS) на веб-сервере
- Принудительное применение атрибутов Secure и SameSite для cookie сессии в Zabbix
- Включение Content Security Policy (CSP) на веб-сервере
- Отключение раскрытия информации о веб-сервере
- Отключение стандартных страниц ошибок веб-сервера
- Удаление тестовой страницы веб-сервера
- Установка HTTP-заголовка ответа X-Frame-Options
- Скрытие файла со списком распространённых паролей
3 Веб-сервер
Обзор
В этом разделе содержатся рекомендации по безопасной настройке веб-сервера.
Настройка перенаправления корневого URL на SSL Zabbix
В системах на базе RHEL добавьте виртуальный хост в конфигурацию Apache (/etc/httpd/conf/httpd.conf) и настройте постоянное перенаправление для корневого каталога документов на SSL URL Zabbix.
Обратите внимание, что example.com следует заменить фактическим именем сервера.
# Add lines:
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
Перезапустите службу Apache, чтобы применить изменения:
systemctl restart httpd.service
Включение HTTP Strict Transport Security (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
Принудительное применение атрибутов Secure и SameSite для cookie сессии в Zabbix
При настройке Zabbix крайне важно принудительно применять атрибуты Secure и SameSite для cookie сессии, чтобы повысить безопасность и предотвратить атаки межсайтовой подделки запросов (CSRF). Однако применение SameSite=Strict может вызывать проблемы в некоторых сценариях, например:
- Виджеты URL на панели мониторинга отображают сообщение «пользователь не вошёл в систему» при встраивании iframe с того же домена.
- Пользователи, открывающие панель мониторинга по HTTP вместо HTTPS, могут столкнуться с проблемами входа.
- Невозможность делиться URL-адресами на определённые разделы меню Zabbix или узлы сети.
Чтобы уменьшить влияние этих проблем, у пользователей должна быть возможность настраивать политику SameSite.
1. Secure cookie
Установка флага secure гарантирует, что cookie передаются только по HTTPS, предотвращая их раскрытие через незашифрованные соединения.
Чтобы включить Secure 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' для большей точности
Включение Content Security Policy (CSP) на веб-сервере
Чтобы защитить веб-интерфейс Zabbix от Cross Site Scripting (XSS), внедрения данных и подобных атак, мы рекомендуем включить Content Security Policy на веб-сервере. Для этого настройте веб-сервер так, чтобы он возвращал HTTP-заголовок.
Следующая конфигурация заголовка 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
Отключение раскрытия информации о веб-сервере
Для повышения безопасности рекомендуется отключить все сигнатуры веб-сервера.
По умолчанию веб-сервер раскрывает сигнатуру программного обеспечения:

Сигнатуру можно отключить, добавив следующие параметры в файл конфигурации Apache:
ServerSignature Off
ServerTokens Prod
Сигнатуру PHP (HTTP-заголовок X-Powered-By) можно отключить, изменив файл конфигурации php.ini (по умолчанию сигнатура отключена):
expose_php = Off
Чтобы изменения в файлах конфигурации вступили в силу, требуется перезапуск веб-сервера.
Для дополнительной безопасности можно использовать инструмент mod_security с Apache (пакет libapache2-mod-security2). Этот инструмент позволяет удалить сигнатуру сервера полностью, а не только убрать из нее версию сервера. Сигнатуру сервера можно изменить на любое значение, установив "SecServerSignature" в нужное значение после установки mod_security.
Обратитесь к документации вашего веб-сервера, чтобы узнать, как удалить/изменить сигнатуры программного обеспечения.
Отключение стандартных страниц ошибок веб-сервера
Чтобы избежать раскрытия информации, рекомендуется отключить стандартные страницы ошибок.
По умолчанию веб-сервер использует встроенные страницы ошибок:

Эти стандартные страницы ошибок следует заменить/удалить. Например, директиву "ErrorDocument" можно использовать для определения пользовательской страницы/текста ошибки для веб-сервера Apache.
Обратитесь к документации вашего веб-сервера, чтобы узнать, как заменить/удалить стандартные страницы ошибок.
Удаление тестовой страницы веб-сервера
Чтобы избежать раскрытия информации, рекомендуется удалить тестовую страницу веб-сервера.
По умолчанию корневой каталог веб-сервера Apache содержит тестовую страницу index.html:

Обратитесь к документации вашего веб-сервера, чтобы узнать, как удалить тестовые страницы по умолчанию.
Установка HTTP-заголовка ответа X-Frame-Options
По умолчанию Zabbix настроен с параметром Use X-Frame-Options HTTP header, установленным в SAMEORIGIN.
Это означает, что содержимое может загружаться только во фрейме, имеющем тот же источник, что и сама страница.
Элементы веб-интерфейса Zabbix, которые получают содержимое из внешних URL (а именно, виджет URL панели мониторинга), отображают полученное содержимое в песочнице со всеми включёнными ограничениями sandbox.
Эти настройки повышают безопасность веб-интерфейса Zabbix и обеспечивают защиту от атак XSS и clickjacking. Пользователи с ролью Super admin могут при необходимости изменить параметры Use iframe sandboxing и Use X-Frame-Options HTTP header. Перед изменением настроек по умолчанию следует тщательно взвесить риски и преимущества. Не рекомендуется полностью отключать sandboxing 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;
}