参考bacula-main.pdf > Bacula Data Encryption章节 https://www.bacula.org/9.6.x-manuals/en/main/main.pdf
我想对备份的数据进行加密,避免Bacula Server被攻击导致所有数据泄露。下文会先讲操作步骤,然后简单的描述一下工作原理。(加密算法方面我也不太清楚,加密具体怎么一回事我也讲不清楚。所以就不具体将加密原理了)
注意事项:配置完成以后请不要随意修改bacula-fd配置文件位置和密钥对文件!!!
操作步骤
都在客户端操作,服务器上配置不需要另外更改
- 创建master key
openssl genrsa -out master.key 2048
openssl req -new -key master.key -x509 -out master.cert
- 创建客户端专属的密钥对
openssl genrsa -out fd-example.key 2048
openssl req -new -key fd-example.key -x509 -out fd-example.cert
# 将密钥和私钥放到同一个文件中,这样在restore恢复文件到这台客户端的时候会自动解密
cat fd-example.key fd-example.cert >fd-example.pem
- 把
master.cert
和fd-example.pem
放到合适的目录下,我这边适合官方文档一样放到了/etc/bacula
目录下
注意:master.key
master.cert
请妥善备份到其他设备上,这是在客户端专属密钥丢失的情况下,唯一恢复文件手段
- 修改bacula-fd.conf 一般情况下在
/etc/bacula
目录下
FileDaemon { # this is me
Name = kms-aiit-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib/bacula
FDAddress = 10.0.102.7
PKI Signatures = Yes # 开启签名
PKI Encryption = Yes # 开启加密
PKI Keypair = "/etc/bacula/fd-example.pem" # 配置加密密钥对, 包含了公钥和私钥
PKI Master Key = "/etc/bacula/master.cert" # 配置master key 只包含公钥部分
}
重启bacula-df.service
命令:sudo systemctl restart bacula-fd.service
工作原理
支持的加密算法:
Symmetric Encryption:
- 128, 192, and 256-bit AES-CBC
- Blowfish-CBC
Asymmetric Encryption (used to encrypt symmetric session keys):
- RSA
Digest Algorithms:
- MD5
- SHA1
- SHA256
- SHA512
每一个客户端都创建自己的独有的 PKI Keypair,就是fd-example.pem文件。里面包含了给文件加解密的公钥和私钥。默认情况下是用这组密钥进行加解密的。
管理员保存Master Key 并将公钥配置到各台客户端中
可理解为万能钥匙
当不慎出现fd-example.pem丢失的情况,可以用下列步骤解密文件
cat master.key master.cert >master.keypair
# 把bacula-df.conf中的配置改成下面这样
PKI Keypair = master.keypair # 用master key来解密文件