コンソールサーバー NIS HOWTO, NISを使ったポートアクセス管理


最終更新:2006年11月22日


SCS NISを使ったポートアクセス管理

注記: NIS に対するポートアクセスの管理機能の拡張については,SCS本体の /usr/local/doc/nis に次の関連文書がおさめられています.
[admin@scs nis]$ ls Makefile.nis.portAccess lsi_port_access lsi_port_users lsi-nis-HOWTO lsi_port_awk yp_notes
以下は,lsi-nis-HOWTO Date: 2004/07/29 14:29:45 Revision: 1.3 に加筆したものです.


Logical Solutions (LSI)
Secure Console Server (SCS)
NIS HOWTO

摘要 :

LSI の SCS においては,ユーザー認証に加えて,各シリアルポートへのアクセス管理も行う必要があります.このため,SCS にはユーザー認証に関する情報とは別に,ユーザー毎にポートへのアクセス許可の情報を含んだ設定ファイルを持っています.

NIS をSCSのユーザー認証に使う場合,次の問題が生じます.
1) NIS によりユーザー認証は行われるが,NISからはポートアクセスに関する許可情報が提供されない
2) そのため,個々の SCS にユーザーごとにポートアクセスに関するローカルな設定を行わねばならない

この文書では,nsswitch.conf の設定を拡張して,それぞれのユーザーのそれぞれの SCS のポートへのアクセス許可を NIS にゆだねる方法を解説します.具体的には,既存の NIS データベースを変更し,ポートアクセスを管理するための新しいレコードを含めます.

1.0 NIS サーバーとクライエントの準備

NIS をSCSのユーザー認証とポートアクセス管理に使用するために,NISサーバーを用意し,SCSをNISクライエントに設定します.またNISサーバーのhomeディレクトリをNFSで共有しておくとSCSにユーザーディレクトリを設ける必要がなくなり便利です.NISサーバー/NFSサーバーの設定については,サーバーとしてお使いになるOSのマニュアルを参照ください. 参考例として,Linuxホスト を NIS/NFS サーバに使う設定例 を用意しましたので参照ください.SCSをNIS/NFSクライエントにする方法についても触れています.


2.0 NIS によるポートアクセスの制御

SCS は NIS を使って,どのユーザーがどのポートにアクセスできるかを制御できます.
この機能は,NIS サーバーにポートアクセスの情報をおさめたデータベースを作り,それをNISクライエントであるSCSから参照することで実現します.このポートアクセスデータベースは次のファイルから構成されます.

ファイル名 説明 ======================================================================== lsi_port_access - ポートへのアクセスの許可を定義したファイル lsi_port_user - ポートにアクセスするユーザーを定義したファイル lsi_port_awk - ポートアクセスに関する AWK ファイル (make が使用する) Makefile.nis.portAccess - lsi データベースを作るための makefile
2.1 lsi_port_access ファイル

このファイルには,グループ名毎にアクセスを許されるSCSのユニットと,そのどのポートに対してCONNECT, MONITOR, CLEARの実行を許すかが書かれています.

書式 - グループ名:SCS名:CONNECT許可:MONITOR許可:CLEAR許可

上記において
項目 説明 ======================================================================= グループ名 ユーザーのグループ SCS名 SCS のホスト名 CONNECT許可 そのグループが CONNECT することを許されたポート MONITOR許可 そのグループが MONITOR することを許されたポート CLEAR許可 そのグループが CLEAR することを許されたポート 例: pbxgrp : tvscs320 : 1,2-6,13 : 5-9 : 1,7 itgrp : tvscs160 : 8-16 : 7 : 1,3,5,7-11
上の例は2つのグループを定義しています.最初のグループ pbxgrp は,tvscs320 と名づけられた SCS のポート 1 と 2 から 6 と 13 にCONNECTでき,ポート 5 から9 をMONITORでき,ポート 1 と 7 のバッファーをCLEARできます.次のグループ itgrp は,tvscs160 と名づけられた SCS のポート 8 から 16 にCONNECTでき,ポート7をMONITORでき,ポート 1 と 3 と 5 と 7 から 11 のバッファーをCLEARできます.


2.2 lsi_port_user ファイル

このファイルにはSCSのユーザーが所属するグループ名が定義されています.一人のユーザーが複数のグループに所属することもできます.次に設定例を示します.

書式 - ユーザー名 : グループ名

上記において

項目 説明 ======================================================================= ユーザー名 SCS へのアクセスを許されたユーザー グループ名 そのユーザーの所属するグループ 例: tomv : pbxgrp billf : itgrp
上の例は tomv と billf の二人のユーザーの所属するグループを定義しており,ユーザー tomv は pbxgrp グループに, ユーザー billf は itgrp に属しています. 上記の lsi_port_access ファイルと共に使って,tomv と billf の SCS へのアクセスを制御します.

2.3 lsi_port_awk ファイル

このファイルは, lsi ポートデータベースファイル ( lsiportdbase ) を NIS サーバー上に作るのに使います. このファイルは makefile が使う awk のコードです.

2.4 Makefile.nis.portAccess

これが ポートデータベースファイル "lsiportdbase" を作るのに使う make ファイルです.

2.5 /etc/nsswitch.conf

