IT pass HikiWiki - [Memo2010][ITPASS]サーバ交換作業1週間後に行う作業 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
10/11/10 に バックアップをリモートにもどす作業を河合, 坂本で行った. ( ロガー: 坂本)
{{toc_here}}
[((<ITPASSサーバ構築ドキュメント>)) へ戻る]
= 概要
ITPASS サーバにはバックアップとサーバ本体のトラブル時に代替するための予備サーバを立ててある. /home 以下のいくつかの領域に関して, ITPASS サーバ本体から予備サーバへ定期的にバックアップを取る.
この作業は, 本サーバが正しく動作しているかの確認が取れてから行うため, サーバ交換後すぐには行わず, サーバ交換後しばらくしてから行う.
= バックアップする領域
バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.
2010/11/10 現在, 以下の領域をバックアップの対象とした.
* aoelab cps epalab itpass gate
= バックアップの際の認証方式
バックアップには rsync を用いた.
root アカウントでバックアップを行うが, セキュリティを高めるため, その認証には SSH + 公開鍵暗号を用いた.
= 準備
以降では, 運用中の ITPASS サーバのホスト名を ((*itpass*)),
予備サーバを ((*itpassbk*)) と称する. 実際には, 使用するホストの名称に置き換えて作業を行った.
まず, itpass, itpassbk ともに SSH デーモンが立ち上がっている必要があるため,
((<[ITPASS2009]sshのインストールと設定>)) を先に行っておくこと.
また, rsync をインストールしていない場合は, 以下でインストールしておく.
# apt-get install rsync
= 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_key に追記した.
既に authorized_keys が作成されている場合には, id_dsa.pub の内容を
authorized_keys の最後尾に追記すること.
しかし, このままでは itpass で root を取られると itpassbk もそのまま乗っ取られることが考えられるため, 公開鍵認証の際にはバックアップ以外の動作をできないよう, また ITPASS ドメイン以外からのアクセスを受け付けないよう制限をかける. そのために, 上記で設置した authorized_keys 内の itpassbk の (authorized_keys に先ほど追記した) 公開鍵の行の冒頭に以下を加えた. なお, 見易さのため改行してあるが,
一行で書くこと, またカンマの前後に空白は開けないこと.
そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある
"ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.
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 ディレクトリ作成
自作の cron 用スクリプト置き場として, /etc/cron.local を作成した.
# mkdir /etc/cron.local
# mkdir /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/server/system_backup_2010/rsync_itpassbk.sh
(オリジナルを修正したければ,
http://itpass.scitec.kobe-u.ac.jp/~itpass/server/system_backup_2009/rsync_epabk.sh
をダウンロードし, 修正を施す.)
/itpass/server というフォルダ自体がなかったため, 直接 itpassbk の rsync_itpassbk.sh をコピーした.
# mv rsync_itpassbk.sh(もしくは, rsync_epabk.sh) /etc/cron.local/daily/230_rsync_itpassbk
/etc/cron.local/daily/230_rsync_itpassbk に実行権限を設定する.
# chmod 755 /etc/cron.local/daily/230_rsync_itpassbk
=== バックアップスクリプトの書き換え
以下の作業は, オリジナルスクリプト ((<rsync_epabk.sh|URL:../server/2009/system_backup/rsync_epabk.sh>))をダウンロードした場合のみ行うこと.
$ diff -u ../system_backup_2009/rsync_epabk.sh rsync_itpassbk.sh
--- ../system_backup_2009/rsync_epabk.sh 2009-01-15 17:26:18.000000000 +0900
+++ rsync_itpassbk.sh 2010-09-16 14:27:37.000000000 +0900
@@ -1,6 +1,6 @@
#!/bin/sh
#
-#= Backup script for EPA servers (tako <=> ika)
+#= Backup script for ITPASS servers (tako <=> ika)
#
MAINTAINERS="Yasuhiro MORIKAWA, Shin-ya Murakami"
UPDATE='2009-01-15'
@@ -11,17 +11,17 @@
######################################################################
# Settings
-SHARED_HOST="ika.epa.scitec.kobe-u.ac.jp tako.epa.scitec.kobe-u.ac.jp"
+SHARED_HOST="ika-itpass.scitec.kobe-u.ac.jp tako-itpass.scitec.kobe-u.ac.jp"
BKROOTDIR="/home"
-BKSUBDIRS="ahslab aoelab cps epalab itpass pschool gate mosir"
-LOGFILE='/var/log/rsync-log/epabk.log'
+BKSUBDIRS="aoelab cps epalab itpass gate"
+LOGFILE='/var/log/rsync-log/itpassbk.log'
RSYNCCMD='rsync'
OPTIONS="-av --delete"
DRYRUNOPT='-n'
TMPDIR='/tmp'
-LOGTMP="${TMPDIR}/rsync_epabk.tmp.log-$$"
+LOGTMP="${TMPDIR}/rsync_itpassbk.tmp.log-$$"
# End Settings
######################################################################
@@ -155,7 +155,7 @@
##############################
#== Summary message
#
-echo "***** EPA servers data backup by $0 *****"
+echo "***** ITPASS servers data backup by $0 *****"
echo " ${srchostdef}:${BKROOTDIR}/\${dir} -> ${DSTHOST}${BKROOTDIR}/\${dir}"
echo ""
echo " Update Delete"
== バックアップ用スクリプトの編集
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
今回はすでに記載されていた.
出力結果に関してメールを送信したい場合には以下のようにすると良い (以下は例).
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 を書き換えることで変更できる.
# mkdir /var/log/rsync-log
# 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 の実行権限を外した.
= 参考資料
* ((<[ITPASS2009]サーバ交換作業 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サーバ構築ドキュメント>)) へ戻る]
{{toc_here}}
[((<ITPASSサーバ構築ドキュメント>)) へ戻る]
= 概要
ITPASS サーバにはバックアップとサーバ本体のトラブル時に代替するための予備サーバを立ててある. /home 以下のいくつかの領域に関して, ITPASS サーバ本体から予備サーバへ定期的にバックアップを取る.
この作業は, 本サーバが正しく動作しているかの確認が取れてから行うため, サーバ交換後すぐには行わず, サーバ交換後しばらくしてから行う.
= バックアップする領域
バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.
2010/11/10 現在, 以下の領域をバックアップの対象とした.
* aoelab cps epalab itpass gate
= バックアップの際の認証方式
バックアップには rsync を用いた.
root アカウントでバックアップを行うが, セキュリティを高めるため, その認証には SSH + 公開鍵暗号を用いた.
= 準備
以降では, 運用中の ITPASS サーバのホスト名を ((*itpass*)),
予備サーバを ((*itpassbk*)) と称する. 実際には, 使用するホストの名称に置き換えて作業を行った.
まず, itpass, itpassbk ともに SSH デーモンが立ち上がっている必要があるため,
((<[ITPASS2009]sshのインストールと設定>)) を先に行っておくこと.
また, rsync をインストールしていない場合は, 以下でインストールしておく.
# apt-get install rsync
= 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_key に追記した.
既に authorized_keys が作成されている場合には, id_dsa.pub の内容を
authorized_keys の最後尾に追記すること.
しかし, このままでは itpass で root を取られると itpassbk もそのまま乗っ取られることが考えられるため, 公開鍵認証の際にはバックアップ以外の動作をできないよう, また ITPASS ドメイン以外からのアクセスを受け付けないよう制限をかける. そのために, 上記で設置した authorized_keys 内の itpassbk の (authorized_keys に先ほど追記した) 公開鍵の行の冒頭に以下を加えた. なお, 見易さのため改行してあるが,
一行で書くこと, またカンマの前後に空白は開けないこと.
そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある
"ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.
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 ディレクトリ作成
自作の cron 用スクリプト置き場として, /etc/cron.local を作成した.
# mkdir /etc/cron.local
# mkdir /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/server/system_backup_2010/rsync_itpassbk.sh
(オリジナルを修正したければ,
http://itpass.scitec.kobe-u.ac.jp/~itpass/server/system_backup_2009/rsync_epabk.sh
をダウンロードし, 修正を施す.)
/itpass/server というフォルダ自体がなかったため, 直接 itpassbk の rsync_itpassbk.sh をコピーした.
# mv rsync_itpassbk.sh(もしくは, rsync_epabk.sh) /etc/cron.local/daily/230_rsync_itpassbk
/etc/cron.local/daily/230_rsync_itpassbk に実行権限を設定する.
# chmod 755 /etc/cron.local/daily/230_rsync_itpassbk
=== バックアップスクリプトの書き換え
以下の作業は, オリジナルスクリプト ((<rsync_epabk.sh|URL:../server/2009/system_backup/rsync_epabk.sh>))をダウンロードした場合のみ行うこと.
$ diff -u ../system_backup_2009/rsync_epabk.sh rsync_itpassbk.sh
--- ../system_backup_2009/rsync_epabk.sh 2009-01-15 17:26:18.000000000 +0900
+++ rsync_itpassbk.sh 2010-09-16 14:27:37.000000000 +0900
@@ -1,6 +1,6 @@
#!/bin/sh
#
-#= Backup script for EPA servers (tako <=> ika)
+#= Backup script for ITPASS servers (tako <=> ika)
#
MAINTAINERS="Yasuhiro MORIKAWA, Shin-ya Murakami"
UPDATE='2009-01-15'
@@ -11,17 +11,17 @@
######################################################################
# Settings
-SHARED_HOST="ika.epa.scitec.kobe-u.ac.jp tako.epa.scitec.kobe-u.ac.jp"
+SHARED_HOST="ika-itpass.scitec.kobe-u.ac.jp tako-itpass.scitec.kobe-u.ac.jp"
BKROOTDIR="/home"
-BKSUBDIRS="ahslab aoelab cps epalab itpass pschool gate mosir"
-LOGFILE='/var/log/rsync-log/epabk.log'
+BKSUBDIRS="aoelab cps epalab itpass gate"
+LOGFILE='/var/log/rsync-log/itpassbk.log'
RSYNCCMD='rsync'
OPTIONS="-av --delete"
DRYRUNOPT='-n'
TMPDIR='/tmp'
-LOGTMP="${TMPDIR}/rsync_epabk.tmp.log-$$"
+LOGTMP="${TMPDIR}/rsync_itpassbk.tmp.log-$$"
# End Settings
######################################################################
@@ -155,7 +155,7 @@
##############################
#== Summary message
#
-echo "***** EPA servers data backup by $0 *****"
+echo "***** ITPASS servers data backup by $0 *****"
echo " ${srchostdef}:${BKROOTDIR}/\${dir} -> ${DSTHOST}${BKROOTDIR}/\${dir}"
echo ""
echo " Update Delete"
== バックアップ用スクリプトの編集
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
今回はすでに記載されていた.
出力結果に関してメールを送信したい場合には以下のようにすると良い (以下は例).
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 を書き換えることで変更できる.
# mkdir /var/log/rsync-log
# 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 の実行権限を外した.
= 参考資料
* ((<[ITPASS2009]サーバ交換作業 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サーバ構築ドキュメント>)) へ戻る]