EP サーバへの gate のインストール

0. はじめに

このドキュメントは EP サーバへ gate-toroku-systemをインストールする際の手順を書いたものである. OS は Debian GNU/Linux 6.0 (squeeze) を想定している.

このドキュメントはサーバ再構築の際にサーバ機の入れ換えを行うことを前提にしている. (サーバ機の入れ換えとはネットワークパラメータを付けかえるということを意味している)

1. サーバ入れ換え前の作業

1-1. 必要なパッケージのインストール

gate-toroku-system をインストールするために以下のパッケージが必要になるのでインストールしておく.

1-2. 作業用アカウントの作成

作業用アカウント gate を作成する.ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する.

# adduser --uid 500 --disabled-password gate

この時, フルネームを入力しなくてはならない. 適当に入力してよいが 「Administrator of gate-toroku-system」など, gate の管理用ユーザだということが分かるものがよいだろう.

gate グループに gate 管理者を加える. http://www.ep.sci.hokudai.ac.jp/~gate/hyousi.html のメンバーを参照のこと.

ex. /etc/group を

gate:x:500:tutaka,takahisa,mym,morikawa,odakker

と編集する.

1-3. gate ユーザへのメールの転送 [mail サーバのみ]

mail サーバの /home/gate/.qmail に gate グループのユーザアカウントを記入する.

1-4. ssh のノンパスワードログインに関する設定

1-4-1. .shosts の設定

各サーバで行う作業

gate の動作のみを考えると, gate のデータベースサーバである www サーバ (orange) では以下の設定は必要ない. しかし, サーバとして提供するサービスの1つでもあるので, www でも以下の作業を行なうこと.

.shosts 認証を可能にする. /etc/ssh/sshd_config を以下のように編集する.

(変更前)
IgnoreRhosts yes
HostbasedAuthentication no

(変更後)
IgnoreRhosts no
HostbasedAuthentication yes

ファイル編集後, ssh を再起動する.

# /etc/init.d/ssh restart

gate ユーザになる.

$ sudo -u gate -s -H

/home/gate へ移動する.

$ cd /home/gate/

.shosts を作成する. ファイルに以下のように書きこむ.

orange.ep.sci.hokudai.ac.jp gate

.shosts のパーミッションを変更し gate 以外のユーザが見れないようにする.

$ chmod 600 .shosts

www (orange) で行う作業

以下の作業は www 以外の管理者では行うことができない.よって, gate 管理者グループの人 (もしくは www 管理者) に以下の作業を行ってもらう.

/usr/bin/ssh, /usr/bin/ssh-keygen の s ビットを立てる. 確認するには

ls -lg /usr/bin/ssh /usr/bin/ssh-keygen

ファイルの所有者の実行権限の部分が s になっていればよい.

     -rwsr-xr-x 1 root root 230248 Jul 12 19:52 /usr/bin/ssh 
        ^
       ここ

s ビットを立てるには

$ chmod 4775 /usr/bin/ssh /usr/bin/ssh-keygen

を実行する.

.shosts 認証を有効にする. /etc/ssh/ssh_config に以下の 2 行を追加する.

HostbasedAuthentication yes
PreferredAuthentications hostbased,publickey,password

1-4-2. 公開鍵を新たに作り直す

各サーバで行う作業

orange の公開鍵が既に存在しているかを調べる.

(「www.ep.sci.hokudai.ac.jp」というのは「orange.ep.sci.hokudai.ac.jp」 のエイリアスであり, www サーバからのアクセスは「orange.ep.sci.hokudai.ac.jp」 からのアクセスと認識される. よって「www〜」ではなく 「orange〜」を調べる)

$ grep orange /home/gate/.ssh/known_hosts

もし

                         orange.ep.sci.hokudai.ac.jp, ssh-rsa …

のような出力が得られたら公開鍵が既に存在している.

公開鍵を削除するには .ssh/known_hosts を編集して先程の出力でで得られた行を削除する.

orange の公開鍵を取得する. orange に接続する. アドレスはフルドメインで入力する.

$ ssh orange.ep.sci.hokudai.ac.jp

ここで公開鍵を作るかどうかを聞かれるので yes と入力する.

ここでパスワードを聞かれるが当然分からない. しかし, 別にこれでよい.

www サーバ (orange) で行う作業

以下の作業も www 以外の管理者では行うことができない.よって, gate 管理者グループの人 (もしくは www 管理者) に以下の作業を行ってもらう.

gate ユーザになる.

$ sudo -u gate -s -H

リモートホストの公開鍵を新たに作り直す. 方法はローカルホストでリモートホストの公開鍵を作り直した時と同じである.

.ssh/known_hosts にローカルホストの公開鍵が存在するかを確認する. 以下の例ではでは DNS サーバの設定中を仮定し, kihada の公開鍵を探索する.

$ grep kihada .ssh/known_hosts

もし存在していたなら .ssh/known_hosts を編集して公開鍵を削除する.

