|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > h > hosts_access - ファイルのフォーマットと規約の説明 hosts_access - ファイルのフォーマットと規約の説明 - Linux コマンド集 一覧表
NAMEhosts_access - ホストアクセスコントロールファイルの書式 DESCRIPTIONこのマニュアルページは、クライアント (ホストネーム/アドレス、ユー ザー名) サーバー (プロセス名、ホストネーム/アドレス) 間の単純な アクセス制御の記述法を解説するものである。具体的な設定例は末尾に 示すので、てっとりばやい設定を望むせっかちな読者は、"設定例" の セクションへと進んで欲しい。 アクセスコントロール書法の拡張された部分に関しては、 hosts_options (5) の文書で解説する。この拡張は、プログラム が -DPROCESS_OPTIONS を指定して作成されたかどうかに左右される。 以下の文章では、daemon とはネットワークデーモンのプロセス 名を意味し、client とは、サービスを要求するホストの名前、 もしくはホストのアドレスを意味している。ネットワークデーモンのプ ロセス名は、inetd の設定ファイル中に明示されている。 ACCESS CONTROL FILES
アクセスコントロールのソフトウェアは、二つのファイルを参照する。
最初に一致した時点で検索は終了する。
アクセスコントロールのファイルが存在しない場合は、それらのファイ ルが空であったとみなされる。したがって、アクセスコントロールは、 アクセスコントロールファイルを準備しない事によって停止する事がで きる。 ACCESS CONTROL RULES
どちらのアクセスコントロールファイルも、0 行以上のテキストで構成
されている。これらの行は出現順に処理される。検索はマッチする行が
現れた時点で終了となる。
daemon_list は、ひとつ以上のデーモンプロセス名 (argv[0] の値) または、ワイルドカード (後述) を使ったリストである。 client_list は、ひとつ以上の、ホスト名、ホストアドレス、ま たは、ワイルドカード (後述) を使った、クライアントのホスト名かア ドレスにマッチするパターンのリストである。 複合化された daemon@host や user@host という形式は、 それぞれ SERVER ENDPOINT PATTERNS および CLIENT USERNAME LOOKUP のセクションで解説する。 リストの各要素は空白、またはカンマで分けなければいけない。 NIS (かつての YP) の netgroup 問い合わせという例外を除いては、 全てのアクセスコントロールのチェックは大文字小文字を同一視して行 なわれる。 PATTERNS
アクセスコントロールの書式は以下のようなパターンを満たすものであ
る。
WILDCARDS
アクセスコントロールの書式は、平易なワールドカード群をサポートし
ている:
OPERATORS
SHELL COMMANDSもし、最初にマッチしたアクセスコントロールのルールがシェルコマン ドを含んでいるなら、そのコマンドは、%<letter> の置き換え(次のセ クションを参照) があると仮定される。その結果、/bin/sh の子 プロセスが標準入力を伴って実行され、出力とエラーは /dev/null へ送られる。もし、そのプロセスが終了するまで待ち たくない場合には、コマンドの末尾に `& が明示すること。 シェルコマンドは、inetd の PATH 設定と関連させてはいけない。代わ りに絶対パスを用いるか、冒頭で明示的に PATH=whatever を宣言する べきである。 hosts_options (5) の文書では、互換性のない異なる方法でシェ ルコマンドのフィールドを使うための、もうひとつの書式を解説してい る。 % EXPANSIONS
シェルコマンドの中では下記の拡張表記が利用できる:
% の展開が行なわれることによって、シェルを混乱させる可能性のある 文字群は、アンダースコアへと置き換えられる。 SERVER ENDPOINT PATTERNS
接続されているネットワークアドレスによって、クライアントを厳密に
区別するためには、以下の形式でパターンを記述する:
CLIENT USERNAME LOOKUPクライアントホストが RFC 931 か、そこから派生したプロトコル(TAP, IDENT, RFC 1413) のどれかをサポートしている場合、ラッパープログ ラムは接続の持ち主に関する、追加の情報を引き出す事が可能である。 クライアントユーザー名の情報が利用可能であるなら、それはクライア ントのホスト名とともに記録され、次のようなパターンにマッチさせる ために使う事ができる: daemon_list : ... user_pattern@host_pattern ... デーモンラッパーは、ルールに従う形でユーザー名を探査するように振 舞うか(デフォルト)、あるいは常にクライアントホストに問い合わせる のか、コンパイル時に設定可能となっている。ルールに従う形式でユー ザー名の探査を行なう場合には、上の記述ルールは daemon_list と host_pattern の両方がマッチした場合にのみ、ユーザー名の 探査を行なうであろう。 user_pattern は、デーモンプロセスのパターンと同じ文法であり、す
なわち同じワイルドカード群が適用される(ただしネットグループのメ
ンバーシップはサポートされない)。しかしながら、これはユーザー名
の探査に独占されるべきではない。
ユーザー名の探査を選択可能とすることにより、最後の問題を軽減する ことができる。たとえば、こんなルール: daemon_list : @pcnetgroup ALL@ALL これはユーザー名の探査を行なわない PC ネットグループのメンバーに もマッチするだろうし、それ以外のシステムに対してはユーザー名の探 査を行なうだろう。 DETECTING ADDRESS SPOOFING ATTACKS多くの TCP/IP の実装に見られる sequence number generator 中の欠 陥は、侵入者が信頼できるホストであることを簡単に装い、例えばリモー トシェルサービスを通して押し入ることを許してしまう。IDENT (RFC931 ほか) サービスはそのようなホストアドレスのペテンによる攻 撃を察知するために使う事ができる。 クライアントの要求に答える前に、TCP ラッパー群は本当のクライアン
トが実際には全く要求を送って来ていなかったことを発見する目的で、
IDENT サービスを使う事ができる。
肯定的な IDENT の問い合わせ結果 (クライアントマシンは `KNOWN@host')でも、充分に信頼できるとは言い切れない。単にクライ アントのコネクションを誤魔化すよりは難しいが、それでも侵入者はク ライアントのコネクションと、IDENT の問い合わせの両方を偽っている 可能性がある。さらには、クライアントの IDENT サーバーそのものが 嘘をついていることさえ考えられる。 Note: IDENT の問い合わせは UDP サービスと共存して動作する事はできない。 EXAMPLES文法は最小限の苦労で、さまざまなタイプのアクセスコントロールが表 現可能な、柔軟なものである。この文法は二つのアクセスコントロール のリストが必要なのだが、身もフタもない方策としては、片方のリスト を極めて単純なものとするか、空にしておくことが挙げられる。 以下の記述例を読むにあたっては、allow の記述は deny の記述より先 に検索され、その検索は最初にマッチしたもので終了となり、マッチし たものが全く見つからない場合には、アクセスは承認される、というこ とをはっきりと理解しておくことが重要である。 記述例はホストとドメインの名前を使う。ネームサーバーへの問い合わ せが一時的に失敗した場合の影響を軽減するためには、これらにアドレ ス、かつ、あるいは network/netmask の情報を含めることで、改善す る事ができる。 MOSTLY CLOSED (ほぼ閉鎖)この場合、アクセスはデフォルトで拒絶される。明示的に権限を授けら れたホストのみがアクセスを許される。 デフォルトのポリシー(no access)は、単に deny file の中で記述され る: /etc/hosts.deny:
これによって、allow file の中のエントリでアクセスが許可されない 限り、全てのホストへのサービスは拒否となる。 明示的に権限を授けるホストは、allow file の中でリストされる。記 述例: /etc/hosts.allow:
最初のルールでは、ローカルドメイン(ホスト名に `.を必要としない) と、some_netgroup に属するホストからのアクセスが許可されて いる。二番目のルールでは、terminalserver.foobar.edu . を除 くfoobar.edu ドメイン(ドットで始まることが宣言されている) の、全てのホストからのアクセスが許可されている。 MOSTLY OPEN (ほぼ解放)明示的にサービスを拒否するホストを除き、アクセスはデフォルトで許 可となる。 デフォルトのポリシー(access granted) に従えば、どんな allow file でも、まったく省略可能なほど冗長なものとなる。明示的に権限を与え ないホストは、deny file にリストする。記述例: /etc/hosts.deny:
最初のルールでは、いくつかのホストと、ドメインへの全てのサービス が拒否される。二番目のルールでは、それ以外のホストとドメインから の finger リクエストに限って許可が与えられている。 BOOBY TRAPS (ひっかけ罠)次のサンプルはローカルドメインのホスト(ドットで始まる事が宣言さ れている)からの tftp リクエストを許可するものである。それ以外の ホストからのリクエストは拒否される。そして要求されたファイルの代 わりに、finger の探り針がその無礼なるホストへと放たれる。結果は スーパーユーザーへメイルで送られる。 /etc/hosts.allow:
in.tftpd: LOCAL, .my.domain 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 1.20 95/01/30 19:51:46
|
|