SSH 作为 sudo 的替代品

主要观点:

  • sudodoas等工具依赖setuid二进制文件和特权提升来以 root 身份运行命令,设计不理想且有局限性,如整个用户会话需保留提升特权的能力、在受限用户命名空间中运行整个用户会话时不起作用、setuid二进制文件会限制系统整体的安全性。
  • 一种有趣的替代方案是[s6-sudod](https://skarnet.org/software/s6/s6-sudod.html),将程序分为特权服务器和非特权客户端两部分。
  • 进行了一项实验,使用本地ssh模拟sudo的功能,不将sshd实例暴露到网络,实现授权用户以 root 身份运行命令且不使用特权提升。

关键信息和重要细节:

  • 配置专用 SSH 密钥用于 root 身份认证,将其放在单独文件/root/.ssh/local_keys中。
  • 运行绑定到 unix 域套接字的sshd服务器实例,收紧权限,覆盖PermitRootLogin选项并使用新创建的密钥文件。
  • 锁定 root 账户禁止通过常规机制登录,修改/etc/passwd中的 root 密码并替换特殊前缀。
  • 使用ProxyCommand选项通过socatProxyUseFdpass连接到本地sshd实例,最初使用socat时存在开销问题,后找到合适的脚本passfd.py解决。
  • 结论指出该技术可行,主要依赖 OpenSSH 的安全细节,配置新主机简单,passfd.py脚本可改进为可执行文件放入/usr/local/binssh命令也可放入包装器。

注意:文中↩︎↩︎为注释说明,分别表示对相关配置的解释。

阅读 9
0 条评论