NISクライエントとなるSCS上のこのファイルに 'port_access' データベースを追加します. その書式は他のエントリと同じです.
port_access: files nis
files と nis のサービスに加えて, default.allow と degault.deny を使うこともできます. これらはポートアクセスに関するレコードやファイルがない場合のアクションを指定するために使うことができます.SCS がローカルでないユーザー認証 (LDAPとかKerberos とか) を使う場合,SCS 上に一切のローカルな設定ファイルがないこともあり得ます. この場合,認証されたユーザーはSCSにログインできますが,デバイスポートやバッファーへのアクセスを拒否されてしまいます. /etc/nsswitch.conf ファイルの port_access 行の末尾に default.allow を付加するとポートアクセスの設定ファイルを持たないすべてのユーザーがポートやバッファーににアクセスできるようになります.
port_access: files [nis] default.allow
(NIS を使わないときは nis を省いてもかまいません).
ローカルな設定ファイルを持っているユーザーはdefault.allow あるいは default.deny オプションは無意味です.これらはローカルな設定ファイルがないときにのみ有効です.
3.0 SCSユーザーの所属するグループ scsusers 701, monitor 702

LSI の SCS はシリアルポートとバッファーへのアクセス管理にグループパーミッションを使っています. このために2つのグループが定義されており,ユーザーがポートやポートバッファーにアクセスするためには scsusers か monitor グループか,その両方に属していなければなりません. これは /dev と /proc のエントリがこれらのグループに属しており,グループに属さないユーザーのアクセスは拒否するからです. よって,NIS を使用するときは,NISサーバー側で SCSユーザーを適切なグループに所属させて,NISクライエントであるSCSの /etc/nsswitch.conf ファイルに group も定義しておくことを忘れないでください.

passwd:     nis files
shadow:     nis files
group:      nis files
port_access: nis files
hosts:      files dns

シリアルポートとポートバッファーのノードのパーミッションは次のとおりになっています.

/dev/ttyB* のデバイススノードのパーミッションは 660 (rw-rw----)
/dev/monitor_port* のデバイスノードのパーミッションは 440 (r--r-----)

NISサーバー上でSCSユーザーが scsusers グループID 701 か monitor グループID 702 かあるいは両方のメンバーになるように group の設定がなされており,NISクライエントであるSCSがNISのgroupマップを参照するように設定されているのであれば,以下の設定は不要です.

以下のを変更を実行するには,事前に root のファイルシステムを R/W モードでリマウントしておく必要があります.
(mount -o remount,rw /)

この操作は root として実行します.

3.1 scsusers グループ

第一のグループは "scsusers" であり,グループIDは 701 です. このグループのメンバーはポートバッファー(/proc/port_buffers/...)とシリアルポート (/dev/ttyBn)にアクセスできます. ユーザーが "scsusers" グループに属していないと,ローカルな設定ファイルやNISによるアクセス権のチェックは行われません.

3.2 monitor グループ

もう一つのグループは "monitor" であり,グループIDは 702 です. このグループのメンバーはポートモニター (/dev/monitor_port...) にアクセスできます.

3.3 グループIDの変更

グループIDとして 701 と 702 を利用できる場合は,この手順は必要ありません.

NIS 上ですでにグループID 701 と 702 を使っている場合は,別のグループIDに付け替えます. ただし,グループ名を変更することはできません.

初めてSCSに電源を入れると,初期値のグループIDを持ついくつかのファイルが作られます.このため,グループのグループIDを変更するだけでなく,これらファイルのグループIDも変更しなければなりません.

これらの変更はユーザーを作る前あるいはNISを設定する前に行っておくべきです.さもないと,より多くのファイルのグループIDを修正しなければならなくなります.


A) グループIDの変更

グループIDを変更するには, "groupmod" コマンドを使います. コマンド書式は次の通りです.

groupmod -g 新しいグループID番号 -o グループ名

グループ名は "scsusers" か "monitor" です.

B) 関連するファイルのオーナーグループを変更します.

find / -gid 変更前のグループID -exec chgrp 新しいグループID {} \;


C) LSI 設定ファイルの変更

"scsusers" グループのグループIDを変更したら,LSIの設定ファイルも変更しなければなりません.

/etc/sysconfig/lsi ファイルに次の行を追加します.

LSI_BUFFER_GID=新しいグループID

ここで“新しいグループID”とは"scsusers"グループに新たに割り付けたグループIDです.


D) 変更の保存

"save" コマンドを実行して,フラッシュメモリーに変更を保存します.


4.0 NIS MAPとLSIポートアクセスデータベースを作る
NIS サーバーにSCSユーザーを追加する際には,上記のグループのメンバーを管理することも忘れないでください. SCSユーザーを追加し,グループメンバーの設定を終えたら,MAPを作ります.

cd /var/yp; make -f Makefile.nis.portAccess

NIS サーバーにSCSユーザーを追加した際は,NISサーバー上のLSIポートアクセスデータベースを更新することも忘れないでください.SCSのポートアクセスデータベースを作るには,上記のファイルを NIS サーバーに置き,lsi_port_access と lsi_port_user に必要な設定を行った後に;

cd /var/yp; make -f Makefile.nis.portAccess lsiportdbase

を実行し,同ディレクトリに生成された lsiportdbase ファイルをNISのMAPディレクトリ(Linux では /var/yp/<NISドメイン名>)にコピーします.


    以上