第 16章. TCPラッパーとxinetd

ネットワークサービスへのアクセスの制御は、サーバー管理者にとって最も重要なセキュリティタスクのひとつです。幸い、Red Hat Enterprise Linuxには、アクセスの制御を行なうツールが いくつかあります。例えば、iptablesベースのファイアウォールは、 カーネルのネットワークスタック内で、歓迎できないネットワークパケットをフィルタに かけます。これを利用するネットワークサービスに、TCPラッパーが、どのホストが"ラップした"ネットワークに接続を許可されるか、許可されないかを定義することにより、 追加の保護層を加えます。ラップしたネットワークサービスの1つは、xinetdスーパーサーバーです。このサービスがスーパーサーバーと呼ばれる理由は、それがネットワーク サービスのサブセットへの接続を制御して、アクセス制御をより厳密にするからです。

図16-1は、これらのツールがどのようにして ネットワークサービスを一緒に保護するかの基本的な描写をしています。

図 16-1. ネットワークサービスへのアクセス制御

この章では、ネットワークサービスへのアクセス制御に於けるTCPラッパーの役割とxinetdに焦点を置いています。そして、ロギングと運用管理の両方を強化するために、これらのツールがどの様に使用されるかを 説明していきます。iptablesでのファイアウォールについての説明は第17章を 参照してください。

16.1. TCPラッパー

TCPラッパーパッケージは(tcp_wrappers)デフォルトで インストールされ、ネットワークサービスに対しホストベースのアクセス制御を提供します。パッケージ内で最も重要なコンポーネントは/usr/lib/libwrap.a ライブラリです。 一般的な表現では、TCPでラップしたサービスは、libwrap.a ライブラリに対してコンパイルされたものを指します。

TCPラップのサービスに接続の試行があった場合、そのサービスは最初に ホストアクセスファイル(/etc/hosts.allow 及び/etc/hosts.deny)を参照して、クライアントホストが接続を 許可されているかどうかを判定します。ほとんどの場合、その後、syslogデーモン (syslogd)を使用して/var/log/secure 又は/var/log/messagesへその要求しているホスト名と 要求サービスを書き込みます。

もし、クライアントホストが接続を許可された場合、TCPラッパーは要求されたサービスへの 接続制御を開放し、それ以上クライアントホストとサーバーとの間の通信を邪魔しません。

アクセスの制御とロギングに加えて、TCPラッパーは先ずクライアントと折衝をするためのコマンドを 起動して、それから要求されたネットワークサービスへの接続を拒否するか、制御の開放を します。

いずれのサーバー管理者にとっても数々の強力なセキュリティツールに加えてTCPラッパーは 役立つツールとなるので、Red Hat Enterprise Linux内の殆どのネットワークサービスはlibwrap.a ライブラリに対してリンクされています。このようなアプリケーションには、/usr/sbin/sshd/usr/sbin/sendmail/usr/sbin/xinetdなどがあります。

注意注記
 

ネットワークサービスバイナリが libwrap.aに対して リンクされているかどうか判定するには、rootユーザーとして以下のコマンドを 入力します:

strings -f <binary-name> | grep hosts_access

<binary-name>にはネットワークサービスバイナリの名前を入れてください。

プロンプトが戻ってきた場合、そのネットワークサービスはlibwrap.a に対してリンクされていません

16.1.1. TCPラッパーの利点

TCPラッパーは、他のネットワークサービス制御技術と比較して 以下のような利点を持っています:

  • クライアントホストとラップしたネットワークサービス間の透視度 — 接続しようとしているクライアントとラップしたネットワークサービスからはTCPラッパーが使用されているか どうか知ることができません。正式なユーザーは要求したサービスへログインして接続しますが、禁止された クライアントからの接続は失敗します。

  • 複数プロトコルの中央管理 — TCPラッパーは、 それが保護するネットワークサービスからは別に稼働するため、多くのサーバーアプリケーションは 簡素な管理用設定ファイルの共通セットを共有することが出来ます。