问题是如何以安全性方面最好的方式自动将备份从服务器 A 传输到服务器 B?
这是我的想法:
- 授权服务器 A 公钥访问服务器 B
- 在服务器B上创建用户仅用于备份
- 在服务器A上运行ssh-agent,重启后手动输入密码
- 使用 scp 自动将文件从服务器 A 复制到服务器 B
但是如果坏人可以访问服务器 A,他基本上也可以访问服务器 B。那么我必须限制服务器B用户吗?我该如何做到这一点,这是通过网络进行整个备份的最佳方式吗?
问候
答案1
- 不允许服务器 A 隐式
ssh
访问服务器 B,也不允许服务器 B 隐式ssh
访问服务器 A。密码不同。没有基于证书的登录。不可信。 - 在服务器 A 上设置
rsync
为守护进程,以便它提供对备份的只读访问,并且只能从服务器 B 进行。不是通过ssh
,而是直接。 rsync
让服务器 B 定期从服务器 A复制备份。(不是rsync
通过ssh
,而是使用rsync
传输协议)- 使用 VPN 或类似的东西
stunnel
来保护rsync
服务器 A 和服务器 B 之间的流量。
答案2
你几乎已经拥有了。服务器 B 上的用户必须,这将禁止从服务器 A 进行交互式登录/bin/false
以 shell 形式给出(但仍然可以获取或删除服务器 B 上的文件)。
编辑:
- 用作
/bin/false
shell禁止复制 - 还使用
/usr/sbin/nologin
(他的帐户目前不可用。)
更复杂的解决方案将涉及vsftp
(not ftps
),但这需要 ssl 证书。
答案3
我建议cronjob
使用scp
复制文件。
编写一个 shellscript backupToServer.sh
,它将要备份的文件打包,然后将它们放在服务器上scp /path/to/backup/tar user@server:/path/where/backup/is/stored
。利用ssh 密钥。
您可以使用date
或类似的工具来正确命名您的备份。
与crontab -e
您一起添加新的cronjob
.看一下 的时间设置crontab
,虽然很琐碎,但乍一看却很奇怪。