检查清单¶
Check-Dashboard-01: 配置文件用户/组是否设置为 root/horizon?¶
配置文件包含组件平稳运行所需的关键参数和信息。如果未授权用户有意或无意地修改或删除任何参数或文件本身,则会导致严重的可访问性问题,从而导致其他端用户拒绝服务。因此,此类关键配置文件的用户所有权必须设置为 root,组所有权必须设置为 horizon。
运行以下命令
$ stat -L -c "%U %G" /etc/openstack-dashboard/local_settings.py | egrep "root horizon"
通过: 如果配置文件的用户和组所有权分别设置为 root 和 horizon。上述命令显示 root horizon 的输出。
失败: 如果上述命令未返回任何输出,因为用户和组所有权可能设置为除 root 以外的任何用户或除 horizon 以外的任何组。
Check-Dashboard-02: 是否为 horizon 配置文件设置了严格的权限?¶
与之前的检查类似,建议为这些配置文件设置严格的访问权限。
运行以下命令
$ stat -L -c "%a" /etc/openstack-dashboard/local_settings.py
通过: 如果权限设置为 640 或更严格。权限 640 转换为所有者 r/w、组 r,以及对其他人的无权访问,即“u=rw,g=r,o=”。请注意,使用 Check-Dashboard-01: 配置文件用户/组是否设置为 root/horizon? 和权限设置为 640,root 具有读/写访问权限,horizon 具有对这些配置文件的读取访问权限。还可以使用以下命令验证访问权限。如果您的系统支持 ACL,则此命令才可用。
$ getfacl --tabular -a /etc/openstack-dashboard/local_settings.py
getfacl: Removing leading '/' from absolute path names
# file: etc/openstack-dashboard/local_settings.py
USER root rw-
GROUP horizon r--
mask r--
other ---
失败: 如果权限未设置为至少 640。
Check-Dashboard-03: 参数 DISALLOW_IFRAME_EMBED 是否设置为 True?¶
DISALLOW_IFRAME_EMBED 可用于防止 OpenStack Dashboard 嵌入在 iframe 中。
旧版浏览器仍然容易受到跨框架脚本 (XFS) 漏洞的影响,因此此选项允许额外的安全加固,在部署中不使用 iframe。
默认设置是 True。
通过: 如果 /etc/openstack-dashboard/local_settings.py 中参数 DISALLOW_IFRAME_EMBED 的值为 True。
失败: 如果 /etc/openstack-dashboard/local_settings.py 中参数 DISALLOW_IFRAME_EMBED 的值为 False。
推荐阅读:HTTPS、HSTS、XSS 和 SSRF。
Check-Dashboard-07: 参数 PASSWORD_AUTOCOMPLETE 是否设置为 False?¶
应用程序常用的一个功能是缓存客户端机器(在浏览器上)上的密码并在所有后续请求中“预先键入”它,以方便用户。虽然此功能可能被普通用户认为非常友好,但同时它也引入了一个缺陷,因为任何使用相同帐户的客户端机器上的任何人都可以轻松访问该用户帐户,从而可能导致用户帐户被泄露。
通过: 如果 /etc/openstack-dashboard/local_settings.py 中参数 PASSWORD_AUTOCOMPLETE 的值为 off。
失败: 如果 /etc/openstack-dashboard/local_settings.py 中参数 PASSWORD_AUTOCOMPLETE 的值为 on。
Check-Dashboard-08: 参数 DISABLE_PASSWORD_REVEAL 是否设置为 True?¶
与之前的检查类似,建议不要显示密码字段。
通过: 如果 /etc/openstack-dashboard/local_settings.py 中参数 DISABLE_PASSWORD_REVEAL 的值为 True。
失败: 如果 /etc/openstack-dashboard/local_settings.py 中参数 DISABLE_PASSWORD_REVEAL 的值为 False。
注意
此选项是在 Kilo 版本中引入的。
Check-Dashboard-09: 参数 ENFORCE_PASSWORD_CHECK 是否设置为 True?¶
将 ENFORCE_PASSWORD_CHECK 设置为 True 将在“更改密码”表单上显示“管理员密码”字段,以验证确实是登录的管理员想要更改密码。
通过: 如果 /etc/openstack-dashboard/local_settings.py 中参数 ENFORCE_PASSWORD_CHECK 的值为 True。
失败: 如果 /etc/openstack-dashboard/local_settings.py 中参数 ENFORCE_PASSWORD_CHECK 的值为 False。
Check-Dashboard-10: 参数 PASSWORD_VALIDATOR 是否已配置?¶
允许使用正则表达式来验证用户密码的复杂性。
通过: 如果 /etc/openstack-dashboard/local_settings.py 中参数 PASSWORD_VALIDATOR 的值为任何非默认允许所有 “regex”: ‘.*’, 的值。
失败: 如果 /etc/openstack-dashboard/local_settings.py 中参数 PASSWORD_VALIDATOR 的值为允许所有 “regex”: ‘.*’
Check-Dashboard-11: 参数 SECURE_PROXY_SSL_HEADER 是否已配置?¶
如果 OpenStack Dashboard 部署在代理服务器后面,并且代理服务器从所有传入请求中删除 X-Forwarded-Proto 标头,或者设置 X-Forwarded-Proto 标头并将其发送到 Dashboard,但仅针对最初通过 HTTPS 发出的请求,那么您应该考虑配置 SECURE_PROXY_SSL_HEADER
更多信息请参见 Django 文档。
通过: 如果 /etc/openstack-dashboard/local_settings.py 中参数 SECURE_PROXY_SSL_HEADER 的值为 'HTTP_X_FORWARDED_PROTO', 'https'
失败: 如果 /etc/openstack-dashboard/local_settings.py 中参数 SECURE_PROXY_SSL_HEADER 未设置为 'HTTP_X_FORWARDED_PROTO', 'https' 或被注释掉。