日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
HOSTS_ACCESS(5) HOSTS_ACCESS(5) 名称 hosts_access - ホストアクセス制御ファイルの形式 解説 このマニュアルページは、クライアント (ホストの名前/アドレス、ユーザ名) とサーバ (プロセス名、ホストの名前/アドレス) パターンに基づいて簡単なア クセス制御言語を説明しています。使用例は、終わりで与えられます。性急な 読者は、素早い入門のために「使用例」のセクションにスキップするように勧 めます。 アクセス制御言語の拡張されたバージョンは、hosts_options(5) 文書に説明さ れています。拡張は、-DPROCESS_OPTIONS を付けて構築することによってプロ グラム構築時に切り替えられます。 次のテキストで、daemon は、ネットワークデーモンプロセスのプロセス名で、 client は、サービスを要求しているホストの名前および/またはアドレスで す。ネットワークデーモンプロセス名は、inetd 設定ファイルで指定されま す。 アクセス制御ファイル アクセス制御ソフトウェアは、2 つのファイルを調べます。検索は、最初の一 致で停止します: • (デーモン、クライアント) ペアが /etc/hosts.allow ファイルのエン トリと一致しているとき、アクセスは、許可されます。 • そうでなければ、(デーモン、クライアント) ペアが /etc/hosts.deny ファイルのエントリと一致しているとき、アクセスは、拒否されます。 • そうでなければ、アクセスは、許可されます。 存在しないアクセス制御ファイルは、あたかもそれが空のファイルであったか のように扱われます。したがって、アクセス制御ファイルを提供しないことに よって、アクセス制御をオフに切り替えることができます。 アクセス制御規則 各アクセス制御ファイルは、テキストの 0 以上の行から成ります。これらの行 は、現れる順序で処理されます。一致が見つけられるとき、検索は、終了しま す。 • 改行文字は、バックスラッシュ文字が先行されるとき、無視されます。 これは、それらがより容易に編集することができるように、長い行を分 割することを利用者に許可します。 • 空行または `#' 文字で始まる行は、無視されます。これは、テーブル が簡単に読み込みができるように、コメントと空白類を挿入することを 利用者に許可します。 • すべての他の行は、[] の間のものがオプションとなる、次の形式を満 たしているべきです: daemon_list : client_list [ : shell_command ] daemon_list は、1 つ以上のデーモンプロセスの名前 (argv[0] の値) または ワイルドカード (以下を参照) のリストです。 client_list は、クライアントのホスト名またはアドレスに対して一致する、1 つ以上のホストの名前、ホストのアドレス、パターン、またはワイルドカード (以下を参照) のリストです。 より複雑な形式 daemon@host と user@host は、それぞれ、サーバ終点パター ンとクライアントユーザ名検索のセクションで説明されます。 リストの要素は、空白および/またはコンマによって区切られるべきです。 NIS (YP) netgroup 検索を除いて、すべてのアクセス制御チェックは、大文字 と小文字を区別しません。 パターン アクセス制御言語は、次のパターンを実装しています: • `.' 文字で始まる文字列。ホスト名は、その名前の最後の構成要素が、 指定されたパターンと一致するなら、一致しています。例えば、パター ン `.tue.nl' は、ホスト名 `wzv.win.tue.nl' と一致します。 • `.' 文字で終わる文字列。ホストアドレスは、その最初の数値フィール ドが、与えられた文字列と一致するなら、一致します。例えば、パター ン `131.155.' は、Eindhoven University ネットワーク (131.155.x.x) の (ほとんど) すべてのホストのアドレスと一致しま す。 • `@' 文字で始まる文字列は、NIS (以前の YP) netgroup 名として扱わ れます。ホスト名は、それが、指定された netgroup のホストのメンバ であるなら、一致します。一致する netgroup は、デーモンプロセス名 またはクライアントユーザ名に対してサポートされていません。 • 形式 `n.n.n.n/m.m.m.m' の表現は、`net/mask' ペアとして解釈されま す。ホストアドレスは、`net' がアドレスと `mask' のビット単位の論 理積 (AND) と等しいなら、一致します。例えば、net/mask パターン `131.155.72.0/255.255.254.0' は、`131.155.72.0' から `131.155.73.255' までの範囲で、すべてのアドレスと一致します。 • 形式 `[n:n:n:n:n:n:n:n]/m' の表現は、`[net]/prefixlen' ペアとし て解釈されます。IPv6 ホストアドレスは、`net' の `prefixlen' ビッ トががアドレスの `prefixlen' ビットと等しいなら、一致します。例 えば、[net]/prefixlen パターン `[3ffe:505:2:1::]/64' は、 `3ffe:505:2:1::' から `3ffe:505:2:1:ffff:ffff:ffff:ffff' までの 範囲ですべてのアドレスと一致します。 • `/' 文字で始まる文字列は、ファイル名として扱われます。ホスト名ま たはアドレスは、それが、指定されたファイルにリストされたあらゆる ホスト名またはアドレスパターンと一致するなら、一致します。ファイ ル形式は、空白類によって区切られた、0 以上のホスト名またはアドレ スパターンがある 0 以上の行です。ホストの名前か、またはアドレス パターンを使用することができるところなら、どこでもファイル名のパ ターンを使用することができます。 ワイルドカード アクセス制御言語は、明示的なワイルドカードをサポートします: ALL 一般的なワイルドカードは、常に一致します。 LOCAL 名前がドット文字を含まないあらゆるホストと一致します。 UNKNOWN 名前が未知であるあらゆるユーザに一致し、名前またはアドレスが未知 である、あらゆるホストに一致します。このパターンは、注意して使用 されるべきです: ホスト名は、一時的なネームサーバ問題のため利用で きないかもしれません。ネットワークアドレスは、ソフトウェアが、そ れが通信しているどのようなネットワークのタイプであるかを理解でき ないとき、利用可能ではありません。 KNOWN 名前が知られているあらゆるユーザに一致し、名前とアドレスが、知ら れているあらゆるホストと一致します。このパターンは、注意して使用 されるべきです: ホスト名は、一時的なネームサーバの問題のために利 用可能ではありません。ネットワークアドレスは、ソフトウェアが、そ れが通信しているどのようなネットワークのタイプであるかを理解でき ないとき、利用可能ではありません。 PARANOID 名前が、そのアドレスと一致しないあらゆるホストと一致します。tcpd が -DPARANOID (デフォルトモード) で構築されるとき、それは、アク セス制御テーブルを検索する前でさえ、そのようなクライアントから要 求を落します。利用者がそのような要求を越えて多くの制御を望んでい るとき、-DPARANOID なしで構築します。 演算子 EXCEPT 意図されている使用は、次に形式があります: `list_1 EXCEPT list_2'。この構成は、それが list_2 と一致していないなら、list_1 と一致しているいずれにも一致します。daemon_lists と client_lists で、EXCEPT 演算子を使用することができます。EXCEPT 演算子は、ネス ティング (入れ子) することができます: 制御言語が括弧の使用を許可 するなら、`a EXCEPT b EXCEPT c' は、`(a EXCEPT (b EXCEPT c))' と して解析されます。 シェルコマンド 最初に一致しているアクセス制御規則が、シェルコマンドを含んでいるなら、 そのコマンドは、%<letter> 置換 (次のセクション参照) の対象になります。 結果は、/dev/null に接続している標準入力、出力とエラーで、/bin/sh の子 プロセスによって実行されます。利用者が、それが完了するまで、待ちたくな いなら、コマンドの終わりに `&' を指定します。 シェルコマンドは、inetd の PATH の設定に依存するべきではありません。代 わりに、それらは、絶対パス名を使用するべきか、または、それらは、明示的 な PATH=whatever 文で始めるべきです。 hosts_options(5) 文書は、異なっていて互換性がない方法でシェルコマンドの フィールドを使用する代替の言語を説明しています。 % の展開 次の展開は、シェルコマンド内で利用可能です: %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")。 %% 単一の `%' 文字に展開します。 シェルを混乱するかもしれない % 展開の文字は、下線によって置き換えられま す。 サーバ終点パターン それらが接続するネットワークアドレスによってクライアントを区別するため に、次の形式のパターンを使用します: process_name@host_pattern : client_list ... マシンが異なったインターネットホスト名で異なったインターネットアドレス があるとき、これらに似たパターンを使用することができます。サービスプロ バイダは、異なった組織に属することさえある、インターネット名で FTP、 GOPHER または WWW アーカイブを提供するために、この機能を使用することが できます。hosts_options(5) 文書の `twist' オプションも参照してくださ い。いくつかのシステム (Solaris、FreeBSD) は、1 つの物理的なインタ フェースで複数のインターネットアドレスを持つことができます。他のシステ ムで、利用者は、専門のネットワークアドレス空間で生きている SLIP または PPP 疑似インタフェースを頼る必要があるかもしれません。 host_pattern は、client_list コンテキストでホスト名とアドレスとして同じ 構文規則に従います。通常、サーバの終点情報は、接続指向のサービスだけの ために利用可能です。 クライアントユーザ名の検索 クライアントホストが RFC 931 プロトコルまたはその派生 (TAP, IDENT, RFC 1413) の 1 つをサポートするとき、ラッパプログラムは、接続の所有者に関す る追加の情報を検索することができます。クライアントのユーザ名の情報は、 利用可能なとき、クライアントホスト名とともにログ記録され、次のようなパ ターンと一致するために使用することができます: daemon_list : ... user_pattern@host_pattern ... デーモンラッパは、規則駆動 (rule-driven) のユーザ名検索 (デフォルト) を 実行するためか、または常にクライアントホストに問い合わせするために、コ ンパイル時で設定することができます。規則駆動のユーザ名検索の場合に、上 記の規則は、daemon_list と host_pattern の両方が一致しているときのみ、 ユーザ名の検索を引き起こします。 ユーザパターンは、デーモンプロセスパターンと同じ構文があるので、同じワ イルドカードが、適用されます (netgroup メンバシップは、サポートされませ ん)。しかし、ユーザ名検索にわれを忘れるべきできではありません。 • クライアントのユーザ名の情報は、それが最も必要なとき、信頼するこ とができません、すなわち、クライアントシステムが信用できなくなっ たとき。一般的に、ALL と (UN)KNOWN は、意味がある唯一のユーザ名 のパターンです。 • ユーザ名の検索は、TCP ベースのサービスのみ、とクライアントホスト が適切なデーモンを実行するときのみ、可能です。すべての他の場合 に、結果は、"unknown" です。 • 良く知られている UNIX カーネルバグは、ユーザ名の検索がファイア ウォールによってブロックされるとき、サービスの損失を起こします。 ラッパの README 文書は、利用者のカーネルにこのバグがあるかを調べ るために手続きを記述しています。 • ユーザ名の検索は、UNIX でないユーザに対して顕著な遅延を起こすか もしれません。ユーザ名の検索のためのデフォルトのタイムアウトは、 10 秒です: 遅いネットワークに対処するためには短すぎますが、PC ユーザをいらいらさせるためには十分に長い時間です。 選択的なユーザ名の検索は、最後の問題を緩和することができます。例えば、 規則は、次のようになります: daemon_list : @pcnetgroup ALL@ALL これは、ユーザ名の検索を行なわずに pc netgroup のメンバと一致しています が、すべての他のシステムでユーザ名の検索を実行します。 アドレスなりすまし攻撃の検出 多くの TCP/IP 実装のシーケンス番号のジェネレータの欠陥によって、侵入者 は、信頼されたホストを容易にまねをして、例えば、リモートのシェルサービ スを通して、侵入することができます。そのようなものと他のホストのアドレ スのなりすまし攻撃を検出するために IDENT (RFC931 など) サービスを使用す ることができます。 クライアント要求を受け付ける前に、ラッパは、クライアントが全然要求を送 らなかったことを見つけるために、IDENT サービスを使用することができま す。クライアントホストが IDENT サービスを提供するとき、否定の IDENT 検 索結果 (クライアントが、`UNKNOWN@host' と一致している) は、ホストのなり すまし攻撃の強い証拠です。 肯定の IDENT 検索結果 (クライアントは、`KNOWN@host' と一致している) は、それほど信頼することができません。そうすることは、単にクライアント 接続をなりすますより難しいですが、クライアント接続と IDENT 検索の両方を 偽ることが侵入者に可能です。また、それは、クライアントの IDENT サーバが 偽るかもしれません。 注: IDENT 検索は、UDP サービスで動作しません。 使用例 言語は、アクセス制御ポリシの異なったタイプをできるだけ手間を省いて表現 することができることに十分に柔軟です。言語は、2 つのアクセス制御テーブ ルを使用しますが、ささいなことか、または空でさえあるテーブルの 1 つで、 最も共通のポリシを実装することができます。 以下の例を読み込むとき、テーブルが、拒否するテーブルの前で、スキャンさ れることを許可して、一致が見つけられるとき、検索が終わり、一致がまった く見つからないとき、アクセスが許可されることを気がつくことは、重要で す。 例は、ホストとドメイン名を使用します。それらは、一時的なネームサーバ検 索の失敗の影響を減らすためにアドレスおよび/またはネットワーク/ネットマ スク情報を含むことによって改良することができます。 ほとんどクローズされる この場合に、アクセスは、デフォルトで拒否されます。明示的に権限があるホ ストだけが、アクセスを許可されます。 デフォルトのポリシ (アクセスなし) は、ささいな否定ファイルで実装されま す: /etc/hosts.deny: ALL: ALL これは、許可するファイルのエントリによって許可されたアクセスでないな ら、すべてのホストへのすべてのサービスを拒否します。 明示的に認可されるホストは、許可するファイルにリストされます。例えば: /etc/hosts.allow: ALL: LOCAL @some_netgroup ALL: .foobar.edu EXCEPT terminalserver.foobar.edu 最初の規則は、ローカルなドメインの (ホスト名に `.' がない) ホストからと some_netgroup netgroup のメンバからのアクセスを許可します。2 番目の規則 は、terminalserver.foobar.edu を除いて、foobar.edu ドメイン (先導する ドットに注意) のすべてのホストからアクセスを許可します。 ほとんどオープンされる ここで、アクセスは、デフォルトで許可されます。明示的に指定されたホスト だけが、サービスを拒否されます。 デフォルトのポリシ (許可されたアクセス) は、それが省略することができる よう、許可されたファイルを冗長にします。明示的に権限があたえられないホ ストは、拒否ファイルにリストされます。例えば: /etc/hosts.deny: ALL: some.host.name, .some.domain ALL EXCEPT in.fingerd: other.host.name, .other.domain 最初の規則は、すべてのサービスについて、いくつかのホストとドメインを拒 否します。2 番目の規則は、まだ他のホストとドメインから finger 要求を許 可します。 ブービートラップ 次の例は、ローカルなドメイン (先導するドットに注意) のホストから 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 コマンドは、back-finger で使用することを目的にされ、適切な 場所にインストールされるべきです。それは、リモートの finger サーバに よって送信されたデータからの損傷の可能性を制限します。それは、標準の finger コマンドよりよい保護を与えます。 %h (クライアントホスト) と %d (サービス名) シーケンスの展開は、シェルコ マンドのセクションに記述されています。 警告: 利用者が無限の finger ループの準備をしないなら、利用者の finger デーモンにブービートラップを仕掛けません。 ネットワークのファイアウォールシステムで、さらにもっと、このトリックを 扱うことができます。典型的なネットワークのファイアウォールは、外側の世 界へのサービスの制限された集合のみを提供します。ちょうど上記の tftp の 例のように、すべての他のサービスを "盗聴" することができます。結果は、 優れた早期警戒システムです。 診断 構文エラーがホストのアクセス制御規則で見つかるとき、アクセス制御規則の 長さが内部のバッファのケーパビリティを越えているとき、アクセス制御規則 が改行文字のため終了されなかったとき、%<letter> 展開の結果が、内部の バッファをオーバフローされるとき、失敗するべきではないシステムコールが 失敗するとき、エラーが、報告されます。すべての問題は、syslog デーモンを 通して報告されます。 実装に関する注 いくつかのオペレーティングシステムは、基本のシステムの一部として TCP ラッパとともに配布されます。ネットワーク化ユーティリティにラッピング機 能を構築するためにそのようなシステムために共通です。特に、いくつかのシ ステムは、tcpd(8) の使用を要求しない inetd(8) を提供しています。詳細に ついては、利用者のシステムの文書をチェックしてください。 関連ファイル /etc/hosts.allow, アクセスを許可される (daemon,client) のペア. /etc/hosts.deny, アクセスを拒否される (daemon,client) のペア. 関連項目 tcpd(8) tcp/ip デーモンラッパプログラム. tcpdchk(8), tcpdmatch(8), テストプログラム. バグ ネームサーバの検索がタイムアウトするならホストの名前は、たとえホストが 登録されても、アクセス制御ソフトウェアに利用可能ではありません。 ドメインネームサーバの検索は、大文字と小文字を区別しません。NIS (以前の YP) netgroup 検索は、大文字と小文字を区別します。 作者 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 HOSTS_ACCESS(5)