Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

NAME

       hosts_access - ホストアクセスコントロールファイルの書式

DESCRIPTION

       このマニュアルページは、クライアント (ホストネーム/アドレス、ユー ザー名) サーバー (プロセ
       ス名、ホストネーム/アドレス) 間の単純な アクセス制御の記述法を解説するものである。具体的な
       設定例は末尾に  示すので、てっとりばやい設定を望むせっかちな読者は、"設定例" の セクション
       へと進んで欲しい。

       アクセスコントロール書法の拡張された部分に関しては、 hosts_options(5) の文書で解説する。こ
       の拡張は、プログラム が -DPROCESS_OPTIONS を指定して作成されたかどうかに左右される。

       以下の文章では、daemon  とはネットワークデーモンのプロセス 名を意味し、client とは、サービ
       スを要求するホストの名前、  もしくはホストのアドレスを意味している。ネットワークデーモンの
       プ ロセス名は、inetd の設定ファイル中に明示されている。

ACCESS CONTROL FILES

       アクセスコントロールのソフトウェアは、二つのファイルを参照する。  最初に一致した時点で検索
       は終了する。

       •      (daemon,client)  の組合せが  /etc/hosts.allow  ファイルの中の  エントリと一致する場
              合、アクセスは承諾される。

       •      もしくは、(daemon,client)  の組合せが /etc/hosts.deny ファ イルの中のエントリと一致
              する場合、アクセスは拒否される。

       •      それ以外の場合、アクセスは承諾される。

       アクセスコントロールのファイルが存在しない場合は、それらのファイ  ルが空であったとみなされ
       る。したがって、アクセスコントロールは、  アクセスコントロールファイルを準備しない事によっ
       て停止する事がで きる。

ACCESS CONTROL RULES

       どちらのアクセスコントロールファイルも、0 行以上のテキストで構成  されている。これらの行は
       出現順に処理される。検索はマッチする行が 現れた時点で終了となる。

       •      改行文字は、バックスラッシュが前に置かれた場合は無視される。これ によって、楽に編集
              するために長い行を分割することが許されている。

       •      空行、または `#´ で始まる行は無視される。したがって、コメントを  挿入したり、ホワイ
              トスペースを入れて読みやすく整える事が許されて いる。

       •      それ以外の行は、次に示すフォーマットに従わなければならない。ただ し [] で囲まれる部
              分は任意である:

                 daemon_list : client_list [ : shell_command ]

       daemon_list は、ひとつ以上のデーモンプロセス名 (argv[0] の値)  または、ワイルドカード  (後
       述) を使ったリストである。

       client_list  は、ひとつ以上の、ホスト名、ホストアドレス、ま たは、ワイルドカード (後述) を
       使った、クライアントのホスト名かア ドレスにマッチするパターンのリストである。

       複合化された daemon@hostuser@host という形式は、 それぞれ SERVER ENDPOINT PATTERNS  お
       よび CLIENT USERNAME LOOKUP のセクションで解説する。

       リストの各要素は空白、またはカンマで分けなければいけない。

       NIS  (かつての YP) の netgroup 問い合わせという例外を除いては、 全てのアクセスコントロール
       のチェックは大文字小文字を同一視して行 なわれる。

PATTERNS

       アクセスコントロールの書式は以下のようなパターンを満たすものであ る。

       •      `.' で始まる語。もし、ホスト名の後ろの部分がこの書式で指定され たパターンと一致する
              と、それはマッチとなる。例えば、`.tue.nl´ というパターンは、`wzv.win.tue.nl´.  とい
              うホスト名とマッチして いる。

       •      `.'  で終わる語。もし、ホストアドレスの前部の数値フィールドが、  この語と一致するな
              ら、それはマッチしている。例えば、`131.155.´ というパターンは、Eindhoven University
              network (131.155.x.x)に 属する (ほぼ)全てのホストのアドレスにマッチしている。

       •      `@´ で始まる語は、NIS (かつての YP) のネットグループ名として扱 われる。もし、ホスト
              がそこで明示されたネットグループ名のメンバー   である場合は一致したものとなる。この
              ネットグループのマッチは、デー   モンプロセス名やクライアントユーザー名のためにはサ
              ポートされてい ない。

       •      `n.n.n.n/m.m.m.m´  という形式は`net/mask´  の一対として解釈され  る。ホストアドレス
              は、`net´ から見て正ビット方向にあり、かつ `mask´  でマスクされた範囲内にある場合に
              一致する。たとえば、   net/mask  が  `131.155.72.0/255.255.254.0´となるパターンは、
              `131.155.72.0´ から `131.155.73.255´までの範囲にある全てのアド レスにマッチする。

