EN JA
HOSTS_OPTIONS(5)
HOSTS_OPTIONS(5) FreeBSD File Formats Manual HOSTS_OPTIONS(5)

NAME

hosts_options -ホストアクセスコントロールの拡張書式

DESCRIPTION

この文書は、hosts_access(5) で説明する文法のオプショナルな拡張について解説するものである。この拡張は、プログラムをコンパイルした際に利用の可否が決まる。例えば、Makefile を編集し、コンパイル時に PROCESS_OPTIONS を有効にした場合である。

拡張書式はこのような形式である:

 

daemon_list : client_list : option : option ...

最初のふたつのフィールドについては、hosts_access(5) のマニュアルで解説されている。ルールの残りの部分は、0 個以上のオプションの列である。オプションの中では、すべての ":"という文字はバックスラッシュによって保護される必要がある。

オプションは "keyword"または "keyword value"の形式をとる。オプション群は記述された順に解釈される。いくつかのオプションは %<letter>による置き換えを仮定している。初期のバージョンとの互換性のために、"="を keyword と value(値) の間におく事も許されている。

LOGGING (ログの記録)

severity mail.info
severity notice
イベントをログに記録する severity("激しさ") のレベルを変更する。 Facility names (供される利便の項目、たとえば mail) は任意であり、古い syslog の実装ではサポートされていない。severity オプションは、指示されたイベントを強調するか、あるいは無視するために有意である。

ACCESS CONTROL (アクセスの可否)

allow
deny
サービスの可否。これらのオプションは、ルールの最後に記述しなければならない。

allowdeny は、すべてのアクセスコントロールのルールを、ただひとつのファイル、たとえば hosts.allow に納める事を可能にしている。

 

明示されたホストだけにアクセスを許可するには:

 

ALL: .friendly.domain: ALLOW ALL: ALL: DENY

 

トラブルメイカーとなる、いくつかのホストを除いて、すべてのホストからのアクセスを許可するには:

 

ALL: .bad.domain: DENY ALL: ALL: ALLOW

 

ドメイン名のパターンの最初にはドットがついている事に注目されたい。

RUNNING OTHER COMMANDS (外部コマンドの実行)

spawn shell_command
hosts_access(5) のマニュアルで解説される %<letter>の置き換えが実行されたのちに、子プロセスで、指定のシェルコマンドを実行する。コマンドは標準入力、標準出力、そして標準エラー出力を null デバイスに繋げた状態で実行される。したがって、これによってクライアントホストとの会話が混乱するようなことはない。例えば:
 

spawn (/some/where/safe_finger -l @%h | /usr/ucb/mail root) &
 
これは、%h をリモートホストの名前またはアドレスに置き換えたのちに、バックグラウンドの子プロセスで、シェルコマンド "safe_finger -l @%h | mail root"を実行する。
 
この例では、(リモートの) finger サーバーから送られてくるデータによって、ダメージがもたらされる可能性を抑えるため、標準の "finger"コマンドに代わって "safe_finger"コマンドを利用している。この "safe_finger"コマンドは、daemon wrapper package に含まれている。これは、標準の finger の露払いとして、リモートホストから送られるデータをフィルタリングする。
twist shell_command
hosts_access(5) のマニュアルで解説される %<letter>の置き換えが実行されたのちに、現在のプロセスを、要求されたシェルコマンドで置き換える。標準入力、標準出力そして標準エラー出力は、クライアントのプロセスに接続される。このオプションはルールの最後に記述する必要がある。
 
実際の ftp デーモンに代わって、メッセージを変更してクライアントに返すには:
 

in.ftpd : ... : twist /bin/echo 421 Some bounce message
 
クライアントプロセスと会話する別の方法として、後述する banners オプションを参照されたい。
 
/some/other/in.telnetd を、コマンドラインの引数やプロセスの環境変数によって汚染されることなく実行するには:
 

in.telnetd : ... : twist PATH=/some/other; exec in.telnetd
 
警告: UDP サービスにおいては、standard I/O の利用、またはクライアントプロセスとの交信のための read(2)/write(2) ルーチンと、 command を混同しないように; UCP は、また別の基本的な I/O を必要とする。

NETWORK OPTIONS (ネットワークに関するオプション)

keepalive
定期的にサーバーはクライアントにメッセージを送るようになる。もし、クライアントからの応答がない場合、接続は切断されたものと見なされる。この keepalive オプションは、ユーザーがサーバーに継っている間に、マシンの電源を切った時に有用である。keepalive オプションは datagram (UDP) services には役に立たない。
linger number_of_seconds
サーバーのプロセスが接続を切断したのち、カーネルが未配送データの再送を試みる時間を指示する。

USERNAME LOOKUP (ユーザー名の問い合わせ)

rfc931 [ timeout_in_seconds ]
RFC 931 (TAP, IDENT, RFC 1413) にしたがう形で、クライアントユーザー名を問い合わせる。サービスが TCP 以外の転送方法に基づいている場合は、このオプションは黙って無視される。この方法はクライアントのシステムが RFC 931 と互換性のあるデーモン (IDENT など) を走らせていることが条件で、non-UNIX のクライアントからの接続に対しては、著しく遅くなるだろう。timeout までの秒数は任意である。 timeout が指示されない場合、コンパイル時に決められた初期値が使われる。

MISCELLANEOUS (その他の事項)

banners /some/directory
`/some/directory' の中で、デーモンプロセスの名前と一致するファイル (たとえば、telnet サービスなら in.tenletd)を探し、その内容をクライアントに対してコピーする。改行文字は、CR(carriage-return) 改行文字に置き換えられ、%<letter>は展開される (hosts_access(5) のマニュアルを参照)。
 
tcp wrapper の配布ソースには、手際よく banner を保守するための、サンプルの makefile (Banners.Makefile) が含まれている。
 
警告: banners は connection-oriented (TCP) network (コネクションに指向の高いサービス)でのみ利用する事ができる。
nice [ number ]
プロセスの nice 値を変更する(初期値は 10)。他のプロセスに、より多くの CPU 資源を割り当てるには、正の値を指示する。
setenv name value
(name, value) のペアをプロセスの環境変数に設定する。value は %<letter>への展開があるものと仮定され、ホワイトスペースの利用は自制する必要があるだろう(ただし、前後の空白は切り捨てられる)。
 
警告: 多くのネットワークデーモンは login または shell プロセスを再起動する前に、その環境変数をリセットする。
umask 022
シェルのビルトインコマンド umask と似た機能。022 の umask は、 group と world による書き込み禁止措置によって、ファイルの作成を予防する。umask の引数は 8 進数でなければならない。
user nobody
user nobody.kmem
ユーザー "nobody" (またはユーザー "nobody", グループ "kmem")は、特別な扱いとみなす。最初の形式は、root 権限で全てのサービスを実行するような inetdの実装で有用である。二番目の形式は、グループの権限のみが必要なサービスのために有用である。

DIAGNOSTICS

アクセスコントロールルールに文法エラーが発見された場合、エラーは syslog デーモンへ報告される。余計なオプションは無視され、サービスは拒否される。

SEE ALSO

hosts_access(5), 基本的なアクセスコントロール書式

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>