IT pass HikiWiki - [Memo2014][ITPASS]サーバアップグレード(tako) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{ toc }}

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

== hikiのパッケージを削除

# apt-get purge hiki

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

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

== システムアップグレード作業
* 以下の手順を参考に進める
  * ((<URL:https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html>))

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

* 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 に書き換えた