我正在构建一套需要定期访问数据库的批处理作业,这些作业在 Solaris 10 机器上运行。由于(不可更改的)设计约束,我们需要使用某个程序来连接它。所述界面要求我们通过命令行传递纯文本密码以连接到数据库。这是一种糟糕的安全做法,但我们坚持下去。
我正在努力确保我们的事情得到妥善保护。由于处理是自动化的(即我们不能提示输入密码),而且我不能在磁盘之外存储任何东西,所以我需要一种安全存储密码的策略。
以下是一些基本规则
这是我到目前为止所拥有的
虽然我确信有更好的方法。
最佳答案
这不是密码学的解决方案。无论使用何种密码,攻击者都可以平等地访问 key 。 Cyrpto 并不能解决所有问题。
chmod 400 是最好的,这使它只读。 chmod 600 是读写,这可能是也可能不是要求。还要确保它被需要它的过程所控制。这真的是你能做的最好的。即使您与其他用户共享机器,他们也不应该能够访问它。希望这是一台专用机器,在这种情况下没有太大的威胁。 SELinux 或 AppArmor 将帮助加强系统免受跨进程/跨用户攻击。
编辑:
shred是您安全删除文件所需的工具。
编辑:根据 Moron/Mike 的评论,unix 命令 ps aux
将显示所有正在运行的进程以及用于调用它们的命令。例如,以下命令将公开给系统上的所有用户:wget ftp://user:password@someserver/somefile.ext
.一个安全的替代方法是使用 CURL 库。您还应该禁用您的 shell 历史记录。在 bash 中,您可以通过设置环境变量 export HISTFILE=
来做到这一点。
关于将密码存储在磁盘上的安全策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2868416/