第 15章TCPラッパーとxinetd

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

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

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

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

15.1. TCPラッパー

TCPラッパーパッケージは(tcp_wrappers)Red Hat Linuxにデフォルトで インストールされており、ネットワークサービスに対しホストベースのアクセス制御を 提供します。パッケージ内で最も重要なコンポーネントは/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 Linux内の殆どのネットワークサービスはlibwrap.a ライブラリに対してリンクされています。そのようなアプリケーションには、/usr/sbin/sshd/usr/sbin/sendmail、そして/usr/sbin/xinetdが含まれます。

注意注意
 

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

strings -f <binary-name> | grep hosts_access

<binary-name>は、ネットワークサービスバイナリの 名前で入れ換えます。

15.1.1. TCPラッパーの利点

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

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

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