IT pass HikiWiki - [Memo2011][ITPASS]サーバ交換作業1週間後に行う作業 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

11/11/11 に サーバ交換作業 1 週間後に行う作業を兵頭, 鈴木, 中坊, 小林, 船橋で行った. (ロガー: 鈴木, 小林)

{{toc_here}}

[((<ITPASSサーバ構築ドキュメント>)) へ戻る]

= 概要

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

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

= バックアップする領域

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

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

* aoelab cps epalab itpass gate


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

バックアップには rsync を用いる.
root アカウントでバックアップを行うが, セキュリティを高めるため, その認証には SSH + 公開鍵暗号を用いる.

= 準備

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


まず, itpass, itpassbk ともに SSH デーモンが立ち上がっている必要があるため,
((<[ITPASS2010]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 にコピーした.
ここで, root で直接鍵を置きにいこうとすると, itpassbk 側の root パスワードが必要になるので, 一度, itpass の root で itpassbk の自分のディレクトリに鍵を置き, その後, itpassbk で root となって authorized_keys に追記した.

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

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

= itpassbk 側の通信許可

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

  PermitRootLogin no

という部分を

  PermitRootLogin forced-commands-only

に変更したのち,

  itpassbk# /etc/init.d/ssh restart

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

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

== 自作スクリプト用 cron ディレクトリ作成

/etc/cron.local と /etc/cron.local/daily は作成済みであった.

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

=== 概要
オリジナルのバックアップスクリプト
((<rsync_epabk.sh|URL:../server/2009/system_backup/rsync_epabk.sh>))
を((<このよう|URL:#バックアップスクリプトの書き換え>)) に書き換える.

また, 書き換えたものは
((<rsync_itpassbk.sh|URL:../server/2010/system_backup/rsync_itpassbk.sh>)) にある.

この書き換えたものを, /etc/cron.local/daily/230_rsync_itpassbk に設置する.
(スクリプト先頭の番号は, その他のスクリプトを置いた際, どれを
優先して実行するかを決めるためのものである. 若い番号のものほど
先に実行される).

=== 具体的には

以下のコマンドで書き換えたものををダウンロードした.

  # wget http://itpass.scitec.kobe-u.ac.jp/~itpass/ftp/server/2010/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

== バックアップ用スクリプトの編集

itpass および itpassbk のホスト名やバックアップする領域に応じて,
230_rsync_itpassbk を編集する. 主に編集するのは以下の項目であるが, 先に修正済みのスクリプト
((<rsync_itpassbk.sh|URL:../server/2010/system_backup/rsync_itpassbk.sh>))
をダウンロードした場合は, 以下は何も修正しなくてよいということなので, 確認のみを行った.

: SHARED_HOST

  バックアップを行う 2 つのホスト (本文書での itpass および itpassbk)
  のドメイン名 (ホスト名 + ドメイン名) をスペースで区切って
  記述してあることを確認した. 送信元と送信先で順序を変える必要は無い.

  このスクリプトではスクリプトを起動するホストが必ず
  転送元で, もう一方が転送先になるようになっている.

: BKSUBDIRS

  転送する領域を記述する. これは ((<URL:#バックアップする領域>))
  に応じて書き換えてあることを確認した.

  なお, "hoge/" 等と最後にスラッシュをいれると転送がうまく
  行かなくなる.

= crontab の編集

/etc/crontab を編集し, 以下の一行を追加しなければならないが, 今回はすでに以下のように記載されていた. 出力結果に関してメールを送信する設定になっていた.

  25 6    * * *   root    cd / && run-parts --report /etc/cron.local/daily |mail -s "`hostname -f` daily run outputs" xxx@xxx.xxxx

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

ログファイルのためのファイルを作成した.
なお, このログファイルの場所は ((<URL:#バックアップ用スクリプトの用意>))
で用意した 230_rsync_itpassbk 内の LOGFILE を書き換えることで変更できる.

  # touch /var/log/rsync-log/itpassbk.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
  }

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

220_rsync_localbk_root, 225_rsync_localbk_home の実行権限を外した.

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

= 参考資料

* ((<[ITPASS2010]サーバ交換作業 1 週間後に行う作業>))
* ((<"佐藤裕介, 2005: rsync + cron + ssh (rsyncd を立てない編)"|URL:http://www2s.biglobe.ne.jp/~nuts/labo/inti/cron-rsync-ssh-nodaemon.html>))
* ((<"梅原大祐, 2006: rsync + cron + ssh でセキュアな自動リモートバックアップ"|URL:http://www.imc.cce.i.kyoto-u.ac.jp/~umehara/misc/comp/20061121.html>))

[((<ITPASSサーバ構築ドキュメント>)) へ戻る]