用于在磁盘上存储密码的安全策略

Mik*_*ike 6 unix security passwords cryptography

我正在构建一组批处理作业,需要定期访问在Solaris 10计算机上运行的数据库.由于(不可变)的设计约束,我们需要使用某个程序来连接它.所述接口要求我们通过命令行传递明文密码以连接到数据库.这是一种可怕的安全措施,但我们坚持使用它.

我正在努力确保事情得到妥善保护.由于处理是自动化的(即,我们无法提示输入密码),并且我无法在磁盘外存储任何内容,因此我需要一种安全存储密码的策略.

这是一些基本规则

  1. 该系统有多个用户.
  2. 我们可以假设我们的权限得到了正确执行(即,如果一个文件的chmod为600,那么它将不会公开可读)
  3. 我不介意任何有超级用户访问权限的人查看我们存储的密码

这是我到目前为止所得到的

  • 将密码存储在password.txt中
  • $ chmod 600 password.txt
  • 进程在需要时从password.txt读取
  • 当不再需要时,缓冲区被零覆盖

虽然我确信有更好的方法.

roo*_*ook 5

这不是加密的解决方案.无论使用何种密码,攻击者都可以同样访问密钥.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=