[ITPASS2012]サーバ交換作業 1 週間後に行う作業

本サーバから予備サーバへのバックアップ設定

概要

ITPASS サーバにはバックアップとサーバ本体のトラブル時に代替するための予備サーバを立ててある. /home 以下のいくつかの領域に関して, ITPASS サーバ本体から予備サーバへ定期的にバックアップを取る.

この作業は, 本サーバが正しく動作しているかの確認が取れてから行うため, サーバ交換後すぐには行わず, サーバ交換後しばらくしてから行う.

バックアップする領域

バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.

2011/12/12 現在, 以下の領域をバックアップの対象とする.

  • aoelab epalab itpass gate

また以下の領域については, バックアップ日時ごとにディレクトリを作成するローカルバックアップを実行している (例: ~epalab/hiki -> ~epalab/hiki.bk/20121005-172930). バックアップデータは 230_rsync_itpassbk により予備サーバへ転送される.

  • epalab/hiki itpass/hiki itpass/hiki-secret

バックアップの際の認証方式

バックアップには rsync を用いる. 様々な権限のファイルに対応できるよう root アカウントでバックアップを行うが, セキュリティを高めるため, 予備サーバーへの転送の際は認証に SSH + 公開鍵暗号を用いる.

準備

以降では, 運用中の ITPASS サーバのホスト名を itpass, 予備サーバを itpassbk と称する. 実際には, 使用するホストの名称に置き換えて作業を行う.

まず, itpass, itpassbk ともに SSH デーモンが立ち上がっていることを確認し, もし立ち上がっていない場合は [ITPASS2012a]ssh のインストールと設定?が ちゃんと行われているか確認した上で立ち上げること.

itpass 側での公開鍵作成

バックアップのための公開鍵を作成する.

itpass$ sudo -s -H
itpass# cd /root
itpass# ssh-keygen -t dsa

(鍵の置き場はデフォルトの /root/.ssh/id_dsa とする)
(パスフレーズは空にする)

itpassbk 側の鍵の設置

itpass で作成した公開鍵 itpass:/root/.ssh/id_dsa.pub を itpassbk:/root/.ssh/authorized_keys の最後尾に追記する (ファイルがない場合は作成する.). ここで itpass から直接追記しようとすると, itpassbk 側の root パスワードが必要になるので, 一旦 itpassbk の自分のディレクトリに鍵を置いた後, itpassbk で root となり authorized_key に追記する.

しかし, このままでは itpass で root を取られると itpassbk もそのまま乗っ取られることが考えられるため, 公開鍵認証の際にはバックアップ以外の動作をできないよう, また itpass 以外からのアクセスを受け付けないよう制限をかける. そのために, 上記で設置した authorized_keys 内の itpassbk の公開鍵の行の冒頭に以下を加える. なお, 見やすさのため改行してあるが, 一行で書くこと. またカンマの前後に空白は開けないこと. そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある "ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.

command="rsync --server -vvlogDtpre.iLsf --delete . /home/",no-pty,
from="ika-itpass.scitec.kobe-u.ac.jp",no-port-forwarding,
no-X11-forwarding,no-agent-forwarding

これをauthorized_keys 内のitpassbk の公開鍵の行の冒頭に加える.

itpassbk 側の通信許可

最近の OpenSSH では, デフォルトでは root のログインを許可しないため, 設定を変更する. /etc/ssh/sshd_config の

PermitRootLogin no

という部分を

PermitRootLogin forced-commands-only

に変更したのち,

itpassbk# /etc/init.d/ssh restart

として設定を反映させる. これにより, #itpassbk 側の鍵の設置 で指定したコマンドでのみログインを許可することとなる.

itpass 側でのデータ転送用スクリプトの設置

バックアップスクリプトを置くディレクトリの確認

オリジナルの cron 用スクリプトは /etc/cron.local/daily に置く. もしこのディレクトリがなければ [ITPASS2011a]システムログメールの設定 が行われていない可能性があるので システムログメールの作業担当者に連絡すること.

バックアップ用スクリプトの用意

rsync_itpassbk.sh をダウンロードする. これを /etc/cron.local/daily/230_rsync_itpassbk に設置する.

# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_itpassbk.sh
# mv rsync_itpassbk.sh /etc/cron.local/daily/230_rsync_itpassbk

/etc/cron.local/daily/230_rsync_itpassbk に実行権限を設定する.

# chmod 755 /etc/cron.local/daily/230_rsync_itpassbk
バックアップスクリプトの書き換え
# vim /etc/cron.local/daily/230_rsync_itpassbk

+BKSUBDIRS="aoelab cps epalab itpass gate"

のcps の部分を消す.

hiki データバックアップスクリプトの設置

rsync_itpassbk.sh を/etc/cron.local/weekly/210_rsync_localbk_hiki に設置する.

# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_localbk_hiki.sh

# mv rsync_localbk_hiki.sh /etc/cron.local/weekly/210_rsync_localbk_hiki

/etc/cron.local/weekly/210_rsync_localbk_hiki に実行権限を設定する.

# chmod 755 /etc/cron.local/weekly/210_rsync_localbk_hiki

crontab の編集

/etc/crontab を編集する. 以下の 2 行があることを確認する.

25 6    * * *   root    cd / && run-parts --report /etc/cron.local/daily
47 6    * * 7   root    cd / && run-parts --report /etc/cron.local/weekly

バックアップログファイルの作成

ログファイルのためのディレクトリとファイルを作成.

# mkdir /var/log/rsync-log
# touch /var/log/rsync-log/itpassbk.log
# touch /var/log/rsync-log/localbk_hiki.log

バックアップログファイルの logrotate の設定

データ転送の際の rsync のログを 1 週間毎に分割する. /etc/logrotate.d/ 以下に rsync_itpassbk という設定ファイルを作成.

# vi /etc/logrotate.d/rsync_itpassbk

以下の内容を書き込む.

/var/log/rsync-log/itpassbk.log {
    weekly
    create 0644 root root
    rotate 12
}

hiki データのバックアップの際の rsync のログは 1 ヶ月毎に分割する. /etc/logrotate.d/ 以下に rsync_localbk_hiki という設定ファイルを作成.

# vi /etc/logrotate.d/rsync_localbk_hiki

以下の内容を書き込む.

/var/log/rsync-log/localbk_hiki.log {
    monthly
    create 0644 root root
    rotate 12
}

itpassbk のローカルバックアップの停止

210_rsync_localbk_hiki, 220_rsync_localbk_root, 225_rsync_localbk_home の実行権限を外す.

# cd /etc/cron.local
# chmod a-x weekly/210_rsync_localbk_hiki daily/220_rsync_localbk_root daily/225_rsync_localbk_home

参考資料

不要なファイルの削除

運用開始から 1 週間をめどに, 参考のために old からコピーしたファイル類を削除する. また emacs で編集した際の一時ファイル(ファイル名~ など)もあれば削除する.

再構築作業用 chikuwa* ユーザの削除

userdel -r [アカウント名]

で, ホームディレクトリも一緒に削除できる.

  • visudo から chikuwa* を削除する.

[ITPASSサーバ構築・運用ドキュメント へ戻る]