一度削除した公開鍵を新たに取得しなおすために, www サーバ (orange) から 設定中のサーバへ ssh 接続してみる. (アドレスはフルドメインで入力する)

(www サーバから)
$ ssh kihada.ep.sci.hokudai.ac.jp

ここで公開鍵を作りますかと聞かれるので yes を入力する. 設定が正しければ, パスワードを聞かれることなく にログインできる.

以上で, サーバ入れ換え前の ssh のノンパスワードログインに関する設定は終了である.

予備機と本務機の入れ換え後に www サーバ (orange) の .ssh/known_hosts 内のホスト名を予備機名から本務機名に変更する必要がある. それに関しては2-1 公開鍵作り直しで述べる.

1-5. shadow ファイルの一部をコピー [www, mail サーバのみ]

旧サーバの /etc/shadow ファイルのユーザ部分 (UID 1000 - 29999) のみを新サーバの /etc/shadow に張り付ける.

1-6. 鍵ファイルを丸々コピー [www, mail サーバのみ]

旧サーバの /etc/ssh/ 以下の鍵ファイル (ファイル名中に key と書いてあるもの) を新サーバの /etc/ssh/ 以下にコピーする.

1-7. パッケージの取得と展開

1-7-1. パッケージの取得

www.ep.sci.hokudai.ac.jp からインストール中のホストに /home/gate/gate-toroku-system.tar.gz をコピーする. コピー先のディレクトリは /home/gate とする.

(www ではなく, 各サーバで行う)
$ sudo -u gate -s -H
$ cd /home/gate
$ scp hogehoge@orange.ep.sci.hokudai.ac.jp:/home/gate/gate-toroku-system.tar.gz ./

ここで hogehoge のところは自分のユーザアカウントを入れる. hogehoge@ を省略すると gate ユーザのパスワードを聞かれてしまうので注意すること.

1-7-2. パッケージの展開

コピーして来た gate-toroku-system.tar.gz を展開する.

$ tar xvfz gate-toroku-system.tar.gz

作成された gate-toroku-system ディレクトリに移動.

$ cd gate-toroku-system

1-7-3. パッケージの設定 [www 以外]

orange の再構築終了後に再構築するサーバ

orange.ep.sci.hokudai.ac.jp から /etc/gate.conf をコピーする.

$ scp orange.ep.sci.hokudai.ac.jp:/etc/gate.conf ./include/gate.conf

orange の再構築終了前に再構築するサーバ

gate-toroku-system に梱包されている gate.conf を基に設定ファイルを作成する. とくに以下のパラメータの値に注意されたい.

1-7-4. パッケージのインストール

Config.mk の生成

$ exit (一般ユーザに戻る)
$ sudo -u gate -s -H
$ cd /home/gate/gate-toroku-system
$ perl ./config.pl

make によるコンパイル

$ make

ほんとにインストール

$ exit (一般ユーザに戻る)
$ sudo -s (root ユーザになる)
# cd /home/gate/gate-toroku-system
# cp include/gate.conf /etc/gate.conf
# make install

インストール終了後, プログラムファイル (gate-ip-accept 等)が /usr/local/bin, /usr/local/sbin, /usr/local/lib/gate にインストールされていることを確認する. また, /etc/passwd, /etc/shadow, /etc/group, /etc/sudoers が /ETC に存在していることを確認する.

1-8. デーモンの設定

1-8-1. デーモンモードで起動するための確認

デーモンモードで起動するため /etc/gate.conf で

        $USE_DAEMON = 1 ;

と表示されているのを確認する.

1-8-2. gate-toroku-system 用のポートの作成

/etc/inetd.conf に以下の行を追加(1 行で書く)

  gate stream tcp nowait root /usr/sbin/tcpd /usr/local/lib/gate/gate-daily -N 

gate 用に 8888 番 ポートを割り当てる. /etc/services に以下の行を追加する.

      gate   8888/tcp

/etc/inetd を再起動する.

# kill -HUP `cat /var/run/inetd.pid`

1-8-3. TCPWrapper によるセキュリティ強化

gate のポートには登録サーバである orange 以外のホストはアクセスできないようにする. /etc/hosts.deny を以下のように編集して全てのホストに対して gate ポートへのアクセスを禁止する.

        gate-daily: ALL [改行]

/etc/hosts.allow を以下のように編集して orange に対して gate ポートへのアクセスを許可する.

[www サーバの場合]

        gate-daily: 127.0.0.1 [改行]

[その他のサーバの場合]

        gate-daily: orange.ep.sci.hokudai.ac.jp [改行]

1-8-4. アクセスの確認

# tcpdmatch gate-daily [orange.ep.sci.hokudai.ac.jp 以外のホスト名]

を実行して access: denied と表示されればよい.

# tcpdmatch gate-daily orange.ep.sci.hokudai.ac.jp

を実行して access: granted と表示されればよい.

1-9. 安全の確保

本格運用を開始するにあたり万一の場合に備え以下の作業を行う.

1-9-1. 重要ファイルのバックアップ

