[Memo2017][ITPASS]gate-toroku-system のインストールと設定

作業用アカウントの作成

  • gate-toroku-system 管理用アカウント: gate を作成した. ユーザ ID は 500 にした.

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

    登録の際, フルネームは「Administrator of gate-toroku-system」とした.

  • gate グループに gate 管理者を加えた.

    # vigr
    
    gate:x:500:murashin,noda,daisuke,nobesaka,mmiyuki,ikedaryo,rin
    
    # vigr -s
    
    gate:!::murashin,noda,daisuke,nobesaka,mmiyuki,ikedaryo,rin

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

gate に必要なパッケージをインストールした.

パッケージの確認

dpkg コマンドを用いて, 必要なパッケージがインストールされていることを確認した.

# dpkg -l | grep rsync
# dpkg -l | grep wget
# dpkg -l | grep cvs
# dpkg -l | grep libjcode-pm-perl
# dpkg -l | grep libcrypt-passwdmd5-perl
# dpkg -l | grep libdatetime-perl
# dpkg -l | grep libdatetime-format-strptime-perl

以下の4つのファイルを取得してインストールした.

htroff_2.0-1.dsc
htroff_2.0-1.tar.gz
htroff_2.0-1_all.deb
htroff_2.0-1_i386.changes

  # wget http://www.gfd-dennou.org/arch/cc-env/htroff/htroff_2.0-1.dsc
  # wget http://www.gfd-dennou.org/arch/cc-env/htroff/htroff_2.0-1.tar.gz
  # wget http://www.gfd-dennou.org/arch/cc-env/htroff/htroff_2.0-1_all.deb
  # wget http://www.gfd-dennou.org/arch/cc-env/htroff/htroff_2.0-1_i386.changes
  # dpkg -i htroff_2.0-1_all.deb
  # dpkg -l | grep htroff

gate ユーザ宛のメールを転送する

  • /home/gate/.qmail に管理者のメールアドレスを書き込んだ.

    # vi /home/gate/.qmail
    
    &itpadmin

gate-toroku-system のソースの取得と展開

ika-itpass の /home/gate から gate-toroku-system のソース(gate-toroku-system.tar.gz) を tako-itpass の /home/gate にコピーし, 展開した. 展開は以下のコマンドで実行した.

# tar xvfz gate-toroku-system.tar.gz

設定ファイルの編集

gate.conf

ika-itpass の /etc/gate/ の下から gate.conf をコピーし tako-itpass の /etc/gate/ の下に置いた.

# cd /etc
# mkdir gate

gate.conf 内の$DBSERVER を以下のように編集した.

$DBSERVER = “tako-itpass.scitec.kobe-u.ac.jp";

また, %DB_SHARE_HOSTS が以下のようになっていることを確認した.

%DB_SHARE_HOSTS = (
                'ika-itpass.scitec.kobe-u.ac.jp','wheel:itpadmin'
#               'dennou-k.kugi.kyoto-u.ac.jp','wheel:dcstaff',
#               'dennou-h.ees.hokudai.ac.jp','wheel:dcstaff',
#               'dennou-q.geo.kyushu-u.ac.jp','wheel:dcstaff'
          );

gate-user.conf

同様にして gate-user.conf をコピーし /etc/gate に置き, $WHEELUSER が 'itpadmin' になっているか確認した.

$WHEELUSER = 'itpadmin';

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 で下記の記述があることを確認した.

    </IfModule>
    
    <IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    Scriptsock cgisock  
    </IfModule>
    
    #
    # "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased
    # CGI directory exists, if you have that configured.
    #
    <Directory "/usr/local/apache2/cgi-bin/">
        AllowOverride AuthConfig Limit
        Options +ExecCGI +FollowSymLinks +IncludesNoExec
        Require all granted
    </Directory>
    • さらに, /usr/local/apache2/conf/httpd.conf において, LoadModule ... が羅列してある部分の末行に以下の行を追記した.

      LoadModule cgid_module modules/mod_cgi.so

make とインストール

make とインストールを行う.

# su gate
$ cd ~gate/gate-toroku-system/
$ perl ./config.pl
$ make

$ exit
$ mkdir /usr/local/gate/
$ mkdir /usr/local/gate/bin

$ sudo -s
# cd ~gate/gate-toroku-system
# make install

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-db-to-sudoers の編集

  • /usr/local/gate/sbin/gate-db-to-sudoers の Defaults で始まる部分に以下を追加した.
# This is /etc/sudoers file, generated by gate-db-to-sudoers.
# If you are to edit this file, do not edit it directly.

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults        mailfrom=root <--追記

root    ALL=(ALL:ALL) ALL
  • visudo を実行して上の追記箇所を追加した.

実行ファイルへのパスの設定

