Provided by: xmanpages-ja_4.1.0.20011224-6_all bug

IP パケットフィルタリングルータを使った通信
       xfwp  の目的は、ファイアウォールの外の X クライアントから内部ネットワー
       クの  X  サーバへのアクセスに対して、信頼できる制御をできるようにするこ
       とである。現時点では、このようなアクセス制御は、通常は  IP パケットフィ
       ルタリングルータを含むファイアウォールの設定で実現する。多くの場合、こ
       のようなフィルタの規則では、内部ネットワークのホストに対する  X  サーバ
       のポート(範囲 6000-6xxx)へのアクセスは禁止される。

       xfwp を動作させるためには、IP  パケットフィルタリングルータの規則から、
       ポート 6000-6xxx に対するアクセス制限を取り除かなければならない。[注意:
       xfwp は  6001  から始まる範囲のポートだけを割り当てる。したがって、全て
       の内部ネットワーク上のホストに対するポート  6000 番へのアクセスは禁止し
       たままでよい。] これは、内部ネットワークののファイアウォールを  X  クラ
       イアントによる無差別アクセスに対してオープンにするということではない。
       xfwp は、IP  パケットフィルタリングルータそのものと同様の、完全に設定可
       能な規則ベースのアクセス制御システムをサポートしている。  xfwp は実際に
       は、完全に設定可能かつX の通信専用で適用される、ルータと は別のレベルの
       パケットフィルタリング制御を追加する。詳しくは、 「設定ファイル」のセク
       ションを参照すること。

インストール、設定、トラブルへの対処
       xfwp   は通常は内部ネットワークのファイアウォールホスト上でバックグラウ
       ンドプロセスとして実行される。  xfwp は前述の任意のコマンド行オプション
       を指定して起動することができる。 to xfwp whether or not it supports the
       particular policy.  Consult the man 先に述べたように、xfwp はプロキシマ
       ネージャおよび  xfindproxy   ユーティリティと組み合わせないと利用できな
       い。 xfwp はユーザが定義した X サーバのサイトセキュリティポリシーに対応
       する  ように設定できるが、このポリシーにおいては、X  サーバは特定のポリ
       シーを  サポートしているかどうかを xfwp に示す必要がある。 これらの要素
       に関する詳しい情報については、オンラインマニュアルを参照す     ること。
       xfwp  は、-DDEBUG  オプションを付けて再コンパイルすることによって、  デ
       バッグ出力を出すようにできる。

性能、ロードバランシング、リソース管理
       xfwp  は4種類の異なる接続を管理する。これは、プロキシマネージャ(PM)デー
       タ、X  クライアント待機、X クライアントデータ、X サーバ接続である。xfwp
       を使うシステム管理者は、xfwp   のサービスの性能を最適化するために、これ
       らの接続タイプに対するリソースの割り当てと再利用の方法を理解すべきであ
       る。

       それぞれの接続タイプはデフォルト数の割り当てスロットとデフォルトの タイ
       ムアウト値を持っている。 PM 接続と X サーバ接続に対する割り当てスロット
       の数はコマンド行オプション で設定できる。  接続タイムアウトもコマンド行
       オプションで設定できる。 タイムアウト値とは、データが流れないままでオー
       プンした接続状態が許され る時間である。接続上にデータが流れると、  接続
       を閉じるまでの時間は自動的にリセットされる。4つの接続タイプにおけ  プロ
       セスの接続スロット全体のデフォルトの配分と、それぞれの接続タイプに 対す
       るデフォルトのタイムアウト値の選択は、xfwp  の利用モデルが含んでい る多
       くの仮定に基づいて決まる。

       PM 接続のデフォルト値は 10 であり、PM 接続のデフォルトの持続時間は、 そ
       れぞれの接続について最後にデータが流れてから 3,600 秒(1時間)である。 起
       動時には、xfwp  は任意の非予約ポート(xfwp  のコマンド行で指定しな  けれ
       ば、デフォルト値の   4444   が使われる)において  PM  接続リクエストを待
       つ。PM は通常、xfindproxy を使って PM の呼び出しが行われたときしか xfwp
       に接続しない。 以降は、両者のメッセージ交換が終わった後でも、デフォルト
       の接続有効期間 の間は  PM  は  xfwp  に接続したままである。場合によって
       は、これが原因で PM 接続スロットが枯渇してしまうこともある。 システム管
       理者は、多くの PM から1つの xfwp に接続が行われることを予想  した場合に
       は、-pdt  コマンド行オプションを用い、アクティブでない接 続がオープン状
       態であることが許される範囲で望ましい有効期間を反映させた タイムアウト値
       を指定して xfwp を起動すべきである。

       xfwp   クライアントリスナは、xfindproxy  を呼び出して設定することができ
       る。  最後のデータが流れた時点から86,400秒(24時間)  の有効期間の間は、X
       クラ イアントの接続リクエストを待ち続ける。この期間を過ぎると、リスナは
       自動 的にクローズされ、その  fd  は後で割り当てられるために回収される。
       クライアントの待ちポートが利用可能であることを保証するような別のタイム
       アウト値をどうやって選べばよいかという問題に対しては、システム管理者は
       (xfindproxy   を使って)リスナが割り当てられた時間とクライアントが実際に
       xfwp   への接続を試みる時間との間に予想されるずれを考慮しなければならな
       い。また、最初のクライアントデータ接続が閉じた後にクライアントのリスナ
       が再利用される見込みも考慮しなければならない。

       それぞれのクライアント接続には、最後にデータが流れてから 604,800 秒 (7*
       24 時間)の存続時間がデフォルトで割り当てられる。 この期間が過ぎると、接
       続は自動的にクローズされ、その fd は将来の 割り当てのために回収される。
       実際には、サーバ接続はリモートの  X  クライアントからの接続リクエストが
       fwp のクライアント待ちポートのいずれかに届くまでは確立されないので、 ク
       ライアントデータのタイムアウトはクライアント-xfwp および xfwp-サーバ の
       両方の接続に対して適用される。xfwp を通じて多くのクライアントデータ  接
       続が生じることが予想される場合、システム管理者はデフォルトのタイムア ウ
       ト値を変更することを考えるべきである。

