安全加固 - 应用建议
有关安全加固的通用指南,请参阅主要安全加固文档。
您可以通过 Web 界面控制 GitLab 实例的安全加固建议。
系统钩子
- 在左侧边栏底部,选择管理员。
- 选择系统钩子。
在典型的加固环境中,内部信息不会在系统外部传输或存储。对于离线环境系统,这一点是默认的。系统钩子提供了一种方式,让环境中的本地事件能够根据触发器将信息传递到环境外部。
此功能的使用场景受到支持,特别是通过远程系统监控系统。 但是,部署系统钩子时必须格外谨慎。对于加固系统,如果它们旨在作为离线环境,必须强制执行允许相互通信的受信任系统边界,因此任何钩子(系统、Web 或文件)只能与这些受信任系统通信。强烈建议通过系统钩子进行通信时使用 TLS。
推送规则
- 在左侧边栏底部,选择管理员。
- 选择推送规则。
确保选中以下项目:
- 拒绝未验证的用户
- 不允许用户使用
git push移除 Git 标签 - 检查提交作者是否为 GitLab 用户
- 防止推送包含密钥的文件
这些调整有助于限制对已建立和授权用户的推送。
部署密钥
- 在左侧边栏底部,选择管理员。
- 选择部署密钥。
公共部署密钥用于授予对实例上所有项目的读取或读写权限,旨在用于远程自动化访问项目。在加固环境中不应使用公共部署密钥。如果必须使用部署密钥,请改用项目部署密钥。更多信息,请参阅部署密钥和项目部署密钥的文档。
通用设置
- 在左侧边栏底部,选择管理员。
- 选择设置 > 通用。
可以在 4 个部分进行加固调整。
可见性和访问控制
以下设置的默认值为私有:
- 默认项目可见性
- 默认代码片段可见性
- 默认群组可见性
只有被授予特定权限访问项目、代码片段或群组的用户才能访问这些资源。这可以在需要时或在创建时进行调整。这有助于防止意外或恶意地泄露信息。
根据您的安全策略和态势,您可能希望将受限可见性级别设置为公开,因为这可以防止非认证用户查看用户配置文件。
在导入源中,只选择您真正需要的源。
典型部署将启用的 Git 访问协议设置为SSH 和 HTTP(S),但如果您的用户不使用其中某个 Git 协议,请相应地将其设置为仅 SSH或仅 HTTP(S)。这有助于缩小攻击面。
对于 SSH 密钥类型,按以下顺序优先选择:ED25519(和 ED25519-SK)、RSA、ECDSA(和 ECDSA-SK)。当 RSA 设置为 2048 位或更高时,ED25519被认为与 RSA 一样安全,但 ED25519 密钥更小,算法也快得多。
ED25519-SK 和 ECDSA-SK 都以 -SK 结尾,代表"安全密钥"。-SK 类型与 FIDO/U2F 标准兼容,涉及与硬件令牌(例如 YubiKeys)的使用。
DSA 应设置为"被禁止"。DSA 有已知缺陷,许多密码学家对其持怀疑态度,不支持使用 ECDSA。
如果 GitLab 处于 FIPS 模式,请使用以下设置:
- 如果在 FIPS 模式下运行:
- 使用
RSA,设置为必须至少 2048 位。 - 使用
ECDSA(和ECDSA-SK),设置为必须至少 256 位。 - 将所有其他密钥类型设置为被禁止。
RSA和ECDSA都已获准用于 FIPS。
- 使用
- 如果不在 FIPS 模式下运行,必须使用
ED25519也可以使用RSA:- 将
ED25519(和ED25519-SK)设置为必须至少 256 位。 - 如果使用
RSA,将其设置为必须至少 2048 位。 - 将所有其他密钥类型设置为被禁止。
- 将
- 如果您正在为新的用户群组设置实例,请使用最大位数的设置来定义您的用户 SSH 密钥策略,以增加安全性。
在加固环境中,通常不需要 RSS 源,在源令牌中,选择禁用源令牌复选框。
如果您的所有用户都来自特定的 IP 地址,使用全局允许的 IP 范围来专门允许这些地址。
有关可见性和访问控制的更多详细信息,请参阅可见性和访问控制。 有关 SSH 设置的信息,请参阅SSH 密钥限制。
账户和限制
为了加固目的,确保Gravatar 启用旁边的复选框未被选中。应减少所有不必要的通信,在某些环境中可能受到限制。用户可以手动上传账户头像。
本部分的设置旨在帮助强制实施您自己特定标准的自定义实现。由于各种场景太多样化,您应该查阅账户和限制设置文档并进行更改以强制执行您自己的策略。
注册限制
确保在您的加固实例上禁用开放注册。确保注册启用复选框未被选中。
在邮件确认设置中,确保选择了严格。现在在授予访问权限前强制用户验证其电子邮件地址。
**最小密码长度(字符数)**的默认设置是 12,只要使用额外的认证技术,这应该没问题。密码应该复杂,因此确保选中所有这四个复选框:
- 要求包含数字
- 要求包含大写字母
- 要求包含小写字母
- 要求包含符号
如果您的所有用户都属于使用特定域作为电子邮件地址的同一组织,请在注册允许的域中列出该域。这可以防止其他域中的电子邮件地址用户注册。
有关更详细的信息,请参阅注册限制。
登录限制
应为所有用户启用双因素认证(2FA)。确保双因素认证(2FA)旁边的复选框被选中。
双因素认证宽限期的默认设置是 48 小时。这应该调整为更低的值,例如 8 小时。
确保启用管理员模式旁边的复选框被选中,以便管理员模式处于活动状态。这要求具有管理员权限的用户在执行管理任务时必须使用额外的认证,从而强制用户进行额外的 2FA。
在未知登录的邮件通知中,确保选中启用邮件通知。当从不被识别的位置发生登录时,这会向用户发送邮件。
有关更详细的信息,请参阅登录限制。
集成
- 在左侧边栏底部,选择管理员。
- 选择设置 > 集成。
通常,只要管理员控制和监控使用情况,在加固环境中使用集成是可以的。对于允许外部系统执行操作并触发通常需要您限制或审计的访问级别的操作和流程的集成要谨慎。
指标和分析
- 在左侧边栏底部,选择管理员。
- 选择设置 > 指标和分析。
加固的主要重点是使用统计:
-
您应该确保选中启用版本检查。这会检查您是否运行的是最新版本的 GitLab,并且随着新版本和新安全补丁的频繁发布,这有助于您保持最新。
-
如果您的环境是隔离的,或者您的组织要求限制向软件供应商收集数据和报告统计信息,您可能需要关闭启用服务 ping功能。
网络
- 在左侧边栏底部,选择管理员。
- 选择设置 > 网络。
对于任何启用速率限制的设置,确保它被选中。默认值应该没问题。此外,还有许多启用访问的设置,所有这些都应该被清除。
进行这些调整后,您可以微调系统以满足性能和用户需求,这可能需要禁用和调整速率限制或启用访问。以下是几个需要注意的重要事项:
-
在出站请求中,如果您需要向有限数量的系统开放访问,可以通过指定 IP 地址或主机名来限制仅访问这些系统。同样在此部分,如果您允许任何访问,请确保选中强制执行 DNS 重新绑定攻击保护。
-
在笔记速率限制和用户 API 速率限制下,如果需要,可以排除特定用户不受这些限制。