インストールした gate-toroku-system の実行ファイル群へパスを通した.

  • 具体的には, 以下のようにした.
    • /etc/bash.bashrc の冒頭に

      # add PATH for local installed softwares
      PATH="${PATH}:/usr/local/gate/bin"
      # add PATH for local installed softwares (for root)
      if [ "`id -u`" -eq 0 ]; then
      PATH="${PATH}:/usr/local/gate/sbin"
      fi 
      export PATH

      を追加した.

    • /etc/csh.cshrc の冒頭に

      # add PATH for local installed softwares
      set path = ($path /usr/local/bin /usr/bin /bin /usr/local/gate/bin) 
      # add PATH for local installed softwares (for root)
      if ( "`id -u`" == 0 ) then
      set path = ($path /usr/local/sbin /usr/sbin /sbin /usr/local/gate/sbin)
      endif

      を追加した.

    • /etc/zsh/zshenv に

      # add PATH for local installed softwares
      export PATH="$PATH:/usr/local/gate/bin"
      # add PATH for local installed softwares (for root)
      if [ "`id -u`" -eq 0 ]; then
        export PATH="$PATH:/usr/local/gate/sbin"
      fi

      の記述を追加した.

マニュアルへのパスの設定

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 が動作しているかチェックした.

ユーザの作成

root ログインの準備

root ログイン用の鍵の生成・設置と root ログインの許可を行った.

鍵の生成と設置

root ログイン用の鍵を作成・設置した.

マニュアル通りに進めば root ログイン用の鍵はこの段階で作成・設置するはずであるが, 構築作業の何らかの段階で既に鍵を設置している場合は 以下の手順の確認のみ行う.

  • ika に残った, 再構築前の tako の情報を削除
    • ika の /root/.ssh/known_hosts の中の new の情報を削除した.

      # cd /root/.ssh
      # ssh-keygen -R tako-itpsass.scitec.kobe-u.ac.jp

      で削除を行った.

  • ika で 鍵を生成した
    • 鍵の置き場とファイル名は, デフォルトの /root/.ssh/id_rsa とした
    • パスフレーズは空にした

      ika-itpass# cd /root/.ssh
      ika-itpass# mv id_rsa id_rsa_bk
      ika-itpass# ssh-keygen -t rsa
  • 公開鍵の設置

    tako の /root/.ssh/authorized_keys のパーミッションを変更した.

    tako-itpass# chmod 600 /root/.ssh/authorized_keys

root ログインの許可

root ログインの許可を設定した.

tako-itpass# vi /etc/ssh/sshd_config

PermitRootLogin yes
        :
PasswordAuthentication no
        :
UsePAM no
ssh デーモンを再起動した.

  # systemctl restart ssh

ユーザデータベースのコピー

ika の /home/gate/userdb を tako の /home/gate/userdb にコピーする.

  • まず, -n オプションを付けて rsync の動作チェックを行った.

    ika-itpass# rsync -n -av -e ssh --delete /home/gate/userdb/ tako-itpass.scitec.kobe-u.ac.jp:/home/gate/userdb/
  • 実際にコピーを行った.

    ika-itpass# rsync -av -e ssh --delete /home/gate/userdb/ tako-itpass.scitec.kobe-u.ac.jp:/home/gate/userdb/

root ログインの設定を戻す

tako への root ログインを不許可に設定し直した.

tako-itpass#  vi /etc/ssh/sshd_config
PermitRootLogin no
        :
PasswordAuthentication no
        :
UsePAM no

ssh デーモンを再起動した.

tako-itpass# /etc/init.d/ssh restart
  • ika から tako への ssh ができなくなったことを確認した.

/etc/shadow のコピー

  • old の /etc/shadow のうち UID 1000 ~ 29999 の gate-toroku-system で管理されるユーザーについて, そのアカウント名の行をコピーして new の/etc/shadow のファイルに追加した. 各ユーザに対する uid は /etc/passwd に書かれているものを確認した.

    # lv /etc/passwd