WILDCARDS

       アクセスコントロールの書式は、平易なワールドカード群をサポートし ている:

       ALL    すべてに合致する万能なワイルドカード。

       LOCAL  ドット文字を持たない全てのホストにマッチ。

       UNKNOWN
              名前の明らかでないユーザーにマッチ。そして名前 または アド レスが不明な全てのホスト
              にマッチ。

              この形式は注意を持って使用すべきである:ホスト名は、一時的なネー  ムサーバーの問題に
              より、使えない場合がありうる。また、ネットワー     クアドレスは、ソフトウェアから見
              て、どんなタイプのネットワークと 会話しているのか、特定できない場合は利用できなくな
              る。

       KNOWN  名前の明らかなユーザーにマッチする。さらに、名前  アドレ スの明らかなホストにマッ
              チする。

              この形式は注意を持って使用すべきである:ホスト名は、一時的なネー  ムサーバーの問題に
              より、使えない場合がありうる。また、ネットワー     クアドレスは、ソフトウェアから見
              て、どんなタイプのネットワークと 会話しているのか、特定できない場合は利用できなくな
              る。

       PARANOID
              名前とアドレスの一致しない全てのホストにマッチする。もし tcpd が -DPARANOID (これは
              デフォルトである) で作成されているなら、アクセ スコントロールテーブルが参照されるよ
              り前に、そのようなクライアン トからの要求は落とされてしまう。そのような要求を、さら
              にコントロー ルしたい場合は -DPARANOID を外して tcpd を構築する事。

OPERATORS

       EXCEPT 基本的には、次に示すような形式で使用する:  `list_1  EXCEPT list_2´;これは list_2 に
              マッチするものを除く、 list_1 にマッチするもの全て、に合致する。この EXCEPT 演算 子
              は、daemon_lists  と client_lists の中でも使用できる。EXCEPT 演 算子は、ネスト(入れ
              子に)して使う事もできる:   もしコントロール書式    が丸括弧を使う事を許可していたな
              ら、`a EXCEPT b EXCEPT c´は、 `(a EXCEPT (b EXCEPT c))´ と解釈されるであろう。

SHELL COMMANDS

       もし、最初にマッチしたアクセスコントロールのルールがシェルコマン  ドを含んでいるなら、その
       コマンドは、%<letter>   の置き換え(次のセ    クションを参照)    があると仮定される。その結
       果、/bin/sh  の子  プロセスが標準入力を伴って実行され、出力とエラーは  /dev/null  へ送られ
       る。もし、そのプロセスが終了するまで待ち たくない場合には、コマンドの末尾に `&´ が明示する
       こと。

       シェルコマンドは、inetd   の  PATH  設定と関連させてはいけない。代わ  りに絶対パスを用いる
       か、冒頭で明示的に PATH=whatever を宣言する べきである。

       hosts_options(5) の文書では、互換性のない異なる方法でシェ ルコマンドのフィールドを使うため
       の、もうひとつの書式を解説してい る。

