2016-03-07 143 views
0

我的一个java类将连接到另一个服务器,并使用rest服务进行一些操作。 Java类需要 - 用户名和密码才能连接到远程服务器。在其他机器上,我们使用oracle cwallet.sso来存储凭据,但这不是当前机器的选项。我正在考虑在加入一些盐的属性文件中存储加密的密码。我还需要将密钥和盐串存储到某个安全的地方。我们有没有其他的RHEL密码管理方式,比如cwallet,或者有什么建议,应该是实现这个目标的最佳方式?存储敏感信息

请注意,我将使用shell脚本调用此类。

感谢

+0

这是你打算使用的吗? – OscarSan

回答

2

这是棘手的,因为如果有人得到访问您的服务器已经在游戏结束。因此,解决方案不仅仅是加密数据,因为它不会做太多,但是您需要深入的安全性。

把这个放在上下文中,你可以让密码加密,不管什么......当攻击者访问服务器时,他将无法读取任何这些文件(即使使用加密的密码)除非他能够成为运行该应用程序的用户。如果他设法做到这一点,他只需要做一次内存转储,然后捕获密码(这并不困难)。

所以真实世界的解决方案是:

  • 只允许一人有限数量的登录服务器上。
  • 只允许更小的数字成为运行应用程序服务器的用户。
    • 这一群人谁可以读取/更新的项目属性文件
  • 禁用任何类型的备份对包含机密文件。

同样,加密文件上的密码可能会给你一种安全感,但如果按照上述步骤操作,任何人都可以读取该文件,也可以读取该应用程序的内存内容。即使有人正确地做了事情并将密码存储在一堆非法内存中,一些Linux工具也可以读取整个过程的内存映射,所以游戏结束了。

在这种情况下使用加密只是增加了默默无闻的保护。

+0

我同意没有什么是安全的。 Infra /安全团队将确保有限的访问权限。作为程序员,我正在寻找一些关于我们可以实现安全性的最佳方式的建议。 –

+0

在服务器上使用双因素身份验证。仔细控制谁有第二个因素,就是很容易忘记取消授权。如果第二个因素是短信或电子邮件,请使用公司发布的电话。硬标记是最好的,您可以跟踪用户的序列号。您可以借出令牌并将其退回,但不能借用密码。 – zaph