章 17章. TCPラッパーと xinetd

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

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

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

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

17.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 に対してリンクされていません

17.1.1. TCPラッパーの利点

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

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

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