保护 Nexus 免受供应链攻击
Secure Nexus against supply chain attacks
我们从可公开访问的 reprepro Debian 软件包存储库(由 Apache Web 服务器提供支持)切换到 Sonatype Nexus Repository OSS,这是一款很棒的软件。但是我们 运行 遇到了一个问题:当有人上传 Debian 软件包时,它会在 Nexus 服务器上签名,我们将其暴露给 customers/the 互联网。此外,用于包签名的 Nexus 已知 GPG 密钥和密码。
或者换句话说:我害怕类似SolarWinds供应链攻击的情况。场景:Person 攻击可公开访问的 Nexus server/Nexus 本身,接管 Nexus,更改现有包并使用 GPG key/GPG 密码退出它们。然后,向我们的客户提供恶意代码。
我考虑将文件 blob 存储目录作为只读目标公开给公开公开的 Web 服务器,并将 Nexus 公司内部保留。遗憾的是内部文件 blob 存储布局不同,所以这是不可能的。
所以我的问题:
有没有一种好方法可以公开 Deb/RPM/Docker/etc 中的 blob 存储。兼容的格式,可以由更受保护的、可公开访问的 Apache 服务器提供服务,并由 dpkg/yum/dnf/Docker 等人使用?
我还考虑了第二个只读 Nexus 服务器,它每 10 分钟左右进行一次 rsync。然后攻击者将接管此服务器,但包签名检查(至少 DEB/RPM)阻止安装被篡改的包
使用基于证书的身份验证的 Apache 反向代理(我想这是最安全但最复杂的解决方案)
但也许已经有这样的 feature/another 方法,而我只是在文档中遗漏了它?
最后我们想出了几个步骤来最小化风险:
- 使用通过 GeoIP 过滤的代理(只能从我们客户所在的国家/地区访问存储库)
- 阻止除以下以外的所有 URI(替换为您的存储库名称):
- /service/rest/repository/browse/REPONAME/*>
- /repository/REPONAME/*>
- /static/css/nexus-content.css*>
- /favicon.ico*>
- /favicon-*.png>
我们从可公开访问的 reprepro Debian 软件包存储库(由 Apache Web 服务器提供支持)切换到 Sonatype Nexus Repository OSS,这是一款很棒的软件。但是我们 运行 遇到了一个问题:当有人上传 Debian 软件包时,它会在 Nexus 服务器上签名,我们将其暴露给 customers/the 互联网。此外,用于包签名的 Nexus 已知 GPG 密钥和密码。
或者换句话说:我害怕类似SolarWinds供应链攻击的情况。场景:Person 攻击可公开访问的 Nexus server/Nexus 本身,接管 Nexus,更改现有包并使用 GPG key/GPG 密码退出它们。然后,向我们的客户提供恶意代码。
我考虑将文件 blob 存储目录作为只读目标公开给公开公开的 Web 服务器,并将 Nexus 公司内部保留。遗憾的是内部文件 blob 存储布局不同,所以这是不可能的。
所以我的问题:
有没有一种好方法可以公开 Deb/RPM/Docker/etc 中的 blob 存储。兼容的格式,可以由更受保护的、可公开访问的 Apache 服务器提供服务,并由 dpkg/yum/dnf/Docker 等人使用?
我还考虑了第二个只读 Nexus 服务器,它每 10 分钟左右进行一次 rsync。然后攻击者将接管此服务器,但包签名检查(至少 DEB/RPM)阻止安装被篡改的包
使用基于证书的身份验证的 Apache 反向代理(我想这是最安全但最复杂的解决方案)
但也许已经有这样的 feature/another 方法,而我只是在文档中遗漏了它?
最后我们想出了几个步骤来最小化风险:
- 使用通过 GeoIP 过滤的代理(只能从我们客户所在的国家/地区访问存储库)
- 阻止除以下以外的所有 URI(替换为您的存储库名称):
- /service/rest/repository/browse/REPONAME/*>
- /repository/REPONAME/*>
- /static/css/nexus-content.css*>
- /favicon.ico*>
- /favicon-*.png>