monolithic kernel

Dropboxで安全に自動バックアップを行う

July 19, 2011

    Dropboxはバックアップ用として便利であることは以前紹介したのですが、ここのところDropboxはセキュリティ上の問題が目立っており、利用を躊躇せざるを得ない状況です。今回は、バックアップを暗号化しておくことで、Dropboxの運営や悪意のある第三者によってファイルの内容を読み取られることを防ぎ、比較的安心して利用できるようにする方法を紹介します。

    なお、今回は以前の記事に沿ってDropboxのインストールを済ませていることを前提にしています。新たにDropboxを利用したバックアップ環境を構築される方はこちらの記事を先にご覧ください。

    パスフレーズの生成

    暗号化に利用するパスフレーズを生成しておきます。このパスフレーズを紛失するとバックアップを開くことができなくなってしまうので、必ずバックアップを取って安全な場所に保管しておいてください。

    cd /path/to
    touch secret
    chmod 600 secret
    openssl rand 1024 > secret

    バックアップを行うスクリプト

    以下はバックアップを行うシェルスクリプトに暗号化の処理を追加したものです。基本的な流れは前回と同じですが、バックアップ対象のファイルをopensslコマンドで暗号化してからDropboxの管理下にコピーするようにしています。

    #!/bin/sh
    
    secret_path=/path/to/secret
    
    backup_dir=/home/mono/Dropbox/backup
    backup_file=backup.tar.gz
    
    cd /path/to/target
    tar cfz - * | openssl enc -e -aes-256-cbc -out /tmp/$backup_file -kfile $secret_path
    mv /tmp/$backup_file $backup_dir

    前回の記事ではMySQLデータベースなどのバックアップも紹介していますが、それらのスクリプトも最後のmvコマンドの部分を上と同様に書き換えてあげることで対応できます。

    バックアップを復号する

    バックアップの復号は以下のようなコマンドで行います。-inオプションに暗号化されたファイルパス、-outオプションに復号された情報が保存されるファイルパスを指定します。

    openssl enc -d -aes-256-cbc -in backup.tar.gz -out backup_decrypted.tar.gz -kfile /path/to/secret

    いざとなったときにデータを複合できなくて焦ることがないように、必ず暗号化したデータが複合できることを確認しておきましょう。