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

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

itpass 側での公開鍵作成

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

itpass$ sudo -s -H
itpass# cd /root
itpass# ssh-keygen -t rsa -b 4096

(鍵の置き場はデフォルトの /root/.ssh/id_rsa とする)
(鍵の強度を上げるため, -b 4096 のオプションをつけている)
(パスフレーズは空にする)

itpassbk 側の鍵の設置

itpass で作成した公開鍵 itpass:/root/.ssh/id_dsa.pub を itpassbk:/root/.ssh/authorized_keys の最後尾に追記する. (ファイルがない場合は作成する.)

例えば, 下の方法では, 公開鍵のファイルを itpass から itpassbk に転送し, その内容 >> で /root/.ssh/authorized_keys に追記している. パーミッションに注意すること.

itpassbk: # cat ./id_rsa.pub >> /root/.ssh/authorized_keys

更にパーミッションを変更する.

itpassbk: # chmod 600 /root/.ssh/authorized_keys

authorized_keys の編集

しかし, このままでは itpass で root を取られると itpassbk もそのまま乗っ取られることが考えられるため, 公開鍵認証の際にはバックアップ以外の動作をできないよう, また itpass 以外からのアクセスを受け付けないよう制限をかける. そのために, 上記で設置した authorized_keys 内の itpassbk の公開鍵の行の冒頭に以下を加える.

なお, 見やすさのため改行してあるが, 一行で書くこと. またカンマの前後に空白は開けないこと. そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある "ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.

command="rsync --server -vvvlogDtpre.iLsfxC --delete . /home/",no-pty,
from="133.30.109.22",no-port-forwarding,no-X11-forwarding,no-agent-forwarding

なお, この記述は, tako-itpass への rsync 失敗問題(2018/03)に対処するため, 変更を加えたものである. 2016 年度以前のマニュアルにある記述とは異なることに注意せよ. 詳細は[ITPASS2017]rsync エラーへの対処を参照.

itpassbk 側の通信許可

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

PermitRootLogin no

という部分を

PermitRootLogin forced-commands-only

に変更したのち,

itpassbk# systemctl restart ssh

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

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

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

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

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

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

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

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

# chmod 755 /etc/cron.local/daily/230_rsync_itpassbk

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

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

# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2020/system_backup/210_rsync_localbk_hiki

# mv 210_rsync_localbk_hiki /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

スクリプトの動作確認

  • ホスト鍵の追加

    itpass から itpassbk に ssh することで itpass 側に itpassbk のホスト鍵を追加する.

    itpsass: # ssh tako-itpass.scitec.kobe-u.ac.jp
    The authenticity of host 'tako-itpass.scitec.kobe-u.ac.jp  
    (133.30.109.21)'can't be established.
    ECDSA key fingerprint is 06:e7:4a:de:2e:16:33:03:d5:0c:fd:32:bd:72:fa:57.
    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' 
    (ECDSA) to the list of known hosts.]
    PTY allocation request failed on channel 0

    接続を続けるか問われるので yes と入力して続行し, ホスト鍵を追加する. ssh 接続は許可していないので接続はできないが問題ない.

  • スクリプトの動作確認

/etc/crontab の時刻を変更して正しくバックアップスクリプトが実行されているか確認する. 確認後はもとに戻す.

/etc/hosts に書かれている IP アドレスとホスト名の対応が正しいかどうか確認する.

参考資料

不要なファイルの削除

運用開始から 1 週間をめどに, 参考のために old からコピーしたファイル類を削除.

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

再構築作業用に作成した chikuwa* ユーザを削除する.

# userdel -r [アカウント名]

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

  • visudo で, /etc/sudoers から chikuwa* を削除する.

[[ITPASS2020]2020年度サーバ構築マニュアル へ戻る]

Last modified:2021/12/03 13:03:00
Keyword(s):
References:[[ITPASS2021]2021年度サーバ構築ログ]