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