IT pass HikiWiki - [Memo2014][ITPASS]サーバ交換事作業 1 週間後に行う作業 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc_here}}
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]
サーバ交換作業1週間後に行う作業を滝口, 藤島, 堀之内, 村上(美)が行った.
= 本サーバから予備サーバへのバックアップ設定
== 概要
ITPASS サーバにはバックアップとサーバ本体のトラブル時に代替するための予備サーバを立ててある. /home 以下のいくつかの領域に関して, ITPASS サーバ本体から予備サーバへ定期的にバックアップを取る.
この作業は, 本サーバが正しく動作しているかの確認が取れてから行うため, サーバ交換後すぐには行わず, サーバ交換後しばらくしてから行った.
=== バックアップする領域
バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.
2014/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 側での公開鍵作成
バックアップのための公開鍵を作成した.
itpass: $ sudo -s -H
itpass: # cd /root
マニュアルの鍵生成コマンドにオプション -b 4096 を追加し強度を上げて鍵を生成した.
itpass: # ssh-keygen -t rsa -b 4096
(鍵の置き場はデフォルトの /root/.ssh/id_rsa とした.)
(パスフレーズは空にした.)
== itpassbk 側の鍵の設置
itpass で作成した公開鍵 itpass:/root/.ssh/id_rsa.pub をitpassbk:/root/.ssh/authorized_keys の最後尾に追記した.
ここで itpass から直接追記しようとすると, itpassbk 側の root パスワードが必要になるので,
一旦 itpassbk の自分のディレクトリに鍵を置いた後, itpassbk で root となり authorized_key に追記する.
itpassbk: # cp /root/.ssh/id_rsa.pub ~(作業者)/
#この後, TeraTerm で自分の PC に持ってきた.
#Winscp で作業者のホームディレクトリに転送
念の為 /root/.ssh/authorized_keys の中に既に鍵がないか確認した.
itpassbk: # vim /root/.ssh/authorized_keys
itpassbk:/root/.ssh/authorized_keys の最後尾に追記した.
itpassbk: # cat ./id_rsa.pub >> /root/.ssh/authorized_keys
更にパーミッションを変更した.
itpassbk: # chmod 600 /root/.ssh/authorized_keys
しかし, このままでは 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
としてすると, [ok] と表示されたので, 設定が反映されたことが確認された. これにより, ((<#itpassbk 側の鍵の設置|URL:#itpassbk 側の鍵の設置>)) で指定したコマンドでのみログインを許可することとなった.
== itpass 側でのデータ転送用スクリプトの設置
=== バックアップスクリプトを置くディレクトリの確認
オリジナルの cron 用スクリプトは /etc/cron.local/daily に置く.
((*もしこのディレクトリがなければ
((<[ITPASS2011a]システムログメールの設定>))
が行われていない可能性があるので
システムログメールの作業担当者に連絡すること*)).
=== バックアップ用スクリプトの用意
rsync_itpassbk.sh をダウンロードした.
これを /etc/cron.local/daily/230_rsync_itpassbk に設置した.
itpass: # wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_itpassbk.sh
itpass: # mv rsync_itpassbk.sh /etc/cron.local/daily/230_rsync_itpassbk
/etc/cron.local/daily/230_rsync_itpassbk に実行権限を設定した.
itpass: # chmod 755 /etc/cron.local/daily/230_rsync_itpassbk
==== バックアップスクリプトの書き換え
itpass: # vim /etc/cron.local/daily/230_rsync_itpassbk
+BKSUBDIRS="aoelab cps epalab itpass gate"
のcps の部分を消した.
== hiki データバックアップスクリプトの設置
((<rsync_itpassbk.sh|URL:../server/2011/system_backup/rsync_localbk_hiki.sh>))
を /etc/cron.local/weekly/210_rsync_localbk_hiki に設置した.
itpass: # wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_localbk_hiki.sh
itpass: # mv rsync_localbk_hiki.sh /etc/cron.local/weekly/210_rsync_localbk_hiki
/etc/cron.local/weekly/210_rsync_localbk_hiki に実行権限を設定した.
itpass: # 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
== バックアップログファイルの作成
ログファイルのためのディレクトリとファイルを作成した.
itpass: # mkdir /var/log/rsync-log
itpass: # touch /var/log/rsync-log/itpassbk.log
itpass: # touch /var/log/rsync-log/localbk_hiki.log
== バックアップログファイルの logrotate の設定
データ転送の際の rsync のログを 1 週間毎に分割する.
/etc/logrotate.d/ 以下に rsync_itpassbk という設定ファイルを作成した.
itpass: # 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 という設定ファイルを作成した.
itpass: # 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 の実行権限を外す.
itpassbk: # cd /etc/cron.local
itpassbk: # chmod a-x weekly/210_rsync_localbk_hiki daily/220_rsync_localbk_root daily/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>))
= 不要なファイルの削除
運用開始から 1 週間をめどに, 参考のために old からコピーしたファイル, emacs, vim 等で編集した際の一時ファイル((ファイル名)~ など)を削除した.
= 再構築作業用 chikuwa* ユーザの削除
itpass: # userdel -r [アカウント名]
で, ホームディレクトリも一緒に削除できた.
itpass: # visudo
から構築作業用アカウント chikuwa* を削除した.
= ホスト鍵の追加
itpass 側に itpassbk のホスト鍵を追加した
itpsass: # ssh [itpassbkのホスト名]
The authenticity of host 'tako-itpass.scitec.kobe-u.ac.jp (133.30.109.21)' can't be established.
RSA key fingerprint is 44:f2:fe:fd:d7:d4:f4:95:80:bf:f3:f6:05:23:40:75.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'tako-itpass.scitec.kobe-u.ac.jp,133.30.109.21' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
^C
接続を続けるか問われるので yes と入力して続行し, ホスト鍵を追加した.
ssh 接続は許可していないので接続はできないが問題ない.
このあと /etc/crontab の時刻を変更して正しくバックアップスクリプトが実行されているか確認した. 確認後はもとに戻しておくこと.
問題ないことを確認した.
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]
サーバ交換作業1週間後に行う作業を滝口, 藤島, 堀之内, 村上(美)が行った.
= 本サーバから予備サーバへのバックアップ設定
== 概要
ITPASS サーバにはバックアップとサーバ本体のトラブル時に代替するための予備サーバを立ててある. /home 以下のいくつかの領域に関して, ITPASS サーバ本体から予備サーバへ定期的にバックアップを取る.
この作業は, 本サーバが正しく動作しているかの確認が取れてから行うため, サーバ交換後すぐには行わず, サーバ交換後しばらくしてから行った.
=== バックアップする領域
バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.
2014/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 側での公開鍵作成
バックアップのための公開鍵を作成した.
itpass: $ sudo -s -H
itpass: # cd /root
マニュアルの鍵生成コマンドにオプション -b 4096 を追加し強度を上げて鍵を生成した.
itpass: # ssh-keygen -t rsa -b 4096
(鍵の置き場はデフォルトの /root/.ssh/id_rsa とした.)
(パスフレーズは空にした.)
== itpassbk 側の鍵の設置
itpass で作成した公開鍵 itpass:/root/.ssh/id_rsa.pub をitpassbk:/root/.ssh/authorized_keys の最後尾に追記した.
ここで itpass から直接追記しようとすると, itpassbk 側の root パスワードが必要になるので,
一旦 itpassbk の自分のディレクトリに鍵を置いた後, itpassbk で root となり authorized_key に追記する.
itpassbk: # cp /root/.ssh/id_rsa.pub ~(作業者)/
#この後, TeraTerm で自分の PC に持ってきた.
#Winscp で作業者のホームディレクトリに転送
念の為 /root/.ssh/authorized_keys の中に既に鍵がないか確認した.
itpassbk: # vim /root/.ssh/authorized_keys
itpassbk:/root/.ssh/authorized_keys の最後尾に追記した.
itpassbk: # cat ./id_rsa.pub >> /root/.ssh/authorized_keys
更にパーミッションを変更した.
itpassbk: # chmod 600 /root/.ssh/authorized_keys
しかし, このままでは 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
としてすると, [ok] と表示されたので, 設定が反映されたことが確認された. これにより, ((<#itpassbk 側の鍵の設置|URL:#itpassbk 側の鍵の設置>)) で指定したコマンドでのみログインを許可することとなった.
== itpass 側でのデータ転送用スクリプトの設置
=== バックアップスクリプトを置くディレクトリの確認
オリジナルの cron 用スクリプトは /etc/cron.local/daily に置く.
((*もしこのディレクトリがなければ
((<[ITPASS2011a]システムログメールの設定>))
が行われていない可能性があるので
システムログメールの作業担当者に連絡すること*)).
=== バックアップ用スクリプトの用意
rsync_itpassbk.sh をダウンロードした.
これを /etc/cron.local/daily/230_rsync_itpassbk に設置した.
itpass: # wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_itpassbk.sh
itpass: # mv rsync_itpassbk.sh /etc/cron.local/daily/230_rsync_itpassbk
/etc/cron.local/daily/230_rsync_itpassbk に実行権限を設定した.
itpass: # chmod 755 /etc/cron.local/daily/230_rsync_itpassbk
==== バックアップスクリプトの書き換え
itpass: # vim /etc/cron.local/daily/230_rsync_itpassbk
+BKSUBDIRS="aoelab cps epalab itpass gate"
のcps の部分を消した.
== hiki データバックアップスクリプトの設置
((<rsync_itpassbk.sh|URL:../server/2011/system_backup/rsync_localbk_hiki.sh>))
を /etc/cron.local/weekly/210_rsync_localbk_hiki に設置した.
itpass: # wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_localbk_hiki.sh
itpass: # mv rsync_localbk_hiki.sh /etc/cron.local/weekly/210_rsync_localbk_hiki
/etc/cron.local/weekly/210_rsync_localbk_hiki に実行権限を設定した.
itpass: # 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
== バックアップログファイルの作成
ログファイルのためのディレクトリとファイルを作成した.
itpass: # mkdir /var/log/rsync-log
itpass: # touch /var/log/rsync-log/itpassbk.log
itpass: # touch /var/log/rsync-log/localbk_hiki.log
== バックアップログファイルの logrotate の設定
データ転送の際の rsync のログを 1 週間毎に分割する.
/etc/logrotate.d/ 以下に rsync_itpassbk という設定ファイルを作成した.
itpass: # 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 という設定ファイルを作成した.
itpass: # 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 の実行権限を外す.
itpassbk: # cd /etc/cron.local
itpassbk: # chmod a-x weekly/210_rsync_localbk_hiki daily/220_rsync_localbk_root daily/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>))
= 不要なファイルの削除
運用開始から 1 週間をめどに, 参考のために old からコピーしたファイル, emacs, vim 等で編集した際の一時ファイル((ファイル名)~ など)を削除した.
= 再構築作業用 chikuwa* ユーザの削除
itpass: # userdel -r [アカウント名]
で, ホームディレクトリも一緒に削除できた.
itpass: # visudo
から構築作業用アカウント chikuwa* を削除した.
= ホスト鍵の追加
itpass 側に itpassbk のホスト鍵を追加した
itpsass: # ssh [itpassbkのホスト名]
The authenticity of host 'tako-itpass.scitec.kobe-u.ac.jp (133.30.109.21)' can't be established.
RSA key fingerprint is 44:f2:fe:fd:d7:d4:f4:95:80:bf:f3:f6:05:23:40:75.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'tako-itpass.scitec.kobe-u.ac.jp,133.30.109.21' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
^C
接続を続けるか問われるので yes と入力して続行し, ホスト鍵を追加した.
ssh 接続は許可していないので接続はできないが問題ない.
このあと /etc/crontab の時刻を変更して正しくバックアップスクリプトが実行されているか確認した. 確認後はもとに戻しておくこと.
問題ないことを確認した.
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]