IT pass HikiWiki - [ITPASS2009]gate-toroku-systemのインストールと設定 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
[((<ITPASSサーバ構築ドキュメント>))へ戻る]
= 作業用アカウントの作成
* gate-toroku-system 管理アカウント gate を作成する.
ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する(以下では 500 とする).
# adduser --uid 500 --disabled-password gate
登録の際, フルネームには「Administrator of gate-toroku-system」を用いる.
* gate グループに gate 管理者とスタッフ数名を加える.
gate 管理者については, ((<[ITPASS2009]gate-toroku-systemの開発とメンテナンス#開発メンバー>))のユーザおよび, gate のインストールを行ったメンバーとする.
# vigr
gate:x:500:murashin,uwabami,noda,gaia,furuya,yukai
# vigr -s
gate:!::500:murashin,uwabami,noda,gaia,furuya,yukai
= gate-toroku-system のソースを取得
gate-toroku-system のソース (gate-toroku-system.tar.gz)
を old の /home/gate/ から入手し, new の /home/gate に置く.
= 必要なソフトウェアのインストール
* まず, gate に必要なパッケージをインストールする. 以下の 2 行を /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 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 管理者およびスタッフ数名のメールアドレスを書き込む. メンバーは上記の ((<URL:#作業用アカウントの作成>)) でグループに加えたものと同じにする.
# vi /home/gate/.qmail
&murashin
&uwabami
&noda
&gaia
&furuya
&yukai
= gate-toroku-system ソースの展開
((<URL:#gate-toroku-system のソースを取得>)) で取得したソースを展開する.
$ cd /home/gate
$ tar xvfz gate-toroku-system.tar.gz
$ cd gate-toroku-system
= gate-toroku-system の設定ファイルを編集
gate.conf の中身を以下のように編集する.
# データベースサーバ (CGI が動作するホスト)
#
# 個々のマシンが、「自身がデータベースサーバであるか」といったことにも
# 使用するため、データベースサーバ内で "hostname -f" で得られる
# 結果と同じになっている必要があります。
$DBSERVER = "new-itpass.scitec.kobe-u.ac.jp";
= gate-toroku-system CGI を動作させるための apache2 設定
以下では CGI の動作に関して, apache2 の設定について確認すべき点を挙げる.
* apache を動作させるユーザ, グループ
apache がどのユーザ, グループの権限で動作するかは httpd.conf 内の「 User 」 および「 Group 」で指定される.
User www-data
Group www-data
この「 User 」,「 Group 」に指定されているユーザ, グループが gate.conf における $CGIUSER に指定されているユーザと一致していることを確認する.
$CGIUSER = "www-data";
* /usr/local/apache2/cgi-bin/ の CGI が動作するために httpd.conf で下記の記述があることを確認する.
<Directory "/usr/local/apache2/cgi-bin/">
AllowOverride AuthConfig Limit
Options ExecCGI FollowSymLinks IncludesNoExec
</Directory>
= 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://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 以下のコピー
この作業では old から new へ root ログインする必要がある.
そのため, 準備として root ログインの許可を設定する.
作業内容については下記のリンクを参照のこと.
((<[ITPASS2009]sshのインストールと設定#パスワード認証の拒否と root ログインの拒否設定>))を参照.
* oldhost のユーザデータベースを newhost にコピーする.
* old の /home/gate/userdb を new 内の /home/gate/userdb にコピーする.
* まず, -n オプションを付けて rsync の動作チェックを行う.
いきなり rsync コマンドを実行すると予期せぬ間違い
(転送元と転送先の設定を間違って, 転送先のファイルを全て消してしまう等)
が起こりうるため, まずは rsync コマンドに -n オプションをつけて実行する.
-n オプションをつけて実行すると, 実際のファイルの転送は行わずに,
転送されるはずのファイルのリストが出力される.
old-itpass# rsync -n -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
* 実際にコピーを行う.
old-itpass# rsync -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
* root ログインを不許可に設定し直す.
== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース内に居た場合, 初めてユーザを作成したと認識してメールを送信するようになっている.
移行作業の際に大量のメールが送信されないよう, 先に old の /etc/shadow の一部を new の /etc/shadow にコピーする.
* old 内の /etc/shadow を開き, gate-toroku-system で管理されるユーザのエントリのみ new 内の /etc/shadow にコピーする.
gate-toroku-system で管理されるユーザは UID 1000 〜 29999 までであるため, old の /etc/passwd 内でユーザ名と UID とを比較してコピーすべきユーザを判断する.
== 最初の保証人ユーザ作成
個人申請 (https://new-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 内の 'old-itpass' を 'new-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
登録サーバ意外のホストからのアクセスが拒否されるか確認する.
# tcpdmatch gate-daily google.com # google.com で試した場合
access: denied と表示されれば O.K.
次に, 登録サーバ自身からのアクセスは許可されているか確認する.
# tcpdmatch gate-daily localhost
access: granted と表示されれば O.K.
* inetd を再起動
# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.
* 確認
CGI から適当なユーザの申請および認証を行う. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていることを確かめる.
= gate-toroku-system ソースの移動
ソースの名前を変更し, バックアップとして残す.
= doc ディレクトリのシンボリックリンクを作成
/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを /home/gate/public.html/ に作成する.
#cd /home/gate/public.html/
#ln -s /usr/local/gate/doc
# ls -l
合計 104
lrwxrwxrwx 1 root root 19 2009-10-13 19:28 doc -> /usr/local/gate/doc
以下の作業は, ezmlm のインストール後に行う.
= ezmlm を使う場合の設定
== gate-db-to-ezmlm の設定
/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サーバ構築ドキュメント>))へ戻る]
[((<ITPASSサーバ構築ドキュメント>))へ戻る]
= 作業用アカウントの作成
* gate-toroku-system 管理アカウント gate を作成する.
ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する(以下では 500 とする).
# adduser --uid 500 --disabled-password gate
登録の際, フルネームには「Administrator of gate-toroku-system」を用いる.
* gate グループに gate 管理者とスタッフ数名を加える.
gate 管理者については, ((<[ITPASS2009]gate-toroku-systemの開発とメンテナンス#開発メンバー>))のユーザおよび, gate のインストールを行ったメンバーとする.
# vigr
gate:x:500:murashin,uwabami,noda,gaia,furuya,yukai
# vigr -s
gate:!::500:murashin,uwabami,noda,gaia,furuya,yukai
= gate-toroku-system のソースを取得
gate-toroku-system のソース (gate-toroku-system.tar.gz)
を old の /home/gate/ から入手し, new の /home/gate に置く.
= 必要なソフトウェアのインストール
* まず, gate に必要なパッケージをインストールする. 以下の 2 行を /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 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 管理者およびスタッフ数名のメールアドレスを書き込む. メンバーは上記の ((<URL:#作業用アカウントの作成>)) でグループに加えたものと同じにする.
# vi /home/gate/.qmail
&murashin
&uwabami
&noda
&gaia
&furuya
&yukai
= gate-toroku-system ソースの展開
((<URL:#gate-toroku-system のソースを取得>)) で取得したソースを展開する.
$ cd /home/gate
$ tar xvfz gate-toroku-system.tar.gz
$ cd gate-toroku-system
= gate-toroku-system の設定ファイルを編集
gate.conf の中身を以下のように編集する.
# データベースサーバ (CGI が動作するホスト)
#
# 個々のマシンが、「自身がデータベースサーバであるか」といったことにも
# 使用するため、データベースサーバ内で "hostname -f" で得られる
# 結果と同じになっている必要があります。
$DBSERVER = "new-itpass.scitec.kobe-u.ac.jp";
= gate-toroku-system CGI を動作させるための apache2 設定
以下では CGI の動作に関して, apache2 の設定について確認すべき点を挙げる.
* apache を動作させるユーザ, グループ
apache がどのユーザ, グループの権限で動作するかは httpd.conf 内の「 User 」 および「 Group 」で指定される.
User www-data
Group www-data
この「 User 」,「 Group 」に指定されているユーザ, グループが gate.conf における $CGIUSER に指定されているユーザと一致していることを確認する.
$CGIUSER = "www-data";
* /usr/local/apache2/cgi-bin/ の CGI が動作するために httpd.conf で下記の記述があることを確認する.
<Directory "/usr/local/apache2/cgi-bin/">
AllowOverride AuthConfig Limit
Options ExecCGI FollowSymLinks IncludesNoExec
</Directory>
= 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://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 以下のコピー
この作業では old から new へ root ログインする必要がある.
そのため, 準備として root ログインの許可を設定する.
作業内容については下記のリンクを参照のこと.
((<[ITPASS2009]sshのインストールと設定#パスワード認証の拒否と root ログインの拒否設定>))を参照.
* oldhost のユーザデータベースを newhost にコピーする.
* old の /home/gate/userdb を new 内の /home/gate/userdb にコピーする.
* まず, -n オプションを付けて rsync の動作チェックを行う.
いきなり rsync コマンドを実行すると予期せぬ間違い
(転送元と転送先の設定を間違って, 転送先のファイルを全て消してしまう等)
が起こりうるため, まずは rsync コマンドに -n オプションをつけて実行する.
-n オプションをつけて実行すると, 実際のファイルの転送は行わずに,
転送されるはずのファイルのリストが出力される.
old-itpass# rsync -n -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
* 実際にコピーを行う.
old-itpass# rsync -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
* root ログインを不許可に設定し直す.
== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース内に居た場合, 初めてユーザを作成したと認識してメールを送信するようになっている.
移行作業の際に大量のメールが送信されないよう, 先に old の /etc/shadow の一部を new の /etc/shadow にコピーする.
* old 内の /etc/shadow を開き, gate-toroku-system で管理されるユーザのエントリのみ new 内の /etc/shadow にコピーする.
gate-toroku-system で管理されるユーザは UID 1000 〜 29999 までであるため, old の /etc/passwd 内でユーザ名と UID とを比較してコピーすべきユーザを判断する.
== 最初の保証人ユーザ作成
個人申請 (https://new-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 内の 'old-itpass' を 'new-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
登録サーバ意外のホストからのアクセスが拒否されるか確認する.
# tcpdmatch gate-daily google.com # google.com で試した場合
access: denied と表示されれば O.K.
次に, 登録サーバ自身からのアクセスは許可されているか確認する.
# tcpdmatch gate-daily localhost
access: granted と表示されれば O.K.
* inetd を再起動
# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.
* 確認
CGI から適当なユーザの申請および認証を行う. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていることを確かめる.
= gate-toroku-system ソースの移動
ソースの名前を変更し, バックアップとして残す.
= doc ディレクトリのシンボリックリンクを作成
/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを /home/gate/public.html/ に作成する.
#cd /home/gate/public.html/
#ln -s /usr/local/gate/doc
# ls -l
合計 104
lrwxrwxrwx 1 root root 19 2009-10-13 19:28 doc -> /usr/local/gate/doc
以下の作業は, ezmlm のインストール後に行う.
= ezmlm を使う場合の設定
== gate-db-to-ezmlm の設定
/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サーバ構築ドキュメント>))へ戻る]