本节包含以安全方式设置Web服务器的最佳实践。
在基于RHEL的系统上,向Apache配置(/etc/httpd/conf/httpd.conf
)中添加一个虚拟主机,并为文档根目录设置永久重定向到Zabbix SSL URL。 请注意,example.com
应该替换为服务器的实际名称。
# 添加以下行:
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
重启Apache服务以应用更改:
为了保护Zabbix前端免受协议降级攻击,我们建议在Web服务器上启用HSTS策略。
要在Apache配置中为您的Zabbix前端启用HSTS策略,请遵循以下步骤:
1. 定位您的虚拟主机配置文件:
/etc/httpd/conf/httpd.conf
在基于RHEL的系统上/etc/apache2/sites-available/000-default.conf
在Debian/Ubuntu上2. 在您的虚拟主机配置文件中添加以下指令:
3. 重启Apache服务以应用更改:
配置Zabbix时,强制执行会话Cookie的安全和SameSite属性对于增强安全性并防止跨站请求伪造(CSRF)攻击至关重要。然而,强制执行SameSite=Strict
在某些情况下可能会导致问题,例如:
为了缓解这些问题,用户应有办法调整SameSite策略。
1. 安全Cookie
设置secure
标志确保Cookie仅通过HTTPS传输,防止在未加密连接上暴露。
要在Zabbix中启用安全Cookie,请在web服务器配置中添加或修改以下设置:
对于Apache:
对于Nginx:
确保通过HTTPS访问Zabbix前端;否则,带有Secure
标志的Cookie将不会被发送。
2. 配置SameSite属性
web服务器设置也可以强制执行SameSite属性:
对于Apache:
对于Nginx(版本1.19.3+):
为了保护Zabbix前端免受跨站脚本(XSS)、数据注入和类似攻击,我们建议在Web服务器上启用内容安全策略(CSP)。 为此,配置Web服务器以返回HTTP头。
以下CSP头配置仅适用于默认Zabbix前端安装,以及所有内容均源自站点域(不包括子域)的情况。 如果您正在配置URL小部件以显示来自站点子域或外部域的内容,从OpenStreetMap切换到其他地图引擎,或添加外部CSS或小部件,可能需要不同的CSP头配置。 如果您使用Duo Universal Prompt多因素认证方法,请确保在虚拟主机配置文件中CSP指令中添加“duo.com”。
要在Apache配置中为您的Zabbix前端启用CSP,请遵循以下步骤:
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服务以应用更改:
为了增强安全性,建议禁用所有Web服务器标识。
默认情况下,Web服务器会暴露软件标识:
可以通过在Apache配置文件中添加以下参数来禁用标识:
可以禁用PHP标识(X-Powered-By HTTP头)通过更改php.ini
配置文件(默认情况下,标识是禁用的):
为了使配置文件更改生效,需要重启Web服务器。
为了额外的安全性,您可以使用mod_security工具与Apache一起(包libapache2-mod-security2)。 此工具允许替换服务器标识,而不仅仅是从服务器标识中移除版本。 安装mod_security后,可以通过将"SecServerSignature"设置为任何所需的值来更改服务器标识。
请参阅您的Web服务器文档以获取有关如何移除/更改软件标识的帮助。
为了避免信息泄露,建议禁用默认错误页面。
默认情况下,Web服务器使用内置错误页面:
这些默认错误页面应被替换或移除。 例如,可以使用“ErrorDocument”指令为Apache Web服务器定义自定义错误页面/文本。
请参考您的Web服务器文档,了解如何替换/移除默认错误页面的帮助。
为了防止信息泄露,建议删除 Web 服务器测试页面。
默认情况下,Apache Web 服务器的 Web 根目录包含 index.html
测试页面:
请参阅您 Web 服务器的文档,了解如何删除默认测试页面的帮助。
默认情况下,Zabbix 配置了 使用 X-Frame-Options HTTP 头 参数为 SAMEORIGIN
。 这意味着内容只能在与页面本身具有相同来源的框架中加载。
Zabbix 前端元素从外部 URL 拉取内容(特别是 URL 仪表盘小部件)在启用了所有沙箱限制的沙箱中显示检索到的内容。
这些设置增强了 Zabbix 前端的安全性,并提供了针对 XSS 和点击劫持攻击的保护。 超级管理员 用户可以根据需要 修改 使用 iframe 沙箱 和 使用 X-Frame-Options HTTP 头 参数。 在更改默认设置前,请仔细权衡风险和收益。 完全禁用 iframe 沙箱或 X-Frame-Options HTTP 头不被推荐。
为了增加密码暴力破解攻击的难度,建议限制对ui/data/top_passwords.txt
文件的访问。 此文件包含最常见和特定于上下文的密码列表,防止用户设置此类密码(如果在密码策略中启用了避免易于猜测的密码参数)。
为了限制对top_passwords.txt
文件的访问,请修改您的Web服务器配置。
在Apache上,可以使用.htaccess
文件限制文件访问:
在NGINX上,可以使用location
指令限制文件访问: