我有一个 Linux 守护进程,用于访问某些服务(数据库等)。它需要一些密码。以安全的方式向守护进程提供密码的最佳方法是什么?
我目前将密码存储在 root 只读配置文件中,但依赖权限似乎不太安全。
我正在考虑在守护进程启动时提示用户输入密码,并将密码仅存储在内存中。当然,对于拥有 root 访问权限的专职攻击者来说,这只是一个小障碍,但至少它可以保护备份、快照等,并可能赢得一些时间。
还有其他选择吗?还有推荐吗?
答案1
有多种设置方法,包括首先使用不同于密码的身份验证方法。
一种方法可能是使用 TLS/SSL 证书进行连接。但通常情况下,将密码保存在只读文件中就足够了 - 正如 Kondybas 所说,如果 root 帐户被盗用,那么一切都会被盗用.... 您可能还希望在启动服务之前让启动脚本执行 chmod 400,并在启动后执行 chmod 000。
因此,您不应只关注如何确保实际密码的安全,而应该在目标服务器上做一些工作。对于数据库,我首先要限制哪些主机可以使用 Linux 服务器使用的用户名进行连接。我还会限制用户可以对数据库执行的操作 - 例如,您可能希望 Linux 守护程序能够向数据库添加内容,但可能不执行此操作DROP TABLE
。
您还应该尽可能确保服务器的安全。除非绝对必要,否则不应由 root 运行守护进程;SSH 端口不应允许从 Internet 上的任何主机进行访问,当然也不允许 root 登录。
还要确保密码不会在其他任何地方重复使用,否则该服务器的入侵可能会导致网络漏洞的升级。
您还可以在以下网址搜索安全有用。