最初の保証人ユーザ作成

  • 個人申請 (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 -cd ~gate/.gate gate
  • ここで設定したパスワードを使い, "gate" ユーザとして登録申請中のテストユーザを承認した
  • その後, 承認したテストユーザのデータベースファイルが /home/gate/userdb/stable へ移動していることを確認した

アカウント生成

  • gate-daily は /etc/gate/gate.conf を参照するため, 起動前に gate.conf内の 'old-itpass' を 'new-itpass' と書き換えた(二ヵ所)
  • その後以下を実行した

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

すると

No filesystems with quota detected 

と表示されたがこれは quota の設定がまだのためである.

  • /etc/{passwd, group, shadow} に, 登録したユーザの情報が新たに書き込まれていることを確認した. また /home に /home/gate/userdb 以下に存在するユーザのディレクトリができていることを確認した.

bind の所有グループの変更

bind 関連のファイルの所有グループを itpadmin に変更した.

root@new:/usr/local/bind/etc# chgrp -R itpadmin .
  • 所有者やパーミッションが以下のように設定されていることを確認した.

    root@new:/usr/local/bind/etc# chmod 640 rndc.conf
    
    root@new:/usr/local/bind/etc# chown bind namedb/named.conf
    root@new:/usr/local/bind/etc# chmod 640 namedb/named.conf

/etc/aliases の変更

/etc/aliases の中の

root: test

これを itpadmin に書き換える.

root: itpadmin

設定を反映するため,

# newaliases

を実行した.

ここで許可がないというメッセージが出たが, /usr/bin/newaliases は /usr/sbin/exim4 のシンボリックリンクであり, exim4 に実行権限が付与されていないためである.

デーモンモードでの運用

ユーザ, ホストのデータベースをシステムに反映させるため, デーモンモードでの運用の設定を行う.

  • 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 によるセキュリティ強化
    • /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 kix06s02-in-f14.1e100.net
    client:   address  216.58.197.14
    server:   process  gate-daily
    access:   denied
    
    client:   hostname del01s06-in-x07.1e100.net
    client:   address  2404:6800:400a:804::200e
    server:   process  gate-daily
    access:   denied

    次に, 登録サーバ自身からのアクセスが許可されているか確認した.

    root@new-itpass:/home/gate# tcpdmatch gate-daily localhost
    client:   hostname localhost
    client:   address  ::1
    server:   process  gate-daily
    access:   denied
    
    client:   hostname localhost
    client:   address  127.0.0.1
    server:   process  gate-daily
    access:   granted
  • inetd を再起動した

    # /etc/init.d/openbsd-inetd restart
    [ ok ] Restarting openbsd-inetd (via systemctl): openbsd-inetd.service.
  • 確認

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

gate-toroku-system ソースの移動

ソースのバックアップを残した.

  • 以下のように名前を変更してコピーした
# cp -r gate-toroku-system gate-toroku-system_2017_11_22

doc ディレクトリのシンボリックリンク作成

/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを/home/gate/public_html/ に作成した.

# cd /home/gate/public_html/
# ln -s /usr/local/gate/doc
# ls -l
root@ner-itpass:/home/gate/public_html# ls -l
合計 64
lrwxrwxrwx 1 root root   19 2010-10-15 19:40 doc -> /usr/local/gate/doc

gate-db-to-ezmlm の設定

root になりかわり, /usr/local/gate/bin/gate-db-to-ezmlm の「0. 実行ファイル, ドメインの指定」の項目を以下のように変更した.

変更前

$domainname='gfd-dennou.org';

$ezmlmlist='$EZMLMDIR/ezmlm-list';
$ezmlmsub='$EZMLMDIR/ezmlm-sub';
$ezmlmunsub='$EZMLMDIR/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';

動作確認

  • /etc/gate/gate.conf の中に以下のような記述があった.
# データベースを共有するホストのリスト
# 
#   奇数個目の文字列がホスト名、その次の文字列がホストに対する
#   オプションをあらわす。複数のオプションは空白で区切られる。
#   %yellow             yellow グループのメンバだけにアカウント作成を限定
#   wheel:green         $WHEELUSER の設定にかかわらず green グループメンバが
#                       スーパーユーザに sudo できるようにする

        %DB_SHARE_HOSTS = (
                'ika-itpass.scitec.kobe-u.ac.jp','wheel:itpadm'
                                                        ^^^^^^

「itpadm」となっていたので「itpadmin」と修正した.

  • /etc/gate/gate-user.conf の中に以下のような記述があった.
# wheel 法人ユーザ. /etc/sudoers 生成時に特別扱いを行う
# ホスト毎に変更可能なので %DB_SHARE_HOSTS の説明も参照せよ

#       $WHEELUSER = 'wheel';
        $WHEELUSER = 'epaadmin';
                      ^^^

「epaadmin」となっていたので「itpadmin」と修正した.

確認作業

ITPASS サーバユーザ登録システムのページから登録情報の更新をした.

その後 /var/log/syslog を見て gate が作動したことを確認した.

Nov 22 16:56:24 tako-itpass gate-daily[2958]: connect from 127.0.0.1 (127.0.0.1)

また, 同時刻に sudoers ファイルが書き換えられているか確認した.

$ ls -la /etc/sudoers
-r--r----- 1 root root 766 Nov 22 16:56 /etc/sudoers

sudoers ファイルに以下の行があることを確認した.

$ sudo less /etc/sudoers
  (省略)
%itpadmin       ALL=(ALL) ALL
  (省略

念のため, itpadmin グループのユーザが実際に root になれることを確認した.

すべての作業が完了したらテストユーザのアカウントを削除する.

gate-touoku-system の html ファイルおよび pl ファイルの修正

  • 専攻/学科名を変更するために /home/gate/public_html 以下のファイル:

    index.html index-user.html user-koumoku.html

    および /usr/local/gate/lib 以下の

    gate-local.pl

    を修正した.

  • 次にリンク切れの Web ページを修正するため, /home/gate/public_html 以下の

    user-authkey.html

    を修正した.

  • 来年度以降, gate-toroku-system のインストール時に上の修正箇所が反映されるように新しく gate-toroku-system.tgz を用意し, /home/gate/ 以下に置いた. その際, 今年度の作業時に扱ったファイルおよびディレクトリ,

    gate-toroku-system.tar.gz gate-toroku-system gate-toroku-system_2017_11_22

を新しく /home/gate/ 以下に用意したディレクトリ, old_files/ 以下に格納した.

参考文献

[ITPASSサーバ構築・運用ドキュメント へ戻る]

Last modified:2017/11/22 18:27:43
Keyword(s):
References:[[ITPASS2017]2017年度サーバ構築ログ]