TCP Wrapper

 最近のTurbolinuxでは、昔のinetdに代わりxinetdが使われるようになった為、inetdのセキュリティ強化の為に利用されていたTCP Wrapperは、本来の目的では使われなくなりました。しかし、OpenSSHなど、デーモンとして常駐するプログラムに対するアクセス制御の手段としては利用されています。

基本ファイル

 TCP Wrapperを利用したアクセス制御は、アクセス許可ファイルの/etc/hosts.allowと、アクセス拒否ファイルの/etc/hosts.denyに書かれた内容に従って実行されます。アクセス制御のポリシーは以下のようになっています。

 1) アクセス拒否ファイルに記述されているホストからのアクセスを拒否する。

 2) アクセス許可ファイルに記述されているホストからのアクセスを許可する。

 3) 記述されていないアクセスは許可する。

アクセス制御の適用順位は「アクセス拒否」→「アクセス許可」となります。どちらにも記述されている場合は、「アクセス許可」が優先されます。ですから、通常はアクセス拒否ファイルに全てのアクセスを拒否するよう設定し、アクセスを許可するホストをアクセス許可ファイルに記述すると言った方式を取ります。

アクセス制御ファイルの書式

 アクセス制御ファイルの書式は以下のようになります。

<service> : <host> [ : <command> ]

各フィールドの意味は、

<service>  対象となるサービスのプログラム名。

<host>  アクセス制御の対象となるホスト。

(1) ホスト名を記述する場合は、以下のルールが適用されます。

・ ホスト名をFQDNで記述すると、そのホストに条件を適用する。

・ "."で始まるドメイン名を記述すると、そのドメインに所属する全てのホストに条件を適用する。

(2) IPアドレスを記述する場合は、以下のようになります。

・ "."で終わるIPアドレスを記述すると、ワイルドカードを意味する。

・ アドレス/マスク形式の記述も解釈する。

 ホスト名やIPアドレスは、空白で区切って複数書き並べることができます。尚、ホストを指定する為の特殊なコマンドを以下に示します。

コマンド

意味

ALL 全てのホスト、IPアドレス。
LOCAL "."を含まないホスト名。
UNKNOWN ホスト名、もしくはIPアドレスが不明なホスト、もしくは不明なユーザー名。
KNOWN ホスト名とIPアドレスが分かっているホスト、もしくは分かっているユーザー名。
EXCEPT "A EXCEPT B"の形で記述する事によって、"A"の例外条件"B"を設定する事ができる。

<command>  TurbolonuxにインストールされているTCP Wrapperでは、アクセス制御が行われた時に実行するコマンドを指定できます。例えば、アクセスを許可した時に管理者にメールを送るなどの処理ができます。

 これはコマンドに詳しくないと出来ない事項ですので、詳しくは専門書をご参照下さい。

アクセス制御ファイルの記述例

 アクセス制御ファイル/etc/hosts.deny/etc/hosts.allowの記述例を以下に示します。

/etc/hosts.deny

ALL : ALL

/etc/hosts.allow

sshd : sample@192.168.0.1
sendmail : ALL
ipop3d : ALL

 通常、/etc/hosts.denyファイルには、アクセス制御を行いたいプログラムに対して常にALLを記述することを推奨します。これは、アクセス制御設定の記述漏れによるセキュリティホールの発生を防ぐためです。

 Turbolinuxでは、インストール時にセキュリティレベルで「高」を選ぶと、TCP Wrapperはsshdしか開かれていません。メール使用などの場合は、上記のように明示的にサービスに対するアクセスを開いてやる必要があります。

ログの出力

 TCP Wrapperのログは、通常/var/log/messagesに出力されます。ログの内容を吟味する事により、不正アクセスなどを検知する事ができます。