检查清单¶
Check-Shared-01: 是否将配置文件用户/组所有权设置为 root/manila?¶
配置文件包含组件平稳运行所需的关键参数和信息。如果未授权用户有意或无意地修改或删除任何参数或文件本身,则会导致严重的可用性问题,从而导致其他端用户无法访问服务。因此,此类关键配置文件的用户所有权必须设置为 root,组所有权必须设置为 manila。此外,包含目录应具有相同的所有权,以确保正确拥有新文件。
运行以下命令
$ stat -L -c "%U %G" /etc/manila/manila.conf | egrep "root manila"
$ stat -L -c "%U %G" /etc/manila/api-paste.ini | egrep "root manila"
$ stat -L -c "%U %G" /etc/manila/policy.json | egrep "root manila"
$ stat -L -c "%U %G" /etc/manila/rootwrap.conf | egrep "root manila"
$ stat -L -c "%U %G" /etc/manila | egrep "root manila"
通过: 如果所有这些配置文件的用户和组所有权分别设置为 root 和 manila。上述命令显示 root manila 的输出。
失败: 如果上述命令未返回任何输出,因为用户和组所有权可能设置为除 root 以外的任何用户或除 manila 以外的任何组。
Check-Shared-02: 是否为配置文件设置了严格的权限?¶
与之前的检查类似,建议为这些配置文件设置严格的访问权限。
运行以下命令
$ stat -L -c "%a" /etc/manila/manila.conf
$ stat -L -c "%a" /etc/manila/api-paste.ini
$ stat -L -c "%a" /etc/manila/policy.json
$ stat -L -c "%a" /etc/manila/rootwrap.conf
$ stat -L -c "%a" /etc/manila
也可以进行更广泛的限制:如果包含目录设置为 750,则可以保证在此目录中创建的新文件将具有所需的权限。
通过: 如果权限设置为 640 或更严格,或者包含目录设置为 750。权限 640 转换为所有者 r/w、组 r 以及对其他人的无权访问,即“u=rw,g=r,o=”。请注意,使用 Check-Shared-01: 是否将配置文件用户/组所有权设置为 root/manila? 和权限设置为 640,root 具有读/写访问权限,manila 具有对这些配置文件的读取访问权限。还可以使用以下命令验证访问权限。如果您的系统支持 ACL,则此命令才可用。
$ getfacl --tabular -a /etc/manila/manila.conf
getfacl: Removing leading '/' from absolute path names
# file: etc/manila/manila.conf
USER root rw-
GROUP manila r--
mask r--
other ---
失败: 如果权限未设置为至少 640。
Check-Shared-03: 是否使用 OpenStack Identity 进行身份验证?¶
注意
此项目仅适用于 Rocky 及更早的 OpenStack 版本,因为 auth_strategy 在 Stein 中已被弃用。
OpenStack 支持各种身份验证策略,例如 noauth 和 keystone。如果使用“noauth”策略,则用户无需任何身份验证即可与 OpenStack 服务交互。这可能是一种潜在风险,因为攻击者可能会获得对 OpenStack 组件的未经授权访问。因此,强烈建议所有服务都使用其服务帐户通过 keystone 进行身份验证。
通过: 如果 manila.conf 中 [DEFAULT] 部分下参数 auth_strategy 的值为 keystone。
失败: 如果 manila.conf 中 [DEFAULT] 部分下参数 auth_strategy 的值为 noauth。
Check-Shared-04: 是否为身份验证启用了 TLS?¶
OpenStack 组件使用各种协议相互通信,并且通信可能涉及敏感或机密数据。攻击者可能会尝试窃听通道以获取对敏感信息的访问权限。所有组件必须使用安全的通信协议相互通信。
通过: 如果 /etc/manila/manila.conf 中 [keystone_authtoken] 部分下参数 www_authenticate_uri 设置为以 https:// 开头的 Identity API 端点,并且相同 [keystone_authtoken] 部分中相同 /etc/manila/manila.conf 下参数 insecure 设置为 False。
失败: 如果 /etc/manila/manila.conf 中 [keystone_authtoken] 部分下参数 www_authenticate_uri 未设置为以 https:// 开头的 Identity API 端点,或者相同 [keystone_authtoken] 部分中相同 /etc/manila/manila.conf 下参数 insecure 设置为 True。
Check-Shared-05: 共享文件系统是否通过 TLS 与计算服务通信?¶
注意
此项目仅适用于 Train 及更早的 OpenStack 版本,因为 auth_strategy 在 Ussuri 中已被弃用。
OpenStack 组件使用各种协议相互通信,并且通信可能涉及敏感或机密数据。攻击者可能会尝试窃听通道以获取对敏感信息的访问权限。因此,所有组件必须使用安全的通信协议相互通信。
通过: 如果 manila.conf 中 [DEFAULT] 部分下参数 nova_api_insecure 设置为 False。
失败: 如果 manila.conf 中 [DEFAULT] 部分下参数 nova_api_insecure 设置为 True。
Check-Shared-06: 共享文件系统是否通过 TLS 与网络服务通信?¶
注意
此项目仅适用于 Train 及更早的 OpenStack 版本,因为 auth_strategy 在 Ussuri 中已被弃用。
与之前的检查 (Check-Shared-05: 共享文件系统是否通过 TLS 与计算服务通信?) 类似,建议所有组件使用安全的通信协议相互通信。
通过: 如果 manila.conf 中 [DEFAULT] 部分下参数 neutron_api_insecure 设置为 False。
失败: 如果 manila.conf 中 [DEFAULT] 部分下参数 neutron_api_insecure 设置为 True。
Check-Shared-07: 共享文件系统是否通过 TLS 与块存储服务通信?¶
注意
此项目仅适用于 Train 及更早的 OpenStack 版本,因为 auth_strategy 在 Ussuri 中已被弃用。
与之前的检查 (Check-Shared-05: 共享文件系统是否通过 TLS 与计算服务通信?) 类似,建议所有组件使用安全的通信协议相互通信。
通过: 如果 manila.conf 中 [DEFAULT] 部分下参数 cinder_api_insecure 设置为 False。
失败: 如果 manila.conf 中 [DEFAULT] 部分下参数 cinder_api_insecure 设置为 True。
Check-Shared-08: 请求体最大大小是否设置为默认值 (114688)?¶
如果未定义每个请求的最大主体大小,则攻击者可以构造一个任意大小的 OSAPI 请求,导致服务崩溃并最终导致拒绝服务攻击。分配最大值可确保阻止任何恶意的大尺寸请求,从而确保服务的持续可用性。
通过: 如果 manila.conf 中 [oslo_middleware] 部分下参数 max_request_body_size 设置为 114688,或者如果 manila.conf 中 [DEFAULT] 部分下参数 osapi_max_request_body_size 设置为 114688。参数 osapi_max_request_body_size 在 [DEFAULT] 下已被弃用,最好使用 [oslo_middleware]/max_request_body_size。
失败: 如果 manila.conf 中 [oslo_middleware] 部分下参数 max_request_body_size 未设置为 114688,或者如果 manila.conf 中 [DEFAULT] 部分下参数 osapi_max_request_body_size 未设置为 114688。