显然,我们不想在每个脚本中对明文密码进行硬编码.这会使密码循环变得困难,因为除了密码首先是明文密码之外,还需要更改大量的脚本.
如果脚本将密码作为参数,那么我们需要担心修改’ps’输出以不显示密码参数的值.我们还必须担心shell历史记录中记录的命令.这可以通过bash上的HISTIGNORE / HISTCONTROL来处理,但是还有其他shell在使用时具有不同且灵活性较差的控件(例如:zsh).
我们还可以使用特定于命令行的环境变量(FOO = bar ./script),而’FOO = bar’不会显示在’ps’中,默认情况下它仍会记录到shell历史记录中.此外,一些系统无论如何都会暴露其他用户的过程环境(通过“ps”).
可以使用密码(配置)文件来简单地存储明文密码.该文件可以拥有/许可,以加强其访问权限.但是,在一天结束时,您仍然有明文密码.
提示也是一种选择,但这往往不那么方便(例如,仍然可以通过期望),并且如果脚本需要,则使非交互性变得复杂.
可以使用某些风格的加密,但是我们仍然有类似的问题来处理解密密钥.
我应该选择以上其中一种吗?其他选择可能更优越吗?人们如何处理这种情况是一种安全的方式?
这里的一般目标是,如果攻击者以某种方式进入使用数据库服务器的系统,则攻击者不应该能够组成数据库服务器.例如,攻击不应该只是找到位于某处的密码,不应该观察系统(‘ps’)来发现它,并且不应该“回顾过去” (shell历史)找到它.
我正在完善意识到有数百万个场景(kmem,交换页面等等等),并且如果攻击者获得root或物理访问并且没有任何东西是100%安全的话,大多数赌注都会被关闭.我只是在寻找合理的最佳方法.