安全存储密码以进行自动静态备份

问题描述 投票:0回答:2

背景

平台:archlinux 和 ubuntu

我有一个 shell 脚本,可以将我的数据备份到 Restic 服务器。为了执行备份,脚本需要访问 Restic 存储库密码。有多种方法可以为 Restic 提供密码(用户输入、环境变量、shell 命令、文件),我目前将密码以明文形式保存在文件中。

问题

此文件只能由 root 访问(该脚本以 root 身份作为 systemd 服务运行),但这并不能使其特别安全。任何访问我笔记本电脑的人都可以恢复我的备份密码。我知道如果我的笔记本电脑被盗,我可以更改存储库的密码,但我正在寻找一种不涉及人工干预的解决方案。我寻找比我更有经验的人如何做到这一点,但找不到更好的方法。

  • 用户输入方法不适合我,因为我希望脚本完全自动化。

  • 环境变量方法只能解决问题,因为该变量需要在某个时刻设置并存储在文件中。

  • shell 命令也许可以从文件中解密密码,但这也只是将问题转移到存储解密密钥。但是,如果系统可以以安全的方式处理解密密钥,那么解密密钥就可以工作。我没有任何这方面的经验,所以我不知道去哪里寻找,但这是我发现的最有希望的方法。

问题

是否有一种安全的方法来存储 Restic 存储库的密码,以便执行自动备份,从而防止攻击者(访问计算机)恢复密码?

PS

我想避免手动输入密码。我希望脚本是全自动的。我正在寻找某种对密码文件的锁定,该锁定会在我登录时打开。我不知道这样的东西是否存在。

谢谢!

security automation passwords
2个回答
0
投票

这不是与 Restic 相关的问题,而是与一般数据加密和访问相关的问题。由于您希望脚本完全自动,因此您正确地注意到,您需要将密码存储在某处。安全地做到这一点的唯一方法是使用某种加密。因此,您要么必须加密整个磁盘、其中的某些部分(例如 /home),要么使用拇指驱动器等外部设备。这种增强的安全性是以一定程度的不方便为代价的。 PAM可以与mounting结合使用,以便在您登录时自动进行解密。

这种方法的缺点是登录密码必须安全。如果您经常登录,这可能会很烦人。另一种方法是创建一个加密容器,并在登录后将其打开,以便您拥有单独的密码。无论哪种方式,您都必须通过输入密码或提供密钥文件来进行身份验证。

最好为该密码文件创建单独的备份,以免在您的加密磁盘/驱动器因某种原因发生故障时失去对 Restic 存储库的访问权限。


-1
投票
  1. 您需要自定义restic.exe以从Web中的某个存储库获取密码(选中此项并在代码中进行修改以从存储库获取密码)https://github.com/restic/restic

像这样的事情。

  1. Restic 不应从命令行/环境变量获取密码。

  2. Restic 应该从某个存储库(有密码)获取密码,为此,您需要通过更改 Restic 代码库来自定义它。

  3. 您还可以加密存储在保管库中的密码,解密将在 Restic.exe 中进行(这需要额外的更改)

你需要学习 go 语言,并且要实现此实现,因为 Restic 是在 golang 中实现的

实施可能需要一周时间

© www.soinside.com 2019 - 2024. All rights reserved.