次のページ 前のページ 目次へ

Tcp_wrappers HOWTO

Yoshio Shimamura <yoshios@green.ocn.ne.jp>

v1.0, 29 July 2000
この文書は、Tcp_wrappers の導入と設定に関する HOWTO です。 この文書の最新版は http://hp.vector.co.jp/authors/VA004572/index.html から入手可能です。

Contents

1 概要
2 /etc/hosts.deny
3 /etc/hosts.allow
4 設定状況の確認
5 特定ホストに対する設定の確認
6 /etc/inetd.confの設定
7 inetdの再起動

1 概要

インターネットデーモン(inetd)経由のサービスにアクセス制御を実装する機能を提供するもの。

tcpdはinetdから起動されると、/etc/hosts.allowと/etc/hosts.denyとに設定された情報をもとにサービスを実行するかどうか判断する。

ファイアーウォールは、ホスト群をまとめてアクセス制御するのに使われるが、tcp_wrappersは、ホスト単体のアクセス制御を行うものである。

2 /etc/hosts.deny

デフォルトでは、何も設定されていないので、そのままインターネットに繋いではいけない。
ALL: ALL
とりあえず上記のように、/etc/hosts.denyで全ての接続要求を拒否してから、個別に/etc/hosts.allowで必要なものだけ許可する。

3 /etc/hosts.allow

フォーマット
service-name: host-list(: command)
例えば、ホストgenesisにtelnetサービスを許可しセキュリティ担当者に接続元ホストと対象サービスの情報を送るには、次のように記述する。
in.telnetd: genesis: "mail -S tcpd secu <`echo request %d from %h`"

4 設定状況の確認

tcpdの設定状況は、tcpdchkコマンドで確認する。設定にエラーがある場合は、エラーメッセージが表示され、問題が無ければ、なにも表示されずに終了する。
# /usr/sbin/tcpdchk
チェック状況をすべて標準出力に表示したい場合は、次のようにオプションをつけて実行する。
# /usr/sbin/tcpdchk -v

5 特定ホストに対する設定の確認

特定ホストに対する設定状況は、tcpdmatchコマンドで確認する。

in.telnetdに対するホストfooのアクセス許可状況を確認

# /usr/sbin/tcpdmatch in.telnetd foo

6 /etc/inetd.confの設定

インターネットスーパーサーバINETDの設定ファイル/etc/inetd.confでは、次のようにサービスの起動をtcpdでラッピングする。 例では、TELNET接続要求を受けて、TELNETDを起動する部分である。このラッピングを忘れると折角の導入が無駄になってしまう。
telnet stream tcp  nowait  root  /usr/sbin/tcpd  in.telnetd

7 inetdの再起動

設定ファイルを書き換えたらその内容を反映させるため、次のように、PIDを取得し、インターネットスーパーサーバにハングアップシグナルを送る。 PIDは、実行時の環境によって異なるので、xxxで表している。
# ps ax | grep inetd
xxx inetd
# kill -HUP xxx

次のページ 前のページ 目次へ