YPSERV(8) FreeBSD システム管理者マニュアル YPSERV(8)
名称
ypserv − NIS データベースサーバ |
書式
ypserv [−n] [−d] [−p path] |
解説 |
NIS は複数の UNIX ベースのマシン間で共通の設定ファイルの集合を共有するた めの RPC ベースのサービスです。 NIS では、 /etc/hosts, /etc/passwd, /etc/group といった、ほとんどの環境で頻繁に更新されるファイルの複数のコ ピーをシステム管理者が更新する必要は無く、計算機のグループで一箇所で更新 可能な 1 組のデータを共有することができます。 ypserv ユーティリティは NIS ドメイン内のクライアントシステムに NIS データ ベースを配布するサーバです。 NIS ドメイン内のクライアントは domainname(1) コマンドを使用し、 ypserv がサービスしているドメイン名を設定しなければな りません。また、単一 NIS ドメイン中に複数のサーバが存在しうるため、クライ アントは、 ypbind(8) を実行させ、特定のサーバに接続する必要もあります。 ypserv によって配布されるデータベースは /var/yp/[domainname] に格納されま す。ここで domainname はサービスを受けるドメイン名です。この様なディレク トリは様々なドメイン名にて複数存在可能ですが、単一の ypserv デーモンにて 全て処理可能です。 データベース (もしくはしばしば マップと呼ばれます)は、様々なシステムファ イルをソースとして /var/yp/Makefile によって作成されます。データベース ファイルは db(3) フォーマットであり、レコード数が多くとも高速に検索可能で す。 FreeBSD では、セキュリティのため、マップの読み書きは root のみ可能で す。技術的には、このような制限はパスワードマップにのみ必要ですが、他の マップの内容は誰もが読める他のファイルに書いてありますので、この様な制約 は害ではなく、現実的であると考えられています。 ypserv ユーティリティは /etc/rc.conf にて有効にされている場合に /etc/rc.d/ypserv から起動されます。 |
特別な仕様
FreeBSD のパスワードデータベースを NIS によって配布する場合にいくつかの問 題があります。 FreeBSD は通常、暗号化したパスワードを、root のみ読み書き 可能な /etc/master.passwd にのみ格納します。このファイルを NIS マップにす ると、セキュリティが完全に破れてしまいます。 これに対処するために、 FreeBSD の ypserv は master.passwd.byname と master.passwd.byuid のマップを特別な方法で扱います。サーバがこれら 2 つの マップへのアクセス要求を受け付けると、要求元の TCP ポートをチェックし、 ポート番号が 1023 より大きい場合にはエラーを返します。スーパユーザのみ 1024 より小さい TCP ポートにバインドする事を許されているため、サーバはこ れを利用して特権ユーザからの要求か否かを判定できます。非特権ユーザからの 全ての要求は拒否されます。 また、 FreeBSD の標準 C ライブラリ中の getpwent(3) ルーチンは、スーパユー ザが使用した場合には master.passwd.byname と master.passwd.byuid のマップ からデータを取得します。通常のユーザがこれらのルーチンをコールした場合に は、標準の passwd.byname と passwd.byuid のマップにアクセスします。後者の 2 つのマップは /var/yp/Makefile により、 master.passwd ファイルをパース し、パスワードフィールドを削除する事により作成されますので、非特権ユーザ に渡しても安全です。このように master.passwd データベースのシャドウパス ワード機構は NIS においても守られます。 |
注
マスタサーバとスレーブサーバの設定 |
ypinit(8) は便利なスクリプトであり、 NIS のマスタサーバおよびスレーブサー バの設定の助けになります。 |
制限 |
NIS 環境にてシャドウパスワードを使用することに起因する問題が 2 つありま す。ユーザは次のことに気をつけねばなりません。 |
1. ‘TCP ポートが 1024 より小さい’ というテストは非常に簡単であるため、同一ネットワーク上の、無制限のアクセスが可能なマシンを持つユーザはこれを破る事が可能です (UNIX ベースではないオペレーティングシステムを実行するマシンでも可能です)。
2. FreeBSD システムを、シャドウパスワードをサポートしない非 FreeBSD クライアント (ほとんどがそうです) に対するサーバにしよ うとしている場合には、 /var/yp/Makefile の UNSECURE=True エン トリのコメントを外し、シャドウパスワードを無効にする必要があり ます。これにより、 passwd.byname と passwd.byuid のマップに、 非 FreeBSD クライアントが NIS を通じてユーザ認証を行うために必 要とする、有効な暗号化されたパスワードフィールドが含まれるよう になります。 セキュリティ # allow connections from local host -- mandatory ypserv がこれらのルールに適合するアドレスからの要求を受け取った場合には、 通常通り要求を処理します。アドレスがルールに適合しない場合には、要求は無 視され、警告がログされます。 /var/yp/securenets ファイルが存在しない場合 には、 ypserv は全てのホストからの接続を許します。 ypserv ユーティリティは、Wietse Venema の tcpwrapper パッケージをサポート します。これにより、アクセス管理のために、システム管理者は tcpwrapper の 設定ファイル (/etc/hosts.allow と /etc/hosts.deny) を /var/yp/securenets の代わりに使用できます。 注: どちらのアクセス制御もそれなりのセキュリティを提供しますが、特権ポー トテストと同様に ‘‘IP 詐称 (spoofing)’’ 攻撃には無力であることに注意して 下さい。 |
NIS v1 互換性 |
このバージョンの ypserv は NIS v1 クライアントに対してある程度サービス可 能です。 FreeBSD の NIS 実装は NIS v2 プロトコルのみを使用しますが、他の 実装では古いシステムとのバックワードコンパチビリティのために v1 プロトコ ルもサポートしています。そのようなシステムで提供されている ypbind(8) デー モンは、実際にはおそらく不要なのですが、 NIS v1 サーバにバインドしようと します (そして、v2 サーバから返答を受け取ったとしてもサーバを探すためにブ ロードキャストし続けます)。このバージョンの ypserv では通常のクライアント の呼び出しはサポートされていますが、 v1 マップ転送要求は扱いません。すな わち、古い NIS サーバとともに、マスタもしくはスレーブとして使用することは できません。好運なことに、今日ではこの様なサーバは存在しないでしょう。 |
NIS クライアントでもある NIS サーバ |
複数のサーバが存在するドメインにおいて、サーバが NIS クライアントでもある 場合には、 ypserv の実行に注意を払う必要があります。バインド要求をブロー ドキャストさせてサーバ間でバインドさせるのではなく、サーバを自分自身にバ インドすることは一般的には良い考えです。あるサーバがダウンし、他のサーバ がそのサーバに依存していた場合には、奇妙な障害が生じ得ます (結果として全 てのクライアントがタイムアウトし、他のサーバにバインドしようとしますが、 遅延は無視できず、サーバはまだ互いにバインドしようとしますので、障害は残 ります)。 特定のサーバに強制的にバインドさせるための詳細は ypbind(8) マニュアルペー ジを参照して下さい。 |
オプション
以下のオプションが ypserv にてサポートされています。 |
−n
このオプションは ypserv が hosts.byname と hosts.byaddress のマップ に対する yp_match 要求を扱う方法を操作します。デフォルトでは、 ypserv が与えられたホストのエントリをホストマップ中に見付けられな かった場合には、エラーを返しそれ以上の処理を行いません。 −n フラグ を指定すると、 ypserv はさらなる処理を行います。すぐにあきらめず に、ホスト名もしくはアドレスを DNS ネームサーバに問い合わせて解決し ようとします。問い合わせが成功すると、 ypserv は偽のデータベースレ コードを作成し、それをクライアントに返しますので、クライアントの yp_match 要求は成功したように見えます。 この仕様は SunOS 4.1.x との互換性のために用意されています。そのシス テムの標準 C ライブラリではリゾルバが腐っており、ホスト名とアドレス の解決のために NIS に依存していました。 FreeBSD のリゾルバは DNS へ の問い合わせを直接行えますので、 FreeBSD である NIS クライアントに 対してのみサービスする場合は、このオプションを有効にする必要はあり ません。 −d −p path 関連ファイル |
/var/yp/[domainname]/[maps]
NIS マップ 関連項目 |
ypcat(1), db(3), hosts_access(5), rpc.yppasswdd(8), yp(8), ypbind(8), ypinit(8), yppush(8), ypxfr(8) |
作者
Bill Paul 〈wpaul@ctr.columbia.edu〉 |
歴史
このバージョンの ypserv が最初に登場したのは FreeBSD 2.2 です。 FreeBSD 10.0 February 4, 1995 FreeBSD 10.0 |