如何安全地将代理密码存储在系统范围的 Linux 配置文件中?

如何安全地将代理密码存储在系统范围的 Linux 配置文件中?

我在大学环境中的虚拟机上工作,其中其他几个用户也具有 root 访问权限。以 /etc/rhsm/rhsm.conf 这样的配置文件为例:

proxy_hostname =
proxy_port =
proxy_user =
proxy_password =

现在,大学的代理服务器需要用户名和密码。但我真的不想将自己的个人用户名和密码存储在其他(尽管他们可能是值得信赖的)系统管理员可以读取的文件中。有解决方案吗?

对于 Git,我们可以将各自的密码保存在本地目录中。(仔细想想,这在技术上并不安全,因为任何人都可以读取任何目录,但至少其他系统管理员不会在不查看的情况下意外碰到密码。)

答案1

答案很简单,这是不可能的。root 用户对服务器有完全访问权限。SELinux 等工具可能会使其他管理员的操作变得更加困难,但并非不可能。

基本上有三种选择:

  • 通过将密码隐藏在您的目录中的某个位置来稍微混淆它。即按照 Steve 的建议,使用 ~/boring/work/stuff/completely/unrelated/to/proxy/password.cfg 中的配置运行您自己的代理。或者说服代理要求程序从某个二进制文件中获取密码(或配置文件),该二进制文件将尝试检查它是否正在将密码发送给代理进程。或者使用硬编码的密码编译代理二进制文件。有很多可能性,但都是通过模糊性实现安全性。
  • 将密码存储在只有您是管理员或所有者的地方(其他服务器、闪存驱动器等),并尝试说服代理以某种方式从该位置获取密码。
  • 要求一个不需要被其他管理员保护的不同密码。

如果您“信任”其他管理员,并且只想保护密码以防意外丢失,那么第一种选择是不错的选择。第二种是“正确的安全”方式。第三种是“正确的企业”方式。

但是还有一件事你应该考虑。一旦密码被加载到代理中,坏人就可以尝试将其从代理中取出。虽然这似乎不是什么大问题,但如果对父代理的身份验证过程使用明文密码,那么这可能非常容易。甚至可能是其他一些管理员出于正当理由分析网络流量而意外发生的。

相关内容