設定ファイル
       xfwp の設定ファイルは xfwp のホストマシン上にあり、X クライアントのデー
       タ接続を許可するか拒否するかを指定する。ファイルのパス名は起動時に指定
       する。設定ファイルが指定されていなければ、xfwp を通過する全ての X  クラ
       イアントのデータ接続リクエストは、デフォルトで許可される。ただし、この
       場合にも他の  X  サーバ認証チェックには成功しているものとする。設定ファ
       イルが与えられているが、そのエントリのいずれも接続リクエストにマッチ し
       ない場合には、デフォルトでは接続は拒否される。

       設定ファイルのある行が '#' で始まる場合や空行の場合は、その行は  無視さ
       れて評価ルーチンは次の行へと進む。

       設定ファイルでは、全く独立の2つの認証チェックがサポートされている。1つ
       は xfwp 自身が実行するものであり、もう1つは  xfwp  の目的のサーバへの問
       い合わせの結果である。前者においては、設定ファイルでは  IP パケットフィ
       ルタリングルータに似た記法やセマンティックが使われている。これは以下の
       形式の、0個以上の「始点アドレス-終点アドレス」の規則からなる。

       {permit  |  deny}  <src>  <src  mask>  [<dest>  <dest mask> [<operator>
       <service>]]

       permit/deny キーワード   ``permit''    はアクセス許可を示し、キーワード
                   ``deny'' はアク セス拒否を示す。

       src         接続リクエストを出したホストとマッチさせる  IP アドレス。こ
                   の値は IP フォー マットで記述する。

       src mask    サブネットマスクであり、これも   IP    フォーマットで記述す
                   る。この値はさら に始点アドレスのマスクを調べるために使われ
                   る。マスク内でセットされてい るビットは、入ってくるアドレス
                   のビットで、指定された  src と比較すると きにものを
                   示す。

       dest        入ってくる接続リクエストの終点アドレス(つまり、クライアント
                   が接続しよ うとしている X サーバの IP アドレス)とマッチさせ
                   る IP アドレス。

       dest mask   サブネットマスクであり、これも   IP    フォーマットで記述す
                   る。この値はさら に終点アドレスのマスクを調べるために使われ
                   る。マスク内でセットされてい るビットは、入ってくるアドレス
                   のビットの内、指定された  destination と 比較するときに
                   ものを示す。

       operator    (service フィールドが NULL でなければ)常に ``eq'' である。

       service     ``pm'', ``fp'', ``cd'' いずれかの文字列である。これらはそれ
                   ぞれプロキ シマネージャ、xfindproxy, クライアントデータに対
                   応する。

       後者の認証チェックの場合には、設定ファイルは次の形式のサイトのポリシー
       規則を0個以上含む:

       {require | disallow} sitepolicy <site_policy>

       require     対応するサイトポリシーの1が X サーバに 
                   、そうでない場合には接続を拒否しなけれ ば
                   ならないことを指定する。

       disallow    対応するサイトポリシーのが  X サーバに設定されて 
                   、そうでない場合には接続を拒否しなければならない
                   こと を指定する。

       sitepolicy  これは必須のキーワードである。

       <site_policy>
                   ポリシー文字列を指定する。この文字列は英数字を任意に組み合
                   わせたもので あり、対象とする X  サーバだけが解釈できればよ
                   い。

