[Memo2011][ITPASS] サーバ交換作業 (WWW)

11/11/04 にサーバ構築作業(WWW)を関, 大西で行った. (ロガー: 大西)

  • なお, このページは 11/11/04 現在編集中. 具体的には old の fail2ban の動きを確認できていないが, その作業は新 tako 管理者に委託する予定.

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

以下の作業では new=新サーバ管理者が構築したサーバ (作業前時点の tako), old=作業前時点の ika である.

phase 1 (入替え開始)

old のサービスを停止

  • http (https)
    • サービス停止作業
      • apache2 に関して,以下のコマンドで, サービスを一時的に停止した. ただし, 再起動すると再びこれらのサービスも起動してしまうため, 作業途中で再起動の必要性が出てしまった場合は注意. 永続的にサービスを停止する作業は phase 3 にて行った.

        old# /etc/init.d/apache2 stop
  • ssh などでのログインユーザが居る場合, プロセスを削除
    • ps aux コマンドでプロセスを確認した.
    • 予期せぬユーザのログインは確認されなかったので, kill コマンドは実行しなかった.

phase 3

old の設定変更

  • ps aux コマンドでプロセスを確認し, apache2 のサービスを停止した. (phase2 で new, old が再起動されたためサービスも再び起動していた)
  • 再起動しても以下のサービスが立ち上がらないようにした.
    • http (https), pop3
      • apache2, openbsd-inetd に関して, 以下のコマンドによって OS が起動する際に立ち上がらないように しておいた. <service> には上記のファイル名(apache2, openbsd-inetd)を与えた.

        # cd /etc/init.d
        # update-rc.d -f <service> remove
        # chmod 644 <service>
    • 確認作業
      • 再起動を行い, ps aux コマンドで停止したはずのサービスが 立ち上がっていないことを確認した.

new の設定確認

  • 以下のコマンドで, http(https) のサービスが定常的に立ち上がるように設定されているかを確認した.

    new# ps aux

phase 4

移行の最終チェック

  • new
    • http
      • ブラウザで表示されることを確認した.
    • hiki
      • 書き込めることを確認した.
    • gate
      • 登録や変更が可能であることを確認した.
    • fail2ban
      • /etc/fail2ban/jail.conf の [apache], [apache-multiport] の項目について findtime, maxretry, bantime の値を変更し, fail2ban を再起動した.
      • ssh について, 架空のユーザ名でログインを findtime 内に maxretry 回試したところ, ban される事を確認した.
      • apache2 について, http://ika-itpass.scitec.kobe-u.ac.jp/ 以下の存在するファイルに findtime 内に maxretry 回アクセスしたところ, ban されなかった. 原因は /etc/fail2ban/jail.conf の記述が, vi 操作ミスにより一部消えていたことだった. 記述を元に戻したところ, http については ban されることが確認できた. https についても同様に行ったところ, ban されなかった. 原因は /etc/fil2ban/jail.conf の logpath の記述が以下のようになっていたこと. 以下のように直すと http でも httpd でも ban されることが確認できた.

修正前

[apache]

enabled = true
port    = http,https
filter  = apache-auth
findtime= 10
logpath = /var/log/httpd-error.log
maxretry = 5
bantime  = 600

# default action is now multiport, so apache-multiport jail was left
# for compatibility with previous (<0.7.6-2) releases

[apache-multiport]

enabled   = true
port      = http,https
filter    = apache-auth
findtime  = 10
logpath   = /var/log/httpd-access.log
maxretry  = 5
bantime  = 600

修正後

[apache]

enabled = true
port    = http,https
filter  = apache-auth
findtime= 10
#logpath = /var/log/httpd-error.log
logpath = /var/log/httpd-*error.log
maxretry = 5
bantime  = 600

# default action is now multiport, so apache-multiport jail was left
# for compatibility with previous (<0.7.6-2) releases

[apache-multiport]

