[Memo2008][EPA]ika構築作業ログ2(塩原,島津)
- 以下は gate-toroku-system の構築作業ログである.
1017(金)
gate-toroku-system のソースを取得
gate-toroku-system のソースは EPA サーバ(tako)の以下のパスに置かれている. ここからソースを入手し, /home/gate 以下に置く.
/home/gate/gate-toroku-system.tar.gz
必要なソフトウェアのインストール
まず, 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
以上の 5 つのパッケージは以前行った[[EPA2008]導入されている debian パッケージの引き継ぎ]の際にインストース済み.
作業用アカウントの作成
今回は既に gate-toroku-system ソースの置き場として作成済みだが, 本来はこの段階で, gate-toroku-system 管理アカウント gate を作成する. ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する.
# adduser --uid 500 --disabled-password gate
この時, フルネームを「Administrator of gate-toroku-system」と入力.
gate グループに gate 開発メンバーを加える.
# vigr gate:x:500:morikawa,murashin,uwabami,noda,tnyorai # vigr -s gate:!::500:morikawa,murashin,uwabami,noda,tnyorai
gate ユーザへのメールの転送
/home/gate/.qmail に gate 管理者のメールアドレスを書き込む.
# vim /home/gate/.qmail &morikawa_at_gfd-dennou.org &murashin_at_gfd-dennou.org &uwabami_at_gfd-dennou.org &noda_at_gfd-dennou.org &tnyorai_at_gfd-dennou.org
gate-toroku-system ソースの展開
gate-toroku-system のソースを取得 で取得した ソースを展開する.
$ cd /home/gate $ tar xvfz gate-toroku-system.tar.gz $ cd gate-toroku-system
gate-toroku-system の設定ファイルを編集
- include/gate.conf
の $DBSERVER が以下のようになっていることを確認.
# データベースサーバ (CGI が動作するホスト) # # 個々のマシンが、「自身がデータベースサーバであるか」といったことにも # 使用するため、データベースサーバ内で "hostname -f" で得られる # 結果と同じになっている必要があります。 $DBSERVER = "ika.epa.scitec.kobe-u.ac.jp";
gate-toroku-system CGI を動作させるための apache2 設定
CGI の動作に関して, apache2 の設定について確認. apache2 の設定ファ イルは /usr/local/apache2/conf/httpd.conf である.
apache を動作させるユーザ, グループ
User www-data Group www-data
gate.conf における $CGIUSER に指定されているユーザ
$CGIUSER = "www-data";
以上 2 つが一致していることを確認.
- gate システム用 CGI 置き場
インストール先は /usr/local/gate/lib/cgi-bin とし,
そこに置かれたファイルのシンボリックリンクを /usr/local/apache2/cgi-bin/ に置く. $BASEDIR = '/usr/local/gate'; # Debian 化されたら /usr $CGIBINDIR = "$BASEDIR/lib/cgi-bin";
/usr/local/apache2/cgi-bin/ の CGI が動作するために
/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 以下にインストールされる.
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 の実行ファイル群へパスを通す.
[EPA2008]パスの設定 の <一般ユーザ用コマンドのパス> に /usr/local/gate/bin を, <システム管理用コマンドのパス> に /usr/local/gate/sbin を追加.
インストールしたマニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する. 詳しくは [EPA2008]パスの設定#man 関連のパスの設定 を参照のこと.
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 インターフェースのチェック
<URL:https://ika.epa.scitec.kobe-u.ac.jp/~gate/> にアクセスし, gate 登録システムのインデックスページが見えるかチェックする. また, そのページからリンクされている [個人申請] などに移動し, CGI が動作していることをチェック.
ユーザの作成
登録によってユーザを登録し, 動作をチェックする.
ユーザデータベースのコピー
今回は, これまで使用していたホスト (tako) から新たに構築している
ホスト (ika) へユーザデータベースをコピーする.
認証の設定
EPA サーバは公開鍵認証によるログインのみ 許可するため, tako で作成した公開鍵を ika に登録する.
/etc/ssh/sshd_config 内の
PermitRootLogin forced-commands-only
を
PermitRootLogin yes
に書き換え, その後
# /etc/init.d/ssh restart
として設定を反映させる.
/home/gate/userdb 以下のコピー
tako 内の /home/gate/userdb を ika 内の /home/gate/userdb に コピーする. コマンドでコピーが可能である.
tako# rsync -n -av --delete /home/gate/userdb/ ika:/home/gate/userdb/
で動作チェックの後,
tako# rsync -av --delete /home/gate/userdb/ ika:/home/gate/userdb/
を行う.
認証を元に戻す
認証の設定 にて行った設定を元に戻す.
具体的には以下のとおり. /etc/ssh/sshd_config 内の
PermitRootLogin forced-commands-only
を
PermitRootLogin no
に書き換え, その後
# /etc/init.d/ssh restart
として設定を反映させる.
/etc/shadow のコピー
移行作業の際に大量のメールが送信されないよう, 先に tako の /etc/shadow の一部を ika の /etc/shadow にコピーする.
gate-toroku-system で管理されるユーザは UID 1000 〜 29999 までであるため, tako の /etc/passwd 内でユーザ名と UID とを比較することで コピーすべきユーザを調べた後, tako 内の /etc/shadow を開き, gate-toroku-system で管理されるユーザのエントリのみ ika 内の /etc/shadow にコピーする.
(2) 最初の保証人ユーザ作成
[個人申請] を参照し, 'tnyorai1'の登録申請を行なう. 保証人は先につくったユーザ"gate"として登録.
/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログイン名がついたファイル) が生成されているのを確認.
登録申請の認証を行うために保証人"gate"の登録システム用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行.
# su gate $ cd $ htpasswd -c ~gate/.gate gate
ここで設定したパスワードを用いてユーザ "gate" として保証人の ( [ユーザ登録承認] を用いる ) 承認を行なう. /home/gate/userdb/stable に承認されたユーザのデータベースファ イルが移動しているのを確認.
gate-sys.conf の $USE_DAEMON が以下のように設定されている場合,
$USE_DAEMON = 1; # 1 がデーモンモード, 0 がクロン
承認時に以下のような警告メッセージが表示される. これは下記の デーモンモードでの運用 で解消されるはずなのでほっておく.
/usr/local/gate/bin/gate-user-accept: To localhost, connect failed: Connection refused at /usr/local/gate/lib/gate-common.pl line ....
アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させるために ルートで /usr/local/gate/lib/gate-daily を起動する.
# perl /usr/local/gate/lib/gate-daily
/etc 内に存在する passwd, group, shadow, sudoers ファイルが更新され, それぞれ .bk を付加した名前の バックアップ ファイルが生成される. これらの変更点を確認し, 登録した ユーザの情報が新たに書き込まれていることを確認.
また /home には /home/gate/userdb 以下に存在するユーザのディレクトリが できているのを確認.
デーモンモードでの運用
ユーザ, ホストのデータベースをシステムに反映させる方法として デーモン モードとクロンモードがある. ika ではデーモンモードで運用する.
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 wrappers によるセキュリティ強化
TCP wrappers を使用して, アクセスを登録サーバからのものに限定する. * /etc/hosts.deny の編集 /etc/hosts.deny に以下の一行を追加し, 全てのホストからの gate ポートへのアクセスを拒否する. gate-daily: ALL * /etc/hosts.allow の編集 /etc/hosts.allow に以下の一行を追加し, 登録サーバ自身からの アクセスのみは受け付けるようにする. gate-daily: 127.0.0.1 /etc/hosts.deny と /etc/hosts.allow の設定に間違いがないことを確認す る. # tcpdmatch gate-daily joho01 結果, access: denied と表示されればアクセスが正常に拒否されている. 次に, 登録サーバ自身からのアクセスは受け付けられているか確認する. # tcpdmatch gate-daily localhost 結果, access: granted と表示される.
inetd を再起動
# /etc/init.d/openbsd-inetd restart
確認
CGI からユーザの申請および認証を行う. 認証して数分後に /etc 以下のシステムファイルが更新される.
gate-toroku-system の動作確認
ika にて以下のコマンドを実行する
# perl /usr/local/gate/lib/gate-daily
以下のファイルが生成されているか確認
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/sudoers
gate-toroku-system ソースの移動
インストールが完了したら, ソースを移動すること.
$ cd /home/gate $ mv gate-toroku-system gate-toroku-system_2008-10-17 ^^^^^^^^^^ インストールした日付
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'; # # 0. エラー処理
変更後
############################################### # # 0. 実行ファイル, ドメインの指定 # #$domainname='gfd-dennou.org'; $domainname='epa.scitec.kobe-u.ac.jp'; #$ezmlmlist='/usr/bin/ezmlm-list'; #$ezmlmsub='/usr/bin/ezmlm-sub'; #$ezmlmunsub='/usr/bin/ezmlm-unsub'; $ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list'; $ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub'; $ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub'; # # 0. エラー処理
Keyword(s):
References:[[EPA2008]2008年度後期サーバ構築ログ]