[Memo2014][ITPASS]サーバアップグレード(tako)

ITPASSサーバアップグレード(tako)

hikiのパッケージを削除

# apt-get purge hiki

/usr/share/hiki/misc 以下のパッチを当てたファイルが消されず残ったので、手動で消した

# rm -r /usr/share/hiki/misc

システムアップグレード作業

パッケージ関連の設定確認

  • Squeeze の最新版にする
# apt-get update
# apt-get upgrade
  • パッケージマネージャにおいて中断しているアクションの確認
    • aptitude のビジュアルモードで起動し, g を押す
    • いくつかのパッケージが削除推奨になった
      • 指示通り削除した
  • exim 関連の hold はそのままにする
  • パッケージの状態をチェックする
    • インストールが未完了のパッケージ (Half-Installed) や設定に失敗したパッケージ (Failed-Config), 何らかのエラー状態にあるパッケージを表示

      # dpkg --audit
      • 何も表示されなかった
  • /etc/apt/source.list の電脳関連の部分をコメントアウト

wheezy へのアップグレード

アップグレードの準備
  • APT のインターネットソースの編集
    • /etc/apt/source.list の squeeze を wheezy に書き換え
    • 不要な部分を消去
  • アップグレードセッションの記録をとる
# script -t 2>/home/hogehoge/upgrade-wheezy手順.time -a ~/upgrade-wheezy1.script
  • パッケージリストの更新
# apt-get update
  • アップグレードするのに十分な領域があることを確認

    # apt-get -o APT::Get::Trivial-Only=true dist-upgrade
    • 問題はなかった
  • コンピューターが PAE を持っているかを確認
    • 64bit 版の OS なので確認しなかった
システムの最小アップグレード
# apt-get upgrade
  • update-passwd に関するメッセージが表示された
    • bind ユーザー, およびグループの削除を推奨された
      • 削除した
      • この後の作業で再度追加する
  • adduser の更新で, /etc/deluser.conf を更新するか確認された
    • 更新しないので, N を押した
  • cron の更新で, /etc/crontab を更新するか確認された
    • 更新しないので, N を押した
  • fail2ban の更新で, /etc/fail2ban/filter.d/sshd.conf を更新するか確認された
    • 更新しないので, N を押した
  • fail2ban の更新で, /etc/fail2ban/filter.d/apache-auth.conf を更新するか確認された
    • 更新しないので, N を押した
  • fail2ban の更新で, /etc/fail2ban/filter.d/jail.conf を更新するか確認された
    • 更新しないので, N を押した
  • linux-base の更新で, システムのディスクデバイス ID を更新しますかと聞かれた
    • 「はい」を選択
    • その後, fstab にも同様の更新を適用するか聞かれるので, こちらも「はい」を選択
  • sudoers の更新で, /etc/sudoers を更新するか確認された
    • 更新せず, 後で書き換える
システムのアップグレード
  • アップグレード時のトラブルを避けるため, 以下のパッケージを削除した
# apt-get remove openjdk-6-jre
  • システムのアップグレード

    # apt-get dist-upgrade
    • libc6 の設定で, 一部のサービスを自動的に再起動してもいいか聞かれる
      • Yes を選択
    • bash /etc/bash.bashrc の設定を更新するか聞かれる
      • 更新しないため, N を押した
    • openssl /etc/ssh/openssl.cnf
      • 更新しないため, N を押した
    • /etc/services
      • 更新しないため, N を押した
    • /etc/logrotate.d/rsyslog
      • ひとまず更新せず, 変更点を後で書き換え
    • /etc/csh.cshrc
      • 更新しない

sudoers 関連の設定

  • マニュアルで推奨されている /etc/sudoers.d 下への移動は行わない
    • gate-touroku-system が /etc/sudoers を編集するので
  • /usr/local/gate/sbin/gate-db-to-sudoers ファイルを編集し, 以下のコメント文の下三行を追加した
# This is /etc/sudoers file, generated by gate-db-to-sudoers.
# If you are to edit this file, do not edit it directly.

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/

sbin:/bin"

rsyslog

invoke-rc.d rsyslog reload > /dev/null

