存储脚本使用的密码的最不安全的方法是什么?

ænd*_*rük 13 security scripts authentication automation password

我有一个 Bash 脚本,它使用我的用户名和密码自动对服务进行身份验证。凭据当前以纯文本形式存储在脚本中。

我应该采取什么预防措施来最安全地存储这些凭据,同时仍然允许脚本访问?

澄清要点:

  • 我了解,如果可用,应改用其他身份验证方法。我仍然想知道在密码身份验证是唯一选择的情况下该怎么做。
  • 根本不存储密码在这里是不可接受的答案。我问的是脚本必须在无人值守的情况下访问密码的情况。

Rin*_*ind 14

不要在文件中硬编码密码,而是将密码存储在单独的文件中并保护文件(chmod 700chmod 500),以便只有授权用户才能访问它。

检索密码cat /dir/to/file/with/.password而不是读取文件并将其内容存储到变量中。

  • ...并使其成为 .dotfile (/dir/to/file/with/.password) (2认同)
  • `chmod 400` 用于文件(只读)。当然,您必须保护主要目录(700 或 500,如果您偏执甚至 100)。请注意,400(或 500 用于目录)就足够了,其他模式(100)可以被认为是[安全通过默默无闻](https://en.wikipedia.org/wiki/Security_through_obscurity),就像通过放置一个隐藏文件点在名字前面。 (2认同)

Lek*_*eyn 8

什么样的服务?某些服务有其他验证方法,例如用于 SSH 的 SSH 密钥与 SSH 代理。

我会将密码与脚本分开存储,并确保所有路径组件都设置了正确的权限。例如,确保路径/path/to/file中的//path/path/to由您信任的用户 ( root)拥有,并且这些不能被不允许查看您的文件的人写入。最后,推荐的权限file是 600 或 400。

file看起来是这样的:

PASSWORD='something that you cannot remember'
Run Code Online (Sandbox Code Playgroud)

在您的脚本中,使用以下代码导入变量:

. /path/to/file
Run Code Online (Sandbox Code Playgroud)

至于您的脚本,请确保它不包含可能允许攻击者在脚本上下文中执行代码的漏洞(例如,可能具有任意$PATH变量集的不受控制的环境或其他文件的无效使用(例如,获取世界可写文件) .

至于密码的实际保护,你不能。它必须以某种方式对其他服务可用。作为替代方案,您可以加密包含密码的文件/脚本,openssl或者gpg您需要在解锁凭据之前输入密码。如果您的服务密码难以记住,这将特别有用。