バックアップファイルを 256bit AES で暗号化する方法について考えます。
バックアップの作成に使用した afio には、バックアップ対象のファイルを個別に圧縮する機能があります。圧縮に使用する外部プログラムは引数で変更出来るので、これを利用して暗号化を行います。
まずは、下のような暗号化用のフィルタを作成します。
#!/bin/sh # encrypt_filter.sh opt="-pass env:FILTER_PASSWORD" if [ -r /etc/wp_backup_password ]; then opt="-pass file:/etc/wp_backup_password" fi gzip -c | openssl enc -e -aes-256-cbc $opt
次に afio に -P オプションでフィルタプログラムを使用させます。
afio -ovz -Z -U -P encrypt_filter.sh backup.afz
これでバックアップファイルが作成される際に個別のファイル毎に暗号化されるようになります。
/etc/wp_backup_password ファイルが暗号鍵になります。このファイルはバックアップを元に戻す時に必要になるので安全な場所に保管しておかないといけません。パスワードファイルの中身はなんでも構わないので、うちのサイトでは以下のようにしてランダムに作成しています。
dd if=/dev/urandom of=/etc/wp_backup_password bs=256 count=1
このファイルはバックアップを行うアカウント以外からは読み込めないようにパーミッションを設定しておく必要があります。