クライアントからのアクセスを制御するために TCP Wrappers が参照する設定ファイルは、/etc/hosts.allow と /etc/hosts.deny です。TCP Wrappers はこれらの設定ファイルを以下の順番で解釈します。
/etc/hosts.allow で許可されているホストであれば許可
/etc/hosts.allow で許可されたホストを除き、/etc/hosts.deny で拒否されているホストであれば拒否
両方に記述がないホストは許可
/etc/hosts.allow ファイルのコメントを無視すると初期設定では以下の 2 行のみが設定されています。設定ファイルの書式については、項19.2.2 もあわせて参照してください。
ALL : 127.0.0.1 sshd : ALL |
また、/etc/hosts.deny ファイルの初期設定は以下の 1 行のみです。
ALL : ALL |
Turbolinux 10 Server の初期設定では、/etc/hosts.allow に ALL : 127.0.0.1 を指定することで、ローカルホスト(127.0.0.1)からのアクセスをすべて許可しています。また、sshd : ALL を指定することで、すべてのホストに sshd へのアクセスを許可しています。しかし、それ以外のホストからのアクセスは /etc/hosts.deny に ALL : ALL を指定することで、すべて拒否する設定となっています。したがって、TCP Wrappers によるアクセス制御を行っているサービスを提供するには、/etc/hosts.allow の編集が必要になります。通常は、Deny all アプローチに基づき、/etc/hosts.deny を変更する必要はありません。
![]() | SSH はセキュリティが強化されたプロトコルなので、sshd : ALL を指定しても通常、問題にはなりません。ただし、sshd 自体にセキュリティホールが発見された場合は、この限りではありませんので注意が必要です。 |
/etc/hosts.allow と /etc/hosts.deny の書式は同じです。以下の書式でアクセスを制御するサービス、およびホストを指定します。
daemon_list : host_list [ : command : command ...] |
アクセスを制御するサービス名を指定します。スペースまたはカンマで区切ることで複数指定することができます。ここに指定する名前は、サービスのプログラム名であることに注意してください。例えば、TELNET のサービスを提供する場合は、in.telnetd と指定する必要があります。また、すべてのサービスを指定する場合は、ALL を指定します。
アクセスを制御するホスト名、または IP アドレスを指定します。スペースまたはカンマで区切ることで複数指定することができます。ドメイン名やネットワークアドレスも指定でき、またワイルドカードも使用できるので、同一ドメインや同一ネットワークを一括して指定することもできます。指定可能なワイルドカードを以下に示します。
表 19-1. ホストの指定
| host_list の指定例 | 解説 |
|---|---|
| ALL | すべてのホストにマッチする。 |
| LOCAL | localhost のようにドット(.)を含まないホストにマッチする。 |
| UNKNOWN | アクセス元のユーザー名かホスト名のいずれかが不明な場合にマッチする。 |
| KNOWN | アクセス元のユーザー名とホスト名が両方ともわかっている場合にマッチする。 |
| PARANOID | ホスト名と IP アドレスが異なる場合にマッチする。 |
| EXCEPT | 例外 |
![]() | サービス portmap へのアクセスを制御する場合は特に注意が必要です。ホスト名での指定がサポートされていないので、IP アドレス、または ALL しか指定することができません。 |
オプションの設定項目です。daemon_list で呼び出されるサーバープログラムとは別に実行するコマンドをフルパスで指定することができます。
ここでは、アクセス制御を行うホストを特定するための指定例を示します。
192.168.0.7 の IP アドレスを持つホストにのみマッチします。
192.168.0.0 にサブネットマスク 255.255.255.240 をかけた結果の 192.168.0.0 〜 192.168.0.15 のホストにマッチする。
IP アドレスの末尾にピリオドを指定しています。この例では、192.168.x.x の IP アドレスを持つホストにマッチします。
ホスト名の先頭にピリオドを指定しています。この例では、example.com ドメインに属するすべてのホスト(host1.example.com や host2.example.com)にマッチします。
アスタリスクを使用しています。この例では、example.com ドメインに属するすべてのホスト(host1.example.com や host2.example.com)にマッチします。
ワイルドカード の EXCEPT を使用した例です。この例では、crack.example.com を除く、すべての example.com ドメインに属するホストにマッチします。
これも EXCEPT を使用した例です。/etc/hosts.allow に記述すれば、sshd を除く全てのサービスへのアクセスを IP アドレス 192.168.0.x を持つホストに許可します。