我的一个java类将连接到另一台服务器并使用休息服务执行一些操作。 Java 类需要 - 用户名和密码才能连接到远程服务器。在其他计算机上,我们过去使用 oracle cwallet.sso 存储凭据,但这不是当前计算机的选项。我正在考虑将加密密码存储在属性文件中,添加一些盐。我还需要将 key 和盐串存储到某个安全的地方。我们在 RHEL 中是否有其他密码管理替代方案(例如 cwallet),或者有什么建议是实现此目的的最佳方法?
请注意,我将使用 shell 脚本调用此类。
谢谢
最佳答案
这很棘手,因为如果有人访问您的服务器,游戏就结束了。因此,解决方案不仅仅是加密数据,因为它起不了多大作用,但您需要深度安全性。
为了将其放在上下文中,您可以对密码进行加密,加盐等......当攻击者访问服务器时,他将无法读取任何这些文件(即使使用加密的密码),除非他能够成为运行该应用程序的用户。如果他设法做到这一点,他只需要进行内存转储,然后寻找密码(这并不难)。
所以现实世界的解决方案是:
- 仅允许有限数量的人登录服务器。
- 只允许更少的用户成为运行应用服务器的用户。
- 这组人可以读取/更新属性文件
- 对包含 secret 的文件禁用任何类型的备份。
同样,对文件上的密码进行加密可能会给您带来安全感,但同样,如果您按照上述步骤操作,任何可以读取该文件的人也将能够读取应用程序的内存内容。即使有人做得正确并将密码存储在堆外内存中,一些 Linux 工具也可以读取进程的整个内存映射,所以游戏再次结束。
在这种情况下使用加密只会增加模糊性,并且没有真正的保护。
关于java - 存储敏感信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853560/