IT pass HikiWiki - [Memo2011][ITPASS] ika 構築作業ログ 7 (DNS, gate2) Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
2011/10/21,24 に ika 構築作業(DNS,gate)を中坊, 鈴木, 兵頭で行った.(ロガー: 中坊)
{{toc_here}}
[((<[ITPASS]過去の構築ドキュメント>)) へ戻る]
= アカウント作成
鈴木アカウント作成
chikuwa8
= 各設定ファイルの編集
== rndc のテスト
以下のコマンドを実行する.
root@new:/usr/local/bind/etc# rndc reload
rndc: connect failed: 127.0.0.1#953: connection refused
というエラーによって上手くいかない.
rndc.keyのインデントがスペースになっていたのでタブに変更した.
一度root から抜けて再度rootになって試してみたらうまくいった.
原因は不明.上手く更新されていなかったのかもしれない。
= 起動テスト
以下のコマンドを実行し, 起動テストを行った.
# /usr/local/bind/sbin/named -u bind -c /usr/local/bind/etc/namedb/named.conf
* /var/log/syslog を見て, 起動したことを確認した
managed-keys-zone に関するエラーが出たので /usr/local/bind/etc/namedb の下に,managed-keys.bind という空のファイルを作成したところ上手くいった.
* ps -ax コマンドなどで走っていることを確認した
= ファイルフォーマットチェック
named.conf とゾーン, 各々の整合性を確認する.
root@tako:/usr/local/bind/etc# named-checkconf /usr/local/bind/etc/namedb/named.conf
何も出力されなかったので正常.
さらに以下を実行した.
root@tako:/usr/local/bind/etc/nemedb# named-checkzone localhost localhost.zone
以下のように表示されれば正常である.
zone localhost/IN: loaded serial XXXXXXXXXX
OK
* XXXXXXXXXX には Serial に書いた数字が表示される.
= 起動スクリプトの用意
サーバの起動時に自動的に起動させるため, bind の起動スクリプトを用意する.
* Debian の bind パッケージに含まれる/etc/init.d/bind を元に起動スクリプトを bind 用に多少書き換えたものが, ((<bind|URL:../server/2010/bind/bind>)) から入手できる. このファイルを /etc/init.d/bind にダウンロードする.
# cd /etc/init.d
# wget http://itpass.scitec.kobe-u.ac.jp/server/2010/bind/bind
* 以下のように所有者とパーミッションを設定する.
# chown root:root /etc/init.d/bind
# chmod 755 /etc/init.d/bind
* 念のため, bind スクリプトの start, stop, restart の動作確認を行う. bind というコマンドが別に存在するため,絶対パスで bind ファイルを指定しなければならない.
# /etc/init.d/bind start
# /etc/init.d/bind stop
# /etc/init.d/bind restart
コマンドごとに ps ax で動作を確認する.
* ランレベルごとに bind の動作を設定する.
# update-rc.d bind defaults
# update-rc.d: using dependency based boot sequencing
と表示される. これは成功であると判断し先に進む.
* さらに, new を再起動し, 起動時に bind が起動することを確認した.
# reboot
== サーバ停止
このままの設定では, 何らかの原因で tako を DNS サーバとして参照してしまうと tako が itpass.scitec.kobe-u.ac.jp であるとなりすましてしまう不具合が発生するので, DNS サーバは ITPASS サーバ交代の時まで停止する.
DNS サーバ (bind) を停止.
# /etc/init.d/bind stop
起動時に bind を起動しないようにした.
# update-rc.d -f bind remove
サーバを再起動し, bind が起動していないことを確認した.
= 兵頭アカウント作成
chikuwa9
= アカウント作成
* gate グループに gate 管理者を加えた.
gate 管理者については, gate-toroku-systemの開発とメンテナンスの開発メンバーのユーザおよび, gate のインストールを行ったメンバーとする.
# vigr
gate:x:500:tyubo,aynszk,ryukih
# vigr -s
gate:!:::tyubo,aynszk,ryukih
= gate-toroku-system のソースを取得
gate-toroku-system のソース (gate-toroku-system.tar.gz)
を ika の /home/gate/ から入手し, tako の /home/gate に置く.
= 必要なソフトウェアのインストール
* まず, gate に必要なパッケージをインストールする. /etc/apt/sources.list の以下の二行の末尾を変更する.
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
* その後, 以下のコマンドで, 必要なパッケージをインストールされていることを確認する.
# apt-get update
# apt-get install perl-suid rsync wget htroff cvs
# apt-get install libjcode-pm-perl
# apt-get install libcrypt-passwdmd5-perl
# apt-get install libdatetime-perl
# apt-get install libdatetime-format-strptime-perl
実行ファイルや man 用ファイル, HTML ファイルは
/usr/local/gate 以下にインストールされる.
# apt-get install htroff
のみパッケージが存在しないと表示された.
ソースパッケージを取得するために, ひとまず /etc/apt/sources.list の先ほど編集した二行を
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
に変更した. この状態で
# apt-get update
# apt-get source htroff
を実行すると,
htroff-2.0(ディレクトリ), htroff_2.0.diff.gz, htroff_2.0-3.dsc, htroff_2.0.orig.tar.gz
を得る. これらを用いてバイナリパッケージを作成する.
# cd htroff-2.0
# dpkg-buildpackage -us -uc -b -rfakeroot
を実行. オプションは以下の通り.
-us -> ソースに署名しない
-uc -> changelogに署名しない
-b -> バイナリのみ作成
-r -> root権限取得コマンド(fakerootは擬似的にroot権限を使えるコマンド)
その結果,
htroff_2.0-3_all.deb, htroff_2.0-3_amd64.changes
が得られた.何のエラーも出なかったため, 依存関係は満たしているようだ.
後はインストールするだけなので,
# dpkg -i htroff_2.0-3_all.deb
これで, htroff がインストールできた.
最後に, /etc/apt/sources.list の中の二行を
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
に変更し,
# apt-get update
を実行した.
= gate ユーザへのメールの転送
/home/gate/.qmail に gate 管理者のメールアドレスを書き込んだ. メンバーは上記の ((<URL:#作業用アカウントの作成>)) でグループに加えたものと同じにする.
# vi /home/gate/.qmail
&tyubo
&aynszk
&ryukih
= make とインストール
以下のコマンドを実行し, make とインストールを行った.
# su gate
$ cd ~gate/gate-toroku-system/
$ perl ./config.pl
$ make
$ exit
$ sudo -s
# cd ~gate/gate-toroku-system
# make install
実行ファイルや man 用ファイル, HTML ファイルは /usr/local/gate 以下にインストールされる.
(IP 管理用の設定ファイルも同様の場所に gate-ip.confとしてインストールされる).
== cgi のシンボリックリンク作成
/usr/local/gate/lib/cgi-bin 以下にインストールされる cgi のシンボリックリンクを /usr/local/apache2/cgi-bin 以下に作成した
# cd /usr/local/apache2/cgi-bin
# ln -s ../../gate/lib/cgi-bin/gate-*.cgi .
= インストールした実行ファイルへのパスの設定
インストールした gate-toroku-system の実行ファイル群へパスを通した.
((<[ITPASS2010]パスの設定>)) の((* <一般ユーザ用コマンドのパス> *))に ((*/usr/local/gate/bin*)) を, ((* <システム管理用コマンドのパス> *))に ((*/usr/local/gate/sbin*)) を追加した.
= インストールしたマニュアルへのパスの設定
((<[ITPASS2010]パスの設定#man 関連のパスの設定>)) を参照し, /etc/manpath.config に以下の行を追加した.
MANDATORY_MANPATH /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/bin /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/sbin /usr/local/gate/man/ja
MANDB_MAP /usr/local/gate/man/ja /usr/local/gate/man/ja
= Web インターフェースのチェック
https://new-itpass.scitec.kobe-u.ac.jp/~gate/ にアクセスし,gate 登録システムのインデックスページが見えるか確認した. また, そのページからリンクされている個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) などに移動し, CGI が動作しているかチェックした.
= ユーザの作成
== /home/gate/userdb 以下のコピー
この作業では ika から tako へ root ログインする必要があるため root ログイン用の公開鍵の設置と root ログインの許可を事前に行う.
=== root ログイン用の公開鍵の設置
* ika に残った, インストール前の tako の情報を削除
ika の /root/.ssh 以下にある known_hosts のなかの tako に該当する行を削除する. (何番目が tako に該当するかは ika で ssh または rsync のコマンドを実行しようとしたときのエラーからわかる. )
* tako で鍵を作成
tako-itpass$ sudo -s
tako-itpass# cd /root
tako-itpass# ssh-keygen -t dsa
(鍵はデフォルトの /root/.ssh/id_dsa とする)
(パスフレーズは空にする)
tako で作成した公開鍵 tako:/root/.ssh/id_dsa.pub を ika:/root/.ssh/authorized_keys にコピーする. 既に authorized_keys が作成されている場合には, id_dsa.pub の内容を authorized_keys の最後尾に追記する.
=== root ログインの許可
* 次にika 内の root ログインの許可を設定する.
作業内容については((<[ITPASS2010]sshのインストールと設定#パスワード認証の拒否と root ログインの拒否設定>))を参照.
PermitRootLogin yes
=== ika のユーザデータベースを tako にコピーする.
* ika の /home/gate/userdb を tako 内の /home/gate/userdb にコピーした.
* まず, -n オプションを付けて rsync の動作チェックを行った.
いきなり rsync コマンドを実行すると予期せぬ間違い(転送元と転送先の設定を間違って, 転送先のファイルを全て消してしまう等)が起こりうるため, まずは rsync コマンドに -n オプションをつけて実行する. -n オプションをつけて実行すると, 実際のファイルの転送は行わずに, 転送されるはずのファイルのリストが出力される.
new-itpass# rsync -n -av --delete ika-itpass:/home/gate/userdb/ /home/gate/userdb/
* 実際にコピーを行う.
new-itpass# rsync -av --delete ika-itpass:/home/gate/userdb/ /home/gate/userdb/
* ika内のroot ログインを不許可に設定し直した.
PermitRootLogin no
== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース内に居た場合, 初めてユーザを作成したと認識してメールを送信するようになっている.
移行作業の際に大量のメールが送信されないよう, 先に old の /etc/shadow の一部を new の /etc/shadow にコピーする.
* old の /etc/shadow のうち, UID 1000 〜 29999 までの gate-toroku-system で管理されるユーザーについて, そのアカウント名の行をコピーして new の /etc/shadow のファイルに((*追加した*)). 各ユーザに対する uid は /etc/passwd に書かれているので参照した
# lv /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
^ ここが uid
== 最初の保証人ユーザ作成
個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) にアクセスし, ユーザ登録申請を行った.
保証人は先につくったユーザ "gate" とした.
(今回はアカウント名:ryukihy にした)
/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログイン名がついたファイル) が生成されているか確認した.
承認を行うために保証人 "gate" の登録システム用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行した.
# su gate
$ cd
$ htpasswd -c ~gate/.gate gate
ここで投入したパスワードを用いてユーザ "gate" として保証人のユーザ登録承認 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-accept.cgi) を用いる )を行う. その後, /home/gate/userdb/stable に承認されたユーザのデータベースファイルが移動していることを確認する.
(パスワードは中坊が管理)
= アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させるために, ルートで /usr/local/gate/lib/gate-daily を起動する.
* gate-daily は /etc/gate/gate.conf を参照するので, 起動前に gate.conf 内の 'ika-itpass' を 'tako-itpass' と書き換え. その後以下を実行した.
# perl /usr/local/gate/lib/gate-daily
/etc 内に存在する passwd, group, shadow, sudoers ファイルが更新され, それぞれ .bk を付加した名前のバックアップファイルが生成された. ファイルに登録したユーザの情報が新たに書き込まれていることを確認した.
また /home に /home/gate/userdb 以下に存在するユーザのディレクトリができていることを確認した.
= デーモンモードでの運用
ユーザ, ホストのデータベースをシステムに反映させるため, デーモンモードでの運用の設定を行った.
* gate-sys.conf の設定
/etc/gate/gate-sys.conf 中の $USE_DAEMON 変数が 1 であることを確かめた.
$USE_DAEMON = 1;
* gate-toroku-system 用のポートの作成
/etc/inetd.conf に以下の一行を付け足した.
gate stream tcp nowait root /usr/sbin/tcpd /usr/local/gate/lib/gate-daily -N
* ポート番号の設定
/etc/services に以下の行を付け足した.
gate 8888/tcp # gate-toroku-system
* TCP wrapper によるセキュリティ強化
gate ポートは, 登録サーバからのアクセスさえ受け付けられればその役目を果たす.
そのため, TCP wrapper を使用してアクセスを登録サーバからのものに限定する.
特に ITPASS サーバは 1 台での運用なので, 自身からのアクセスのみ許可する.
* /etc/hosts.deny の編集
まず, 全てのホストからの gate ポートへのアクセスを拒否するよう /etc/hosts.deny に以下の一行を追加した.
gate-daily: ALL
* /etc/hosts.allow の編集
登録サーバ自身 (new) からのアクセスは許可するよう, /etc/hosts.allow に以下の一行を追加した.
gate-daily: 127.0.0.1
* 登録サーバ以外のホストからのアクセスが拒否されるか確認
以下では google.com で試した場合.
root@new-itpass:/home/gate# tcpdmatch gate-daily google.com
client: hostname nrt04s01-in-f99.1e100.net
client: address 66.249.89.99
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
client: hostname nrt04s01-in-f104.1e100.net
client: address 66.249.89.104
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
denied と表示されたので拒否されている.
次に, 登録サーバ自身からのアクセスは許可されているか確認した.
root@new-itpass:/home/gate# tcpdmatch gate-daily localhost
client: hostname localhost
client: address 127.0.0.1
server: process gate-daily
matched: /etc/hosts.allow line 14
access: granted
granted と表示されたので許可されている.
* inetd を再起動
# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.
* 確認
CGI から適当なユーザの申請および認証を行う. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていることを確認した.
= gate-toroku-system ソースの移動
ソースの名前を変更し, バックアップとして残した.
* /home/gate/gate-toroku-system は必要ないが, バックアップとして以下のように名前を変更して残す
cp -r gate-toroku-system gate-toroku-system_2011-10-24
^^^^^^^^^^ インストールした日付
= doc ディレクトリのシンボリックリンクを作成
/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを/home/gate/public_html/ に作成した.
#cd /home/gate/public_html/
#ln -s /usr/local/gate/doc
# ls -l
root@new-itpass:/home/gate/public_html# ls -l
合計 64
lrwxrwxrwx 1 root root 19 2010-10-15 19:40 doc -> /usr/local/gate/doc
= ezmlm を使う場合の設定
この作業は, ezmlm のインストール後に行う.
== gate-db-to-ezmlm の設定
sudo になって /usr/local/gate/bin/gate-db-to-ezmlm の「0. 実行ファイル, ドメインの指定」の項目を以下のように変更する.
変更前
$domainname='gfd-dennou.org';
$ezmlmlist='/usr/bin/ezmlm-list';
$ezmlmsub='/usr/bin/ezmlm-sub';
$ezmlmunsub='/usr/bin/ezmlm-unsub';
変更後
$domainname='itpass.scitec.kobe-u.ac.jp';
$ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list';
$ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub';
$ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub';
[((<ITPASSサーバ構築ドキュメント>)) へ戻る]
{{toc_here}}
[((<[ITPASS]過去の構築ドキュメント>)) へ戻る]
= アカウント作成
鈴木アカウント作成
chikuwa8
= 各設定ファイルの編集
== rndc のテスト
以下のコマンドを実行する.
root@new:/usr/local/bind/etc# rndc reload
rndc: connect failed: 127.0.0.1#953: connection refused
というエラーによって上手くいかない.
rndc.keyのインデントがスペースになっていたのでタブに変更した.
一度root から抜けて再度rootになって試してみたらうまくいった.
原因は不明.上手く更新されていなかったのかもしれない。
= 起動テスト
以下のコマンドを実行し, 起動テストを行った.
# /usr/local/bind/sbin/named -u bind -c /usr/local/bind/etc/namedb/named.conf
* /var/log/syslog を見て, 起動したことを確認した
managed-keys-zone に関するエラーが出たので /usr/local/bind/etc/namedb の下に,managed-keys.bind という空のファイルを作成したところ上手くいった.
* ps -ax コマンドなどで走っていることを確認した
= ファイルフォーマットチェック
named.conf とゾーン, 各々の整合性を確認する.
root@tako:/usr/local/bind/etc# named-checkconf /usr/local/bind/etc/namedb/named.conf
何も出力されなかったので正常.
さらに以下を実行した.
root@tako:/usr/local/bind/etc/nemedb# named-checkzone localhost localhost.zone
以下のように表示されれば正常である.
zone localhost/IN: loaded serial XXXXXXXXXX
OK
* XXXXXXXXXX には Serial に書いた数字が表示される.
= 起動スクリプトの用意
サーバの起動時に自動的に起動させるため, bind の起動スクリプトを用意する.
* Debian の bind パッケージに含まれる/etc/init.d/bind を元に起動スクリプトを bind 用に多少書き換えたものが, ((<bind|URL:../server/2010/bind/bind>)) から入手できる. このファイルを /etc/init.d/bind にダウンロードする.
# cd /etc/init.d
# wget http://itpass.scitec.kobe-u.ac.jp/server/2010/bind/bind
* 以下のように所有者とパーミッションを設定する.
# chown root:root /etc/init.d/bind
# chmod 755 /etc/init.d/bind
* 念のため, bind スクリプトの start, stop, restart の動作確認を行う. bind というコマンドが別に存在するため,絶対パスで bind ファイルを指定しなければならない.
# /etc/init.d/bind start
# /etc/init.d/bind stop
# /etc/init.d/bind restart
コマンドごとに ps ax で動作を確認する.
* ランレベルごとに bind の動作を設定する.
# update-rc.d bind defaults
# update-rc.d: using dependency based boot sequencing
と表示される. これは成功であると判断し先に進む.
* さらに, new を再起動し, 起動時に bind が起動することを確認した.
# reboot
== サーバ停止
このままの設定では, 何らかの原因で tako を DNS サーバとして参照してしまうと tako が itpass.scitec.kobe-u.ac.jp であるとなりすましてしまう不具合が発生するので, DNS サーバは ITPASS サーバ交代の時まで停止する.
DNS サーバ (bind) を停止.
# /etc/init.d/bind stop
起動時に bind を起動しないようにした.
# update-rc.d -f bind remove
サーバを再起動し, bind が起動していないことを確認した.
= 兵頭アカウント作成
chikuwa9
= アカウント作成
* gate グループに gate 管理者を加えた.
gate 管理者については, gate-toroku-systemの開発とメンテナンスの開発メンバーのユーザおよび, gate のインストールを行ったメンバーとする.
# vigr
gate:x:500:tyubo,aynszk,ryukih
# vigr -s
gate:!:::tyubo,aynszk,ryukih
= gate-toroku-system のソースを取得
gate-toroku-system のソース (gate-toroku-system.tar.gz)
を ika の /home/gate/ から入手し, tako の /home/gate に置く.
= 必要なソフトウェアのインストール
* まず, gate に必要なパッケージをインストールする. /etc/apt/sources.list の以下の二行の末尾を変更する.
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
* その後, 以下のコマンドで, 必要なパッケージをインストールされていることを確認する.
# apt-get update
# apt-get install perl-suid rsync wget htroff cvs
# apt-get install libjcode-pm-perl
# apt-get install libcrypt-passwdmd5-perl
# apt-get install libdatetime-perl
# apt-get install libdatetime-format-strptime-perl
実行ファイルや man 用ファイル, HTML ファイルは
/usr/local/gate 以下にインストールされる.
# apt-get install htroff
のみパッケージが存在しないと表示された.
ソースパッケージを取得するために, ひとまず /etc/apt/sources.list の先ほど編集した二行を
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
に変更した. この状態で
# apt-get update
# apt-get source htroff
を実行すると,
htroff-2.0(ディレクトリ), htroff_2.0.diff.gz, htroff_2.0-3.dsc, htroff_2.0.orig.tar.gz
を得る. これらを用いてバイナリパッケージを作成する.
# cd htroff-2.0
# dpkg-buildpackage -us -uc -b -rfakeroot
を実行. オプションは以下の通り.
-us -> ソースに署名しない
-uc -> changelogに署名しない
-b -> バイナリのみ作成
-r -> root権限取得コマンド(fakerootは擬似的にroot権限を使えるコマンド)
その結果,
htroff_2.0-3_all.deb, htroff_2.0-3_amd64.changes
が得られた.何のエラーも出なかったため, 依存関係は満たしているようだ.
後はインストールするだけなので,
# dpkg -i htroff_2.0-3_all.deb
これで, htroff がインストールできた.
最後に, /etc/apt/sources.list の中の二行を
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
に変更し,
# apt-get update
を実行した.
= gate ユーザへのメールの転送
/home/gate/.qmail に gate 管理者のメールアドレスを書き込んだ. メンバーは上記の ((<URL:#作業用アカウントの作成>)) でグループに加えたものと同じにする.
# vi /home/gate/.qmail
&tyubo
&aynszk
&ryukih
= make とインストール
以下のコマンドを実行し, make とインストールを行った.
# su gate
$ cd ~gate/gate-toroku-system/
$ perl ./config.pl
$ make
$ exit
$ sudo -s
# cd ~gate/gate-toroku-system
# make install
実行ファイルや man 用ファイル, HTML ファイルは /usr/local/gate 以下にインストールされる.
(IP 管理用の設定ファイルも同様の場所に gate-ip.confとしてインストールされる).
== cgi のシンボリックリンク作成
/usr/local/gate/lib/cgi-bin 以下にインストールされる cgi のシンボリックリンクを /usr/local/apache2/cgi-bin 以下に作成した
# cd /usr/local/apache2/cgi-bin
# ln -s ../../gate/lib/cgi-bin/gate-*.cgi .
= インストールした実行ファイルへのパスの設定
インストールした gate-toroku-system の実行ファイル群へパスを通した.
((<[ITPASS2010]パスの設定>)) の((* <一般ユーザ用コマンドのパス> *))に ((*/usr/local/gate/bin*)) を, ((* <システム管理用コマンドのパス> *))に ((*/usr/local/gate/sbin*)) を追加した.
= インストールしたマニュアルへのパスの設定
((<[ITPASS2010]パスの設定#man 関連のパスの設定>)) を参照し, /etc/manpath.config に以下の行を追加した.
MANDATORY_MANPATH /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/bin /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/sbin /usr/local/gate/man/ja
MANDB_MAP /usr/local/gate/man/ja /usr/local/gate/man/ja
= Web インターフェースのチェック
https://new-itpass.scitec.kobe-u.ac.jp/~gate/ にアクセスし,gate 登録システムのインデックスページが見えるか確認した. また, そのページからリンクされている個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) などに移動し, CGI が動作しているかチェックした.
= ユーザの作成
== /home/gate/userdb 以下のコピー
この作業では ika から tako へ root ログインする必要があるため root ログイン用の公開鍵の設置と root ログインの許可を事前に行う.
=== root ログイン用の公開鍵の設置
* ika に残った, インストール前の tako の情報を削除
ika の /root/.ssh 以下にある known_hosts のなかの tako に該当する行を削除する. (何番目が tako に該当するかは ika で ssh または rsync のコマンドを実行しようとしたときのエラーからわかる. )
* tako で鍵を作成
tako-itpass$ sudo -s
tako-itpass# cd /root
tako-itpass# ssh-keygen -t dsa
(鍵はデフォルトの /root/.ssh/id_dsa とする)
(パスフレーズは空にする)
tako で作成した公開鍵 tako:/root/.ssh/id_dsa.pub を ika:/root/.ssh/authorized_keys にコピーする. 既に authorized_keys が作成されている場合には, id_dsa.pub の内容を authorized_keys の最後尾に追記する.
=== root ログインの許可
* 次にika 内の root ログインの許可を設定する.
作業内容については((<[ITPASS2010]sshのインストールと設定#パスワード認証の拒否と root ログインの拒否設定>))を参照.
PermitRootLogin yes
=== ika のユーザデータベースを tako にコピーする.
* ika の /home/gate/userdb を tako 内の /home/gate/userdb にコピーした.
* まず, -n オプションを付けて rsync の動作チェックを行った.
いきなり rsync コマンドを実行すると予期せぬ間違い(転送元と転送先の設定を間違って, 転送先のファイルを全て消してしまう等)が起こりうるため, まずは rsync コマンドに -n オプションをつけて実行する. -n オプションをつけて実行すると, 実際のファイルの転送は行わずに, 転送されるはずのファイルのリストが出力される.
new-itpass# rsync -n -av --delete ika-itpass:/home/gate/userdb/ /home/gate/userdb/
* 実際にコピーを行う.
new-itpass# rsync -av --delete ika-itpass:/home/gate/userdb/ /home/gate/userdb/
* ika内のroot ログインを不許可に設定し直した.
PermitRootLogin no
== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース内に居た場合, 初めてユーザを作成したと認識してメールを送信するようになっている.
移行作業の際に大量のメールが送信されないよう, 先に old の /etc/shadow の一部を new の /etc/shadow にコピーする.
* old の /etc/shadow のうち, UID 1000 〜 29999 までの gate-toroku-system で管理されるユーザーについて, そのアカウント名の行をコピーして new の /etc/shadow のファイルに((*追加した*)). 各ユーザに対する uid は /etc/passwd に書かれているので参照した
# lv /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
^ ここが uid
== 最初の保証人ユーザ作成
個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) にアクセスし, ユーザ登録申請を行った.
保証人は先につくったユーザ "gate" とした.
(今回はアカウント名:ryukihy にした)
/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログイン名がついたファイル) が生成されているか確認した.
承認を行うために保証人 "gate" の登録システム用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行した.
# su gate
$ cd
$ htpasswd -c ~gate/.gate gate
ここで投入したパスワードを用いてユーザ "gate" として保証人のユーザ登録承認 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-accept.cgi) を用いる )を行う. その後, /home/gate/userdb/stable に承認されたユーザのデータベースファイルが移動していることを確認する.
(パスワードは中坊が管理)
= アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させるために, ルートで /usr/local/gate/lib/gate-daily を起動する.
* gate-daily は /etc/gate/gate.conf を参照するので, 起動前に gate.conf 内の 'ika-itpass' を 'tako-itpass' と書き換え. その後以下を実行した.
# perl /usr/local/gate/lib/gate-daily
/etc 内に存在する passwd, group, shadow, sudoers ファイルが更新され, それぞれ .bk を付加した名前のバックアップファイルが生成された. ファイルに登録したユーザの情報が新たに書き込まれていることを確認した.
また /home に /home/gate/userdb 以下に存在するユーザのディレクトリができていることを確認した.
= デーモンモードでの運用
ユーザ, ホストのデータベースをシステムに反映させるため, デーモンモードでの運用の設定を行った.
* gate-sys.conf の設定
/etc/gate/gate-sys.conf 中の $USE_DAEMON 変数が 1 であることを確かめた.
$USE_DAEMON = 1;
* gate-toroku-system 用のポートの作成
/etc/inetd.conf に以下の一行を付け足した.
gate stream tcp nowait root /usr/sbin/tcpd /usr/local/gate/lib/gate-daily -N
* ポート番号の設定
/etc/services に以下の行を付け足した.
gate 8888/tcp # gate-toroku-system
* TCP wrapper によるセキュリティ強化
gate ポートは, 登録サーバからのアクセスさえ受け付けられればその役目を果たす.
そのため, TCP wrapper を使用してアクセスを登録サーバからのものに限定する.
特に ITPASS サーバは 1 台での運用なので, 自身からのアクセスのみ許可する.
* /etc/hosts.deny の編集
まず, 全てのホストからの gate ポートへのアクセスを拒否するよう /etc/hosts.deny に以下の一行を追加した.
gate-daily: ALL
* /etc/hosts.allow の編集
登録サーバ自身 (new) からのアクセスは許可するよう, /etc/hosts.allow に以下の一行を追加した.
gate-daily: 127.0.0.1
* 登録サーバ以外のホストからのアクセスが拒否されるか確認
以下では google.com で試した場合.
root@new-itpass:/home/gate# tcpdmatch gate-daily google.com
client: hostname nrt04s01-in-f99.1e100.net
client: address 66.249.89.99
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
client: hostname nrt04s01-in-f104.1e100.net
client: address 66.249.89.104
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
denied と表示されたので拒否されている.
次に, 登録サーバ自身からのアクセスは許可されているか確認した.
root@new-itpass:/home/gate# tcpdmatch gate-daily localhost
client: hostname localhost
client: address 127.0.0.1
server: process gate-daily
matched: /etc/hosts.allow line 14
access: granted
granted と表示されたので許可されている.
* inetd を再起動
# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.
* 確認
CGI から適当なユーザの申請および認証を行う. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていることを確認した.
= gate-toroku-system ソースの移動
ソースの名前を変更し, バックアップとして残した.
* /home/gate/gate-toroku-system は必要ないが, バックアップとして以下のように名前を変更して残す
cp -r gate-toroku-system gate-toroku-system_2011-10-24
^^^^^^^^^^ インストールした日付
= doc ディレクトリのシンボリックリンクを作成
/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを/home/gate/public_html/ に作成した.
#cd /home/gate/public_html/
#ln -s /usr/local/gate/doc
# ls -l
root@new-itpass:/home/gate/public_html# ls -l
合計 64
lrwxrwxrwx 1 root root 19 2010-10-15 19:40 doc -> /usr/local/gate/doc
= ezmlm を使う場合の設定
この作業は, ezmlm のインストール後に行う.
== gate-db-to-ezmlm の設定
sudo になって /usr/local/gate/bin/gate-db-to-ezmlm の「0. 実行ファイル, ドメインの指定」の項目を以下のように変更する.
変更前
$domainname='gfd-dennou.org';
$ezmlmlist='/usr/bin/ezmlm-list';
$ezmlmsub='/usr/bin/ezmlm-sub';
$ezmlmunsub='/usr/bin/ezmlm-unsub';
変更後
$domainname='itpass.scitec.kobe-u.ac.jp';
$ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list';
$ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub';
$ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub';
[((<ITPASSサーバ構築ドキュメント>)) へ戻る]