となっているところを

invoke-rc.d rsyslog rotate > /dev/null

とする。

bind の設定

  • bind ユーザー, グループを追加する

    • vipw を実行して以下の行を追加する
    bind:x:53:53:Bind Sandbox:/usr/local/bind/var:/bin/false
    • vipw -s を実行して以下の行を追加する
    bind:!:13749:0:99999:7:::
    • vigr を実行して以下の行を追加する
    bind:x:53:
    • vigr -s を実行して以下の行を追加する
    bind:*::
  • bind を起動する
# /etc/init.d/bind start

gate の設定

  • [itpass 7849] gateのためのwrapperプログラム のメール添付ファイルをコンパイルした # gcc -o gate-user-show wrapper2.c
  • /usr/local/gate/bin の以下のファイル名の末尾に.plxを付けた
gate-user-accept
gate-user-apply
gate-user-list
gate-user-authkey-lock
gate-user-authkey-unlock
gate-user-renew
gate-user-withdraw
  • コンパイルしたファイル (gate-user-show) を /usr/local/gate/bin 以下に置いた
    • このファイルの所有者は gate:gate, パーミッションは 2755 とした
  • libperl4-corelibs-perl をインストール
  • 動作テスト

    gate-user-show hogehoge
    • 正常に動作した
  • gate-user-show ファイルをコピーして, 以下のファイル名に変更
gate-user-accept
gate-user-apply
gate-user-list
gate-user-authkey-lock
gate-user-authkey-unlock
gate-user-renew
gate-user-withdraw
  • 以下の作業を行った
    • wrapperプログラムの不備を解消した
    • libjcode-perlの代わりにlibjcode-pm-perlを使うように変更。
    • htpasswdで生成する.gateファイルのフォーマットが変わったので、従来のフォーマットで生成するためのオプション-dを付け加えるようマニュアルを書き換えた。

apt の設定

  • /etc/apt/source.list 内の電脳関連パッケージのコメントアウトを外し, squeeze を wheezy に書き換え
  • 公開鍵署名を更新
# apt-key adv --keyserver keyring.debian.org --recv 891D7E07
  • 更新する
# apt-get update
# apt-get upgrade

ここでいったん再起動した

hiki の設定

ika-itpass の hiki のアプリケーションとデータを rsync で持ってくる

  • tako の root ログインを許可するため, tako の /etc/ssh/sshd_config を以下のように書き換える
    • PermitRootLogin の no を yes に
    • PasswordAuthentication の no を yes に
  • rsync を実行する
rsync -a -e=ssh -v /usr/share/hiki/ root@133.30.109.21:/usr/share/hiki/
  • 先ほど書き換えた sshd_config を元に戻す
  • hiki のデータを ika からコピーする

    • ika->tako のバックアップを復活させる
    # chmod +x 230_rsync_itpassbk
    • /etc/crontab 内の実行時間を直近の時間に書き換え, 実行させる
  • 試しに hiki のページを開いてみたところ, docdiff がロードできないというエラーが出たのでそのパッケージを入れる

    # apt-get install docdiff
    • 正常に動作するようになった
  • /etc/crontab の設定を元に戻した

gate

  • gate-user-show 実行時に表示されたエラーに書かれていた /usr/lib/perl5/jcode.pl の該当行を編集
  • /usr/local/gate/bin 以下のファイルの所有者を gate にした
  • 所有者を変更した際にsetuid の設定が外れてしまったので, setuid gate した(モードを 2775)
  • gate-db-to-sudoers の設定時に, PATH に改行が入ってしまっていたので, それを修正
  • wrapper のソースを修正して再コンパイルし, 置き換え
    • snprintf 内の argv[0] をbasename() で括る
    • #include <libgen.h> の追加
  • if_sndr_from.pl を置いた
  • inetd が起動していないため, gate が正常動作していない
    • openbsd-inetd を再インストール
    • /etc/init.d/openbsd-inetd に実行権限を付与

hikiの追加の設定

/usr/share/hiki/misc/plugin/table_form_rd.rb

の 80 行目の lines.each を lines.each_line に書き換えた