% EXPANSIONS

       シェルコマンドの中では下記の拡張表記が利用できる:

       %a (%A)
              クライアント (サーバー) ホストのアドレス。

       %c     クライアントの情報:  user@host, user@address. ホスト名か単にアド レスかは、利用でき
              る情報に依存する。

       %d     デーモンプロセス名 (argv[0] の値)。

       %h (%H)
              クライアント (サーバー) ホストの名前、もしホスト名が利用できない 場合には、そのアド
              レス。

       %n (%N)
              クライアント (サーバー) ホストの名前 (もしくは、"unknown" あるい は "paranoid")。

       %p     デーモンプロセスの id。

       %s     サーバーの情報:  daemon@host, daemon@address, あるいは単にデーモ ンの名前。これは利
              用できる情報に依存する。

       %u     クライアントのユーザー名 (もしくは、"unknown")。

       %%     文字 `%´ へ展開される。

       % の展開が行なわれることによって、シェルを混乱させる可能性のある  文字群は、アンダースコア
       へと置き換えられる。

SERVER ENDPOINT PATTERNS

       接続されているネットワークアドレスによって、クライアントを厳密に  区別するためには、以下の
       形式でパターンを記述する:

          process_name@host_pattern : client_list ...

       このようなパターンは、マシンが複数の異なるインターネットのホスト  名とインターネットのアド
       レスを持っている場合に使用する。サービス    プロバイダは、異なる組織に属するようなインター
       ネット上の名前を持  つFTP,  GOPHER   あるいは   WWW   を提供するために、この機能を利用でき
       る。hosts_options(5)  文書の中の `twist' のオプションも参照する事。 あるシステム (Solaris,
       FreeBSD) では、ひとつの物理的なインターフェー スが、複数のインターネットアドレスを持つ事が
       できる(それ以外のシ  ステムでは、専用のネットワークアドレス空間にあるSLIP や PPP など の疑
       似インターフェースの助けを借りなければならないだろう )。

       host_pattern は、client_lists の解説文にあった、ホスト名とアドレ  スのような、いくつかの文
       法に従うことになる。一般的には、server  endpoint  information (サーバー側末端での情報)は、
       connection-oriented serveices (コネクション指向の高いサービス)で のみ利用する事ができる。

CLIENT USERNAME LOOKUP

       クライアントホストが RFC 931 か、そこから派生したプロトコル(TAP, IDENT, RFC 1413) のどれか
       をサポートしている場合、ラッパープログ  ラムは接続の持ち主に関する、追加の情報を引き出す事
       が可能である。 クライアントユーザー名の情報が利用可能であるなら、それはクライア ントのホス
       ト名とともに記録され、次のようなパターンにマッチさせる ために使う事ができる:

          daemon_list : ... user_pattern@host_pattern ...

       デーモンラッパーは、ルールに従う形でユーザー名を探査するように振  舞うか(デフォルト)、ある
       いは常にクライアントホストに問い合わせる  のか、コンパイル時に設定可能となっている。ルール
       に従う形式でユー     ザー名の探査を行なう場合には、上の記述ルールは     daemon_listhost_pattern の両方がマッチした場合にのみ、ユーザー名の 探査を行なうであろう。

       user_pattern は、デーモンプロセスのパターンと同じ文法であり、す なわち同じワイルドカード群
       が適用される(ただしネットグループのメ  ンバーシップはサポートされない)。しかしながら、これ
       はユーザー名 の探査に独占されるべきではない。

       •      クライアントのユーザー名に関する情報は、例えばクライアントシステ ムが信用するに足り
              ないものとなっている時には、信頼する事はできな  い。一般的には、ALL と (UN)KNOWN は
              意味のあるユーザー名のパター ンのためにある。

       •      ユーザー名の探査は TCP ベースのサービスで、そして、クライアント  ホストが適切なデー
              モンを起動している場合にのみ可能である。そして、  それ以外のケースは "unknown" の結
              果を得る事になる。

       •      ユーザー名の探査がファイヤーウォールによって阻まれた場合、有名な UNIX  カーネルのバ
              グがサービスに損害をもたらすかもしれない。 wrapper の README 文書には、あなたのカー
              ネルに、このバグが存在す るかどうかを調べる手順が紹介されている。

       •      ユーザー名の探査は、non-UNIX ユーザーに対して行なわれた場合、著  しく遅くなるかも知
              れない。ユーザー名の探査がタイムアウトで終了す  るまでの既定値は10  秒となっている:
              これは遅いネットワークにとっ ては短すぎるが、PC ユーザーをじらすには充分すぎる。

       ユーザー名の探査を選択可能とすることにより、最後の問題を軽減する      ことができる。たとえ
       ば、こんなルール:

          daemon_list : @pcnetgroup ALL@ALL

       これはユーザー名の探査を行なわない  PC ネットグループのメンバーに もマッチするだろうし、そ
       れ以外のシステムに対してはユーザー名の探 査を行なうだろう。

