* ftp + tar + gpgで暗号化ネットワーク・バックアップ
この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux] [gpg] [ftp] [バックアップ]
ftp を使ったネットワークバックアップについての記事を 2003-12-01 に書いた。この手法の欠点の一つは、暗号化されないことだ。ftp に暗号化機能がないので仕方がないが、他のツールを組み合わせれば、暗号化できる。
通信経路の暗号化とファイルの暗号化のどちらが良いかは場合による。もちろん両方やっても良い。バックアップ先が共用のファイルサーバで、そのサーバの管理者を含め、自分以外のユーザがアクセスする可能性があるなら、ファイルそのものを暗号化したほうがいいだろう。
一方、バックアップ先が自分しかアクセスしないサーバだったら、通信経路上だけを暗号化してファイルを生で保存しておいた方が便利だろう。いざディスクがクラッシュして復旧しようとしているのに、暗号化解除のパスワードがわからない、といったトラブルも防げる。また、ファイルを暗号化しただけでは ftp のアカウントのパスワードが生のままネットワーク上を流れてしまうが、通信経路自体を暗号化すればこれも解決できる。
Q. cron 等から起動されるバッチ処理の中で ssh を利用したいのですが、ログインを自動化するにはどうすればよいですか?
http://www.jp.freebsd.org/QandA/HTML/2255.html
tar の出力を gpg に通して暗号化してやればいいのだが、私が使っている ftp コマンドは送信ファイル指定部分にパイプを使ったコマンドラインを記述できないようなので、該当部分はシェルスクリプトにした。
以下のようなスクリプトを用意して、tar で固めたデータを暗号化して出力できるようにする。
これを 2003-12-01 の ftp バックアップスクリプトで呼ぶだけだ。tar で出力したファイルを暗号化しているので、拡張子に .gpg を付けている。
gpg 自体が圧縮機能を持っているので、gzip する必要性は薄いかもしれない。そのあたりはお好みで。
- 何を暗号化するか
暗号化には通信経路上の暗号化とファイルの暗号化がある。通信経路上の暗号化だと、バックアップ先サーバへたどり着いた後のファイルは生のままになる。ファイルの暗号化だと、バックアップ先サーバに到達した後もファイルはずっと暗号化されたままだ。通信経路の暗号化とファイルの暗号化のどちらが良いかは場合による。もちろん両方やっても良い。バックアップ先が共用のファイルサーバで、そのサーバの管理者を含め、自分以外のユーザがアクセスする可能性があるなら、ファイルそのものを暗号化したほうがいいだろう。
一方、バックアップ先が自分しかアクセスしないサーバだったら、通信経路上だけを暗号化してファイルを生で保存しておいた方が便利だろう。いざディスクがクラッシュして復旧しようとしているのに、暗号化解除のパスワードがわからない、といったトラブルも防げる。また、ファイルを暗号化しただけでは ftp のアカウントのパスワードが生のままネットワーク上を流れてしまうが、通信経路自体を暗号化すればこれも解決できる。
- 通信の暗号化
通信の暗号化を組み合わせたネットワークバックアップは、やったことがないのでとくに書かない。ssh、scp、sftp を使ったり、VPN を使ったり、方法はいくらでもあると思う。一応 ssh を使ったやり方について記事を見つけたのでメモしておく。Q. cron 等から起動されるバッチ処理の中で ssh を利用したいのですが、ログインを自動化するにはどうすればよいですか?
http://www.jp.freebsd.org/QandA/HTML/2255.html
- ファイルの暗号化
暗号化できるならどんなツールでもいいが、今回の用途で使うならば、自動化ができて、強い暗号強度を持ち、無償で利用できるものがいい。この条件を満たす暗号化ツールとしては gpg がある。2004-01-08 に書いた「gpg: ファイルをパスワード/パスフレーズだけで暗号化/復号する」や「gpg: 標準入力からパスフレーズを渡してバッチ処理でファイルを暗号化」が参考になるだろう。tar の出力を gpg に通して暗号化してやればいいのだが、私が使っている ftp コマンドは送信ファイル指定部分にパイプを使ったコマンドラインを記述できないようなので、該当部分はシェルスクリプトにした。
以下のようなスクリプトを用意して、tar で固めたデータを暗号化して出力できるようにする。
#!/bin/sh
PASS_PHRASE="passphrase"
TAR_TARGET="script etc"
BASE_DIR=/home/hiroaki
echo $PASS_PHRASE | { tar -C $BASE_DIR -zcf - $TAR_TARGET 2>/dev/null |gpg --batch -c --passphrase-fd 3;} 3>&0
これを 2003-12-01 の ftp バックアップスクリプトで呼ぶだけだ。tar で出力したファイルを暗号化しているので、拡張子に .gpg を付けている。
ftp -i -v -n 10.39.38.89 << END
user USER_ID PASSWORD
cd /d/backup
bin
put |/home/hiroaki/script/hgpg.sh "backup_`date +%a`.tar.gz.gpg"
quit
END
gpg 自体が圧縮機能を持っているので、gzip する必要性は薄いかもしれない。そのあたりはお好みで。
以上の内容はhttp://sonic64.com//2004-03-19.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
モバイルやる夫Viewer Ver0.14