enabled   = true
port      = http,https
filter    = apache-auth
findtime  = 10
#logpath   = /var/log/httpd-access.log
logpath   = /var/log/httpd-*access.log
maxretry  = 5
bantime  = 600
  • 確認が終了したので, findtime, maxretry, bantime の値を元に戻し, fail2ban を再起動した.
  • old
    • http
      • http://tako-itpass.scitec.kobe-u.ac.jp/ がブラウザで表示されない事を確認した.
    • fail2ban
      • 未確認ではあるが, https については ban されない可能性がある. 後日確認予定.

phase 4.5

電脳サーバへのバックアップの確認

ITPASS サーバの資源は, 毎日電脳サーバへバックアップされている. cron によって毎日実行されているそのシェルスクリプトが正常に作動しているか試行した.

電脳サーバへログインし,

$ sudo -u kobe -s

によって kobe になり, kobe のホームディレクトリに移動した. そこで,

$ ./itpass_rsync_epa2dennou.sh -n
$ ./epalab_rsync_epa2dennou_yyh.sh -n

を実行した. その後, 出力されたログを確認した.

$ cd ./itpass_rsync_epa2dennnou_log
$ less itpass_rsync_epa2dennnou.log
$ cd ../epalab_rsync_epa2dennnou_log
$ less ./epalab_rsync_epa2dennnou.log

2 つとも正常に出力されていることを確認した.

phase 4.6

new の sudoers の編集

以下のコマンドで, sudoers のうち一行を, 以下のように編集した.

new# visudo 

編集前

%itpadmin ALL=(itpadmin) ALL

編集後

%itpadmin ALL=(ALL) ALL

phase 4.7

バックアップスクリプトの設置

バックアップの際には cron を用い, rsync によるバックアップを毎日自動的に行 う. またその rsync の結果をログに残す.

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

    • root ディレクトリと home ディレクトリ用にそれぞれバックアップ用スクリプトを設置した.
    • root ディレクトリ用: rsync_localbk_root.sh を, /etc/cron.local/daily/220_rsync_localbk_root へ設置した.

      # mv ~itpass/ftp/server/2010/system_backup/rsync_localbk_root.sh&
        /etc/cron.local/daily/220_rsync_localbk_root
    • home ディレクトリ用: rsync_localbk_home.sh を, /etc/cron.local/daily/225_rsync_localbk_home へ設置した.

      # mv ~itpass/ftp/server/2010/system_backup/rsync_localbk_home.sh&
       /etc/cron.local/daily/225_rsync_localbk_home

    (スクリプト先頭の番号は, その他のスクリプトを置いた際, どれを優先して実行するかを決めるためのものである. 若い番号のものほど先に実行される.)

  • 実行権限の追加

    /etc/cron.local/daily/220_rsync_localbk_root と /etc/cron.local/daily/225_rsync_localbk_home に実行権限を追加した.

    # chmod 744 /etc/cron.local/daily/220_rsync_localbk_root
    # chmod 744 /etc/cron.local/daily/225_rsync_localbk_home
  • crontab の編集

/etc/crontab を編集し, 以下の一行を追加した. これによってローカルバックアップの結果がメールで送られることになった.

25 6    * * *   root    cd / && run-parts --report /etc/cron.local/daily |mail -s "`hostname -f` daily run outputs" itpadmin@itpass.scitec.kobe-u.ac.jp
  • バックアップログファイルの作成

ログファイルのためのディレクトリとファイルを作成しておいた. なお, このログファイルの場所は バックアップ用スクリプトの用意 で用意した 220_rsync_localbk_root と 225_rsync_localbk_home 内の LOGFILE を書き換えることで変更できる.

# mkdir /var/log/rsync-log
# cd /var/log/rsync-log
# touch localbk_root.log localbk_home.log 
  • バックアップログファイルの logrotate の設定

rsync のログを 1 週間毎に分割した. /etc/logrotate.d/ 以下に rsync_localbk_root という設定ファイルを作成した.

# vi /etc/logrotate.d/rsync_localbk_root

以下の内容を書き込んだ.

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

同様に, rsync_localbk_home も作成した.

# vi /etc/logrotate.d/rsync_localbk_home

以下の内容を書き込んだ.

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

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