参考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 2048openssl req -new -key master.key -x509 -out master.cert
- 创建客户端专属的密钥对
openssl genrsa -out fd-example.key 2048openssl 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 meName = kms-aiit-fdFDport = 9102 # where we listen for the directorWorkingDirectory = /var/lib/baculaPid Directory = /run/baculaMaximum Concurrent Jobs = 20Plugin Directory = /usr/lib/baculaFDAddress = 10.0.102.7PKI 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-CBCAsymmetric Encryption (used to encrypt symmetric session keys):- RSADigest 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来解密文件
