[Memo2010][ITPASS] tako 構築作業ログ 6 (gate)
2010/10/15 に gate-toroku-system のインストールと設定を赤松, 高橋で行った. (ロガー: 高橋)
- 作業用アカウントの作成
- gate-toroku-system のソースを取得
- 必要なソフトウェアのインストール
- gate ユーザへのメールの転送
- gate-toroku-system ソースの展開
- gate-toroku-system の設定ファイルを編集
- gate-toroku-system CGI を動作させるための apache2 設定
- make とインストール
- インストールした実行ファイルへのパスの設定
- インストールしたマニュアルへのパスの設定
- Web インターフェースのチェック
- ユーザの作成
- アカウント生成
- デーモンモードでの運用
- gate-toroku-system ソースの移動
- doc ディレクトリのシンボリックリンクを作成
- ezmlm を使う場合の設定
- DNS の残りの作業
- 参考文献
[ITPASSサーバ構築ドキュメントへ戻る]
作業用アカウントの作成
gate-toroku-system 管理アカウント gate を作成する. ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する(今回は 500 とした).
# adduser --uid 500 --disabled-password gate
登録の際, フルネームには「Administrator of gate-toroku-system」を用いた.
gate グループに gate 管理者とスタッフ数名を加える.
gate 管理者については, gate-toroku-systemの開発とメンテナンスの開発メンバーのユーザおよび, gate のインストールを行ったメンバーとする.
# vigr gate:x:500:murashin,noda,akimitan,takahasu # vigr -s gate:!:::murashin,noda,akimitan,takahasu
gate-toroku-system のソースを取得
gate-toroku-system のソース (gate-toroku-system.tar.gz) を ika の /home/gate/ から入手し, tako の /home/gate に置いた.
必要なソフトウェアのインストール
まず, gate に必要なパッケージをインストールする. /etc/apt/sources.list の以下の 2 行の "stable" の部分を必要に応じて変更する(今回は lenny のままなので変更なし).
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 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 以下にインストールされた.
gate ユーザへのメールの転送
/home/gate/.qmail に gate 管理者およびスタッフ数名のメールアドレスを書き込む. メンバーは上記の 作業用アカウントの作成 でグループに加えたものと同じにする.
# vi /home/gate/.qmail &murashin &noda &akimitan &takahasu
gate-toroku-system ソースの展開
gate-toroku-system のソースを取得 で取得したソースを展開する.
$ cd /home/gate $ tar xvfz gate-toroku-system.tar.gz $ cd gate-toroku-system
gate-toroku-system の設定ファイルを編集
ika の /etc/gate/ の下から gate.conf をコピーし /etc/gate/ の下におく. gate.conf の中身を以下のように編集した.
$DBSERVER = "tako-itpass.scitec.kobe-u.ac.jp";
gate-toroku-system CGI を動作させるための apache2 設定
以下では CGI の動作に関して, apache2 の設定について以下を確認する.
apache を動作させるユーザ, グループ
apache がどのユーザ, グループの権限で動作するかは /usr/local/apache2/conf/httpd.conf 内の「 User 」 および「 Group 」で指定される.
User www-data Group www-data
この「 User 」,「 Group 」に指定されているユーザ, グループが gate.conf における $CGIUSER に指定されているユーザと一致していることを確認した.
$CGIUSER = "www-data";
/usr/local/apache2/cgi-bin/ の CGI が動作するために /usr/local/apache2/conf/httpd.conf で下記の記述があることを確認した.
<Directory "/usr/local/apache2/cgi-bin/"> AllowOverride AuthConfig Limit Options ExecCGI FollowSymLinks IncludesNoExec </Directory>
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 の実行ファイル群へパスを通す.
[ITPASS2009]パスの設定 の <一般ユーザ用コマンドのパス> に /usr/local/gate/bin を, <システム管理用コマンドのパス> に /usr/local/gate/sbin を追加した.
インストールしたマニュアルへのパスの設定
[ITPASS2009]パスの設定#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://tako-itpass.scitec.kobe-u.ac.jp/~gate/ にアクセスし,gate 登録システムのインデックスページが見えるか確認した. また, そのページからリンクされている個人申請 (https://tako-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) などに移動し, CGI が動作しているかチェックした.
ユーザの作成
/home/gate/userdb 以下のコピー
この作業では ika から tako へ root ログインする必要がある.
公開鍵の設置
この時点でまだ ika から tako へログインしたことがなかったため, 以下の作業を行った.
まず ika に残った, インストール前の tako の情報を削除する. ika の /root/.ssh 以下にある known_hosts のなかの tako に該当する行を削除した. (何番目が tako に該当するかは ika で rsync のコマンドを実行しようとしたときのエラーからわかった. )
次に tako で鍵を作成した. その際[EPA2008b]サーバと予備サーバでのバックアップの設定を参照した.
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 ログインの許可 次に root ログインの許可を設定する. 作業内容については[ITPASS2009]sshのインストールと設定#パスワード認証の拒否と root ログインの拒否設定を参照.
PermitRootLogin yes
ika のユーザデータベースを tako にコピーする.
- ika の /home/gate/userdb を tako 内の /home/gate/userdb にコピーする.
- まず, -n オプションを付けて rsync の動作チェックを行う.
ika-itpass# rsync -n -av --delete /home/gate/userdb/ tako-itpass:/home/gate/userdb/
- 実際にコピーを行う.
ika-itpass# rsync -av --delete /home/gate/userdb/ tako-itpass:/home/gate/userdb/
root ログインを不許可に設定し直す.
PermitRootLogin no
/etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース内に居た場合, 初めてユーザを作成したと認識してメールを送信するようになっている.
移行作業の際に大量のメールが送信されないよう, 先に ika の /etc/shadow の一部を tako の /etc/shadow にコピーする.
ika の /etc/shadow のうち, UID 1000 〜 29999 までの gate-toroku-system で管理されるユーザーについて, そのアカウント名の行をコピーして tako の /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
- 今回あやまって tako の /etc/shadow を ika のもので上書きしてしまった.
- しかしバックアップファイル shadow- に書き換える前のものが残っていたので, そのうちのシステムユーザ (uid 1 〜 500) を追加し, 復元した.
最初の保証人ユーザ作成
個人申請 (https://tako-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) にアクセスし, ユーザ登録申請を行なう. 保証人は先につくったユーザ "gate" とした.
/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログイン名がついたファイル) が生成されているか確認した.
承認を行うために保証人 "gate" の登録システム用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行する.
# su gate $ cd $ htpasswd -c ~gate/.gate gate
ここで投入したパスワードを用いてユーザ "gate" として保証人のユーザ登録承認 (https://tako-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@tako-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@tako-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 client: hostname localhost client: address ::1 server: process gate-daily matched: /etc/hosts.deny line 21 access: denied
IPv4 の方は granted となり, 許可を確認した. IPv6 の方は denied となっているが, 同様のコマンドを ika で実行しても同じであることから問題ないとした.
inetd を再起動
# /etc/init.d/openbsd-inetd restart Restarting internet superserver: inetd.
確認
CGI から適当なユーザの申請および認証を行った. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていることを確認した.
gate-toroku-system ソースの移動
ソースの名前を変更し, バックアップとして残す.
- /home/gate/gate-toroku-system は必要ないが, バックアップとして以下のように名前を変更して残す
mv gate-toroku-system gate-toroku-system_2010-10-15 ^^^^^^^^^^ インストールした日付
doc ディレクトリのシンボリックリンクを作成
/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを/home/gate/public_html/ に作成する.
#cd /home/gate/public_html/ #ln -s /usr/local/gate/doc # ls -l root@tako-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 のインストール後に行う.
DNS の残りの作業
/etc/shadow を ika からコピーしたので, /usr/local/bind/etc 以下のグループを itpadmin に変更した.
root@tako-itpass:/home/gate/public_html# cd /usr/local/bind/etc root@tako-itpass:/usr/local/bind/etc# chgrp -R itpadmin . root@tako-itpass:/usr/local/bind/etc# ls -l 合計 16 -rw-r--r-- 1 root itpadmin 665 2010-10-13 14:07 bind.keys drwxr-sr-x 2 root itpadmin 4096 2010-10-13 20:48 namedb -rw-r----- 1 root itpadmin 183 2010-10-13 18:02 rndc.conf -rw------- 1 bind itpadmin 92 2010-10-13 16:27 rndc.key
Keyword(s):
References:[[ITPASS2010]2010年度サーバ構築ログ]