DETECTING ADDRESS SPOOFING ATTACKS

       多くの TCP/IP の実装に見られる sequence number generator 中の欠 陥は、侵入者が信頼できるホ
       ストであることを簡単に装い、例えばリモー  トシェルサービスを通して押し入ることを許してしま
       う。IDENT (RFC931 ほか) サービスはそのようなホストアドレスのペテンによる攻  撃を察知するた
       めに使う事ができる。

       クライアントの要求に答える前に、TCP   ラッパー群は本当のクライアン  トが実際には全く要求を
       送って来ていなかったことを発見する目的で、 IDENT サービスを使う事ができる。

       クライアントホストが IDENT サービスを用意しているなら、IDENT の 問い合わせをして、返って来
       た結果が否定的(クライアントマシンが `UNKNOWN@host') であれば、それはペテン攻撃の確固たる証
       拠となる。

       肯定的な IDENT の問い合わせ結果 (クライアントマシンは  `KNOWN@host')でも、充分に信頼できる
       とは言い切れない。単にクライ  アントのコネクションを誤魔化すよりは難しいが、それでも侵入者
       はク ライアントのコネクションと、IDENT の問い合わせの両方を偽っている 可能性がある。さらに
       は、クライアントの IDENT サーバーそのものが 嘘をついていることさえ考えられる。

       Note: IDENT の問い合わせは UDP サービスと共存して動作する事はできない。

EXAMPLES

       文法は最小限の苦労で、さまざまなタイプのアクセスコントロールが表  現可能な、柔軟なものであ
       る。この文法は二つのアクセスコントロール  のリストが必要なのだが、身もフタもない方策として
       は、片方のリスト を極めて単純なものとするか、空にしておくことが挙げられる。

       以下の記述例を読むにあたっては、allow  の記述は deny の記述より先 に検索され、その検索は最
       初にマッチしたもので終了となり、マッチし  たものが全く見つからない場合には、アクセスは承認
       される、というこ とをはっきりと理解しておくことが重要である。

       記述例はホストとドメインの名前を使う。ネームサーバーへの問い合わ  せが一時的に失敗した場合
       の影響を軽減するためには、これらにアドレ ス、かつ、あるいは network/netmask の情報を含める
       ことで、改善す る事ができる。

MOSTLY CLOSED (ほぼ閉鎖)

       この場合、アクセスはデフォルトで拒絶される。明示的に権限を授けら  れたホストのみがアクセス
       を許される。

       デフォルトのポリシー(no access)は、単に deny file の中で記述され る:

       /etc/hosts.deny:
          ALL: ALL

       これによって、allow file の中のエントリでアクセスが許可されない 限り、全てのホストへのサー
       ビスは拒否となる。

       明示的に権限を授けるホストは、allow file の中でリストされる。記 述例:

       /etc/hosts.allow:
          ALL: LOCAL @some_netgroup
          ALL: .foobar.edu EXCEPT terminalserver.foobar.edu

       最初のルールでは、ローカルドメイン(ホスト名に  `.´を必要としない) と、some_netgroup に属す
       るホストからのアクセスが許可されて    いる。二番目のルールでは、terminalserver.foobar.edu.
       を除  くfoobar.edu ドメイン(ドットで始まることが宣言されている) の、全てのホストからのアク
       セスが許可されている。

MOSTLY OPEN (ほぼ解放)

       明示的にサービスを拒否するホストを除き、アクセスはデフォルトで許 可となる。

       デフォルトのポリシー(access granted) に従えば、どんな allow file  でも、まったく省略可能な
       ほど冗長なものとなる。明示的に権限を与え ないホストは、deny file にリストする。記述例:

       /etc/hosts.deny:
          ALL: some.host.name, .some.domain
          ALL EXCEPT in.fingerd: other.host.name, .other.domain

       最初のルールでは、いくつかのホストと、ドメインへの全てのサービス    が拒否される。二番目の
       ルールでは、それ以外のホストとドメインから の finger  リクエストに限って許可が与えられてい
       る。

BOOBY TRAPS (ひっかけ罠)

       次のサンプルはローカルドメインのホスト(ドットで始まる事が宣言さ  れている)からの tftp リク
       エストを許可するものである。それ以外の  ホストからのリクエストは拒否される。そして要求され
       たファイルの代  わりに、finger  の探り針がその無礼なるホストへと放たれる。結果は  スーパー
       ユーザーへメイルで送られる。

       /etc/hosts.allow:
          in.tftpd: LOCAL, .my.domain

       /etc/hosts.deny:
          in.tftpd: ALL: (/some/where/safe_finger -l @%h | \
               /usr/ucb/mail -s %d-%h root) &

       safe_finger コマンドは tcpd wrapper に付属しており、適切な場所に  インストールされるべきで
       ある。これはリモートの  finger サーバーか ら送られてくるデータによってダメージが与えられる
       可能性を制限して る。これは標準の finger コマンドよりも優れた防御をもたらす。

       %h (client host) と %d (service name) の展開については、shell commands  のセクションで解説
       されている。

       警告:  finger の無限ループへの対処ができないなら、あなた自身の finger デーモンに対して、こ
       の booby-trap (引っかけ罠) を仕掛けな い事。

       ネットワークファイヤーウォールにおいては、このトリックはさらに大    幅に拡張することができ
       る。典型的なネットワークファイヤーウォール  は、外部に対して限定されたサービスしか提供しな
       い。それ以外のサー ビスは、上記の tftp の例のように "盗聴" することができる。その結 果、極
       めて優れた早期警戒装置となる。

DIAGNOSTICS

       以下の場合にエラーが報告される。ホストコントロールファイルに文法      エラーが見つかった場
       合。アクセスコントロールのルールの長さが内部  のバッファの容量を越えた場合。アクセスコント
       ロールのルールが、改 行文字によって終わっていない場合。%<letter> 展開の結果、内部バッ ファ
       が溢れてしまった場合。期待に反して、システムコールが失敗した  場合。すべての問題は、syslog
       デーモンを通じて報告される。

FILES

       /etc/hosts.allow, アクセスを許可する (daemon,client) のペア。
       /etc/hosts.deny, アクセスを拒否する (daemon,client) のペア。

SEE ALSO

       tcpd(8) tcp/ip daemon wrapper プログラム
       tcpdchk(8), tcpdmatch(8), test programs.

BUGS

       ネームサーバーの問い合わせがタイムアウトとなると、ホスト名は、た  とえ登録されていても、ア
       クセスコントロールソフトからは利用できな い。

       ドメインネームサーバーの問い合わせは、大文字小文字を同一視する。 一方 NIS (かつての YP) の
       ネットグループは、大文字小文字を区別す る。

AUTHOR

       Wietse Venema (wietse@wzv.win.tue.nl)
       Department of Mathematics and Computing Science
       Eindhoven University of Technology
       Den Dolech 2, P.O. Box 513,
       5600 MB Eindhoven, The Netherlands

翻訳者

       FUKUSHIMA Osamu/福島於修 <fuku@amorph.rim.or.jp>

                                                                                  HOSTS_ACCESS(5)