/etc/passwd, /etc/shadow, /etc/group, /etc/sudoers ファイルのバックアップをホームディレクトリ以下に作成しておく.

cp /etc/passwd ~/
cp /etc/shadow ~/
cp /etc/group ~/
cp /etc/sudoers ~/

パーミッションを設定して外部から見れないようにする.

$ chmod 400 passwd shadow group sudoers

1-9-2. root になった端末を残しておく

万一端末が動かなくなった時に作業ができるように root になった端末をもう一つ確保しておく.

1-10. 動作確認

www サーバ (orange) から設定中のサーバ (以下は yellow の場合の例) の gate ポートに接続する.

$ ssh orange.ep.sci.hokudai.ac.jp
$ telnet yellow.ep.sci.hokudai.ac.jp 8888

正常に接続できたかを確認するには /etc/passwd, /etc/shadow などのファイルのタイムスタンプを確認する.

(各サーバでチェック [www でじゃないよ!!])
$ date (現在時刻の確認)
$ ls -l /etc/passwd /etc/shadow

また, /etc/passwd の中身がユーザ ID の順番に並び変えられていればよい.

2. サーバ入れ換え後の作業

2-1. 公開鍵作り直し

以下の作業も www 以外の管理者では行うことができない.よって, gate 管理者グループの人 (もしくは www 管理者) に以下の作業を行ってもらう.

サーバを入れ換えたため www サーバ (orange) 内の .ssh/known_hosts 内のホスト名と IP アドレスが実際のサーバ名が合わなくなっている. 従って, 公開鍵を再び取り直す.

公開鍵を新たに取得しなおすために, www サーバ (orange) から ホスト名と IP アドレスを変更後のサーバへ ssh 接続してみる. (アドレスはフルドメインで入力する). 以下の例では, 変更後のサーバのホスト名が yellow.ep.sci.hokudai.ac.jp である.

(www サーバから)
$ ssh yellow.ep.sci.hokudai.ac.jp

ここで公開鍵を作りますかと聞かれるので yes を入力する. 設定が正しければ, パスワードを聞かれることなく にログインできる.

以上で, ssh のノンパスワードログインに関する設定は完全に終了である.

2-2. gate.conf の確認

orange.ep.sci.hokudai.ac.jp の /etc/gate.conf の %DB_SHARE_HOSTS にこのサーバののホスト名が書き込まれているかを確認する.

2-3. データベース転送

登録サーバで gate ポートにアクセスすることによって gate-daily を動かす. これにより, データベースの転送が行われる. 転送には 1,2 分程度かかる.

$ ssh orange.ep.sci.hokudai.ac.jp
$ telnet localhost 8888

2-3-1. WWW 以外での確認作業

転送完了の確認には ps aux コマンドを実行する. gate-daily が動いていなければ, 転送は完了している.

(www じゃなくて設定中のサーバで)
$ ps aux | grep gate

また, リモートホスト側で /etc/passwd が gate-daily によって更新されているかを確認する. 確認するためには以下を実行する.

$ ls -lt /etc/passwd

このとき表示される時間が数分前であればよい.

なお, データベースは /home/gate/userdb や /home/gate/ipdb 以下にあるので, その中にそれなりにデータファイル (3桁くらい) あれば転送が完了していると思って良い.

(www じゃなくて設定中のサーバで)
# ls /home/gate/userdb/stable /home/gate/ipdb/stable

ファイルが全く存在しない場合は転送が失敗しているので注意.

2-3-2. WWW での確認作業

転送完了の確認には ps aux コマンドを実行する. gate-daily が動いていなければ, 転送は完了している.

(www で)
$ ps aux | grep gate

また, www で /etc/passwd が gate-daily によって更新されているかを確認する. 確認するためには以下を実行する.

$ ls -lt /etc/passwd

このとき表示される時間が数分前であればよい.

なお, データベースは /home/gate/userdb や /home/gate/ipdb 以下にあるので, その中にデータファイルが www とその他で一致していれば, 転送が完了していると思って良い. 全て調べるのは面倒なので, 最新のものが一致していれば良いだろう.

(www 中のサーバで)
# ls -ltr /home/gate/userdb/stable/ | tail -1
(以下のように最新のものが表示される)
-rw-rw-r-- 1 gate gate 924 3月 9 23:36 epnetfan

(www じゃなくて設定中のサーバで)
# ls -ltr /home/gate/userdb/stable/ | tail -1
(www のものと同じならば OK)
-rw-rw-r-- 1 gate gate 924 3月 9 23:36 epnetfan

ファイルが一致場合は転送が失敗しているので注意.

2-4. 後始末

安全に動作していれば /ETC , /HOME を削除する.

# rm -r /ETC /HOME

また, mondo ユーザも削除する.

# deluser --remove-home mondo7


最終更新日 : 2011/09/29 (小高 正嗣) 2011 年度用(Debian GNU/Linux 6.0 対応)に修正 Copyright © 2011 EPCore