XFWP の設定ファイルのエントリの評価規則
       最初のタイプの設定可能な認証チェックの場合には、始点アドレスに基づいて
       (オプションとして終点アドレスとタイプも使用できる)それぞれの接続タイプ
       に対して接続の許可および拒否を行うことができる。 それぞれのファイルエン
       トリでは、``permit'' または ``deny'' であるキー ワードと2つの始点アドレ
       スフィールドは最低限指定しなければならない。   必要ならば   destination
       フィールドと service フィールドを使って、非常に  細かいアクセス制御を行
       うことができる。

       規則マッチングのアルゴリズムは以下である:

            while (チェックするエントリが残っている)
            {
              if ((<originator IP> AND (NOT <src mask>)) == src)
                [if ((<dest X server IP> AND (NOT <dest mask>)) == dest)]
                  [if (service fields が存在し、かつマッチしている)]
                    キーワードに応じて、接続の許可または拒否を行う
              else
                continue
            }
            if (マッチする規則がない)
              接続を拒否する

       許可と拒否の規則でサービスや操作が指定されていない場合、その規則は 全て
       のサービスに適用される。設定ファイルが指定されており、その中に 有効な許
       可か拒否の規則がひとつでも含まれる場合は、許可が明示的に与えら れていな
       いホストは接続を拒否されるようになる。

       サイトのポリシー設定のチェックは、入ってくる接続リクエストに対する別の
       (そして  X  サーバだけの)認証で構成される。require(満たさなければならな
       い)の規則と  disallow(接続禁止)の規則を任意の数だけ指定することができる
       が、全ての規則は同じタイプでなければならない。つまり、1つのファイルに
       ``require''  と  ``disallow''  のキーワードをどちらも記述するとはできな
       い。 このチェックのためのアルゴリズムは以下である:

            if (X サーバがサイトポリシー文字列のいずれかを認識する)
              if (keyword == require)
                接続を許可する
              else
                接続を拒否する
            else
              if (keyword == require)
                接続を拒否する
              else
                接続を許可する

       xfwp  がサイトのポリシーのチェックを行うのは、始点アドレス-終点アドレス
       のチェックで接続を認められた場合だけである。

例

       # サーバがこれらのポリシーの1つをサポートしている場合に限り、接続が許可
       # されるが、それでも適用可能な規則にマッチしていなければならない
       #
       require sitepolicy policy1
       require sitepolicy policy2
       #
       # 8.7.6.5 が送ってきた pm 接続を拒否する。[注意: pm サービスを明示的に
       # 許可している場合、以下に示すように destination フィールドがなければ
       # ならない。]
       #
       deny  8.7.6.5  0.0.0.0  0.0.0.0  255.255.255.255  eq  pm
       #
       # xfindproxy の X サーバがどこにでも接続できるように許可する [注意: fp
       # サービスを明示的に許可している場合、以下に示すように source フィール
       # ドがなければならない。]
       #
       permit  0.0.0.0  255.255.255.255   0.0.0.0  255.255.255.255  eq  fp
       #
       # IP ドメイン 192.0.0.0 から送られた全ての接続タイプだけを許可する
       #
       permit  192.0.0.0   0.255.255.255

       最初にマッチした規則が適用されるので、始点アドレス-終点アドレスの規則
       は正しい順で記述しなければならない点に注意すること。解析器の文法チェッ
       クに加え、システム管理者が実際にマッチする規則を調べる際の補助を行うた
       めの特別なコマンド行オプション(-verify)が用意されている。

バグ
       xfwp   は待ちポートを割り当てる前にサーバのサイトポリシーとセキュリティ
       機能拡張を確認すべきである。

関連項目
       xfindproxy (1), Proxy  Management  Protocol  spec  V1.0,  proxymngr(1),
       Xserver(1)

著者
       Reed Augliere, consulting to X Consortium, Inc.