安全地限制对私有 Debian 存储库的访问

安全地限制对私有 Debian 存储库的访问

我正在寻找一种方法来限制对私有 Debian 存储库的访问,并能够以非交互方式对其进行身份验证(即使用脚本)

我发现最有用的文章实际上是来自Debian 管理站点但安全方法使用 ssh 和公钥/私钥。它工作得很好,但每个主机的公钥都需要位于远程 authorized_keys 文件中才能成功验证。它没有提到向 ssh:// 提供密码,但我认为这应该是可能的。

您是否尝试过其他替代方案(例如 ftps)?

提前致谢

答案1

如果你总是apt-get手动运行你的服务器(没有apt-getcron 自动启动的命令),那么你可以考虑使用ssh 代理转发。这样就避免了必须为您管理的每个服务器管理一个公钥/私钥对,而且可能比在每个服务器上都留下私钥更安全。

初始配置 - 连接到您想要管理的服务器,并添加类似这样的内容/etc/apt/sources.list(此示例假设您希望您的服务器连接到帐户manager):

    deb ssh://[email protected]/path other stuff
  • 在您自己的计算机上创建一对私钥/公钥,johndoe例如使用您的登录名(假设您的计算机运行的是 debian:如果不是,您可以从专用于管理的 debian 服务器执行此操作):

    ssh-keygen
    
  • 确保它受到强关键词的保护
  • 将您的公钥复制到存储库服务器/home/manager/.ssh/authorized_keys

    ssh-copy-id [email protected]
    

每个管理会话一次

  • 输入以下命令在你的机器上启动 ssh 代理:

    eval `ssh-agent`
    
  • 将您的密钥添加到代理(这将需要您的密码):

    ssh-add
    

管理服务器

  • 连接到您想要管理的服务器ssh -A-A激活代理转发):

    ssh -A some.server.org
    
  • 切换到 root (如果你想使用sudo你需要配置/etc/sudoers否则sudo会破坏代理转发,读这个):

    su
    
  • 现在,您应该能够使用 ssh 连接到存储库的管理员帐户,而无需再次输入密码,这要归功于代理转发。因此,apt-get应该可以正常工作:

    apt-get udate
    

结束管理会话

  • 完成服务器管理后,从代理中删除密钥:

    ssh-add -D
    

优点

  • 不需要太多初始配置
  • 只需一个私钥
  • 私钥受强密码保护
  • 如果有人获得您某台服务器的根访问权限,他们将无法立即访问您的存储库服务器。
    • 请注意,如果黑客有足够的耐心和技能,他可以等到您使用代理转发连接到服务器,然后他可以劫持转发机制以访问您的存储库服务器。
    • 为了防止这种情况,您可以使用ssh-ask来接受/拒绝每次使用密钥的尝试。
    • 无论如何,黑客都会不是获得私钥本身的访问权限:他只需劫持转发机制即可使用密钥,并且仅在您连接到服务器期间。

答案2

一种方法是只允许一组特定的 IP 访问存储库。这种方法对于 LAN 和 VPN 非常有效。

簡單、高效。

答案3

您可以设置对存储库的 https 访问,并通过登录名/密码(基本身份验证)进行保护。问题是您需要输入明文登录名/密码/etc/apt/sources.list(注意:有一个补丁以允许输入登录名/密码/root/.netrc)。

答案4

问题中的链接显示了多种方法。您需要第二种方法,https + 基本身份验证。

相关内容