IT pass HikiWiki - [Memo2009][ITPASS] tako 構築作業ログ(gate)(村上(健), 古家, 井谷) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

[((<ITPASSサーバ構築ドキュメント>))へ戻る]

= 概要

以下は tako に gate-toroku-system をインストールするための作業ログである.

= 作業用アカウントの作成

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

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

登録の際, フルネームには「Administrator of gate-toroku-system」を用いた.

* gate グループに gate 管理者とスタッフ数名を加える.

gate 管理者については,  ((<[EPA2008b]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 のソースを ika から入手し, /home/gate に置く.

  hogehoge@ika-itpass$ sudo -s
  hogehoge@ika-itpass# cp /home/gate/gate-toroku-system.tar.gz ~/

  hogehoge@tako-itpass# scp



= 必要なソフトウェアのインストール

* まず, 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

このとき, htroff についてエラーが発生した. 詳細については((<エラーの内容と解決策>))に残した.

実行ファイルや man 用ファイル, HTML ファイルは
/usr/local/gate 以下にインストールされる.


= gate ユーザへのメールの転送

/home/gate/.qmail に gate 管理者およびスタッフ数名のメールアドレスを書き込んだ. メンバーは上記の ((<URL:#作業用アカウントの作成>)) でグループに加えたものと同じにした.

  # vi /home/gate/.qmail

  &morikawa
  &murashin
  &uwabami
  &noda
  &seiya
  &yot
  &shosuke
  &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 = "tako-itpass.scitec.kobe-u.ac.jp";


= gate-toroku-system CGI を動作させるための apache2 設定

以下では CGI の動作に関して, apache2 の設定について確認した点を挙げる.

* apache を動作させるユーザ, グループ

  httpd.conf においては apache がどのユーザ, グループの権限で動作するかは「 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 の実行ファイル群へパスを通す.

((<[EPA2008b]パスの設定>)) の((* <一般ユーザ用コマンドのパス> *))に ((*/usr/local/gate/bin*)) を, ((* <システム管理用コマンドのパス> *))に ((*/usr/local/gate/sbin*)) を追加した.

= インストールしたマニュアルへのパスの設定

((<[EPA2008b]パスの設定#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 インターフェースのチェック

((<URL:https://tako-itpass.scitec.kobe-u.ac.jp/~gate/>)) にアクセスしたところ, gate 登録システムのインデックスページが見えた. また, そのページからリンクされている[((<個人申請|URL:https://tako-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi>))]などに移動し, CGI が動作していることをチェックした.

= ユーザの作成

== /home/gate/userdb 以下のコピー

この作業では ika から tako へ,  tako の root としてのログインが必要となる.
そのため, 準備として root ログインの許可を設定する.
作業内容については下記のリンクを参照した.

((<[Memo2009][ITPASS] tako 構築作業ログ(OS 1)(山元, 黒田, 辻野)#パスワード認証の拒否と root ログインの拒否設定>))を参照した.


* oldhost のユーザデータベースを newhost にコピーする.

   * 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 ログインを不許可に設定し直す.

参照:((<[Memo2009][ITPASS] tako 構築作業ログ(OS 1)(山元, 黒田, 辻野)#パスワード認証の拒否と root ログインの拒否設定>))


== /etc/shadow のコピー

gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース内に居た場合, 初めてユーザを作成したと認識してメールを送信するようになっている.

移行作業の際に大量のメールが送信されないよう, 先に ika の /etc/shadow の一部を tako の /etc/shadow にコピーする.

* ika 内の /etc/shadow を開き, gate-toroku-system で管理されるユーザのエントリのみ tako 内の /etc/shadow にコピーする.
gate-toroku-system で管理されるユーザは UID 1000 〜 29999 までであるため, ika の /etc/passwd 内でユーザ名と UID とを比較してコピーすべきユーザを判断する.


== 最初の保証人ユーザ作成

[((<個人申請|URL:https://tako-itpass.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi>))]を参照し, 管理グループの代表者 (chikuwa:古家) のユーザ登録申請を行なう.
保証人は先につくったユーザ "gate" とした.

/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログイン名がついたファイル) が生成されているか確認した.

申請が受け付けられた後, 承認を経てはじめてアカウントが生成される. そこで今回行った申請にも承認を行う.
そのために保証人"gate"の登録システム用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行.

  # su gate
  $ cd
  $ htpasswd -c ~gate/.gate gate

ここで投入したパスワードを用いてユーザ "gate" として保証人の( [((<ユーザ登録承認|URL: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 を起動する.

  # perl /usr/local/gate/lib/gate-daily

/etc 内に存在する passwd, group, shadow, sudoers ファイルが更新され, それぞれ .bk を付加した名前のバックアップファイルが生成される. これらの変更点を確認し, 登録したユーザの情報が新たに書き込まれていることを確認した.

また /home に /home/gate/userdb 以下に存在するユーザのディレクトリができていることを確認した.

このとき以下のエラーが発生した.

  ssh: Could not resolve hostname ika.epa.scitec.kobe-u.ac.jp: Name or service not known
  rsync: connection unexpectedly closed (0 bytes received so far) [sender]
  rsync error: unexplained error (code 255) at io.c(635) [sender=3.0.3]
  /usr/local/gate/sbin/gate-db-update: rsync database to ika.epa.scitec.kobe-u.ac.jp failed

/etc/gate/gate.conf 内の 'ika.epa' を 'tako-itpass' と書き換えることで解消した。


= デーモンモードでの運用

ユーザ, ホストのデータベースをシステムに反映させる方法として デーモンモードとクロンモードがある.
以下ではデーモンモードで運用する方法を考える.

* 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 の編集
  
    /etc/hosts.allow に以下の一行を追加し, 登録サーバ自身 (tako) からのアクセスのみは受け付けるようにする.

      gate-daily: 127.0.0.1

  /etc/hosts.deny と /etc/hosts.allow の設定に間違いがないことを確認した.

    # tcpdmatch gate-daily google.com    # google.com で試した

結果, access: denied と表示された.

次に, 登録サーバ自身からのアクセスは受け付けられているか確認した.

    # tcpdmatch gate-daily localhost

結果, access: granted と表示された.

* inetd を再起動

    # /etc/init.d/openbsd-inetd restart
    Restarting internet superserver: inetd.

* 確認

  CGI からユーザ (chikuwaa, chikuwab)の申請および認証を行った. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていたことを確認した.


= gate-toroku-system ソースの移動

ソースの名前を変更し, バックアップとして残した.

  $ cd /home/gate
  $ mv gate-toroku-system gate-toroku-system_2009-10-09


= html ファイルの修正

今年度よりサーバのホスト名が ITPASS へ変更されたことに伴い, /home/gate/public.html 内の html ファイルを修正した.

* サーバホスト名
    epa, EPA
    --> itpass, ITPASS
* サーバ運営者
    神戸大学地球および惑星大気科学研究室 EPA サーバ管理グループ
    --> ITPASS グループ

= 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サーバ構築ドキュメント>))へ戻る]