第 20章ネットワークサービスへのアクセス制御

ネットワーク上に公開するサービス、特にインターネットに公開するサーバーは、常にクラッカーからの脅威にさらされています。ネットワークサービスに対するクライアントからのアクセスを制御することは、サーバー管理者にとって最も重要なセキュリティタスクです。サーバー管理者は、クライアントからの接続要求に対して、そのリクエストを受け入れるのか、それとも拒否するのかを適切に設定しておく必要があります。ネットワークサービスへのアクセスを制御するために Turbolinux 11 Server に実装されている基本的なソフトウェアには以下があります。

以下の図は、これらのソフトウェアの関係と、どのような順序でアクセス制御が行われるのかを簡単に示したものです。

iptables はネットワークインターフェースに入ってきたパケットのヘッダを参照し、フィルタリングするためのルールをカーネルに設定することができます。不正なパケットを破棄するルールを設定し、ファイアウォールとして機能させることができます。TCP Wrappers は、ネットワークサービスに対してホストベースのアクセス制御を提供します。Turbolinux 11 Server が提供するネットワークサービスの多くは、クライアントからのアクセスを制御するために TCP Wrappers を利用しています。xinetd は、一般的にスーパーサーバーと呼ばれているソフトウェアです。スーパーサーバーは、他のサーバープログラムを管理/制御し、必要に応じてそれらのネットワークサービスを起動するプログラムです。Turbolinux 11 Server が提供するネットワークサービスのいくつかは、xinetd により管理され、起動を許可されているサービスのみ xinetd により起動されます。

この章では、TCP Wrappers と Turbolinux 11 Server がデフォルトのスーパーサーバーに採用している xinetd について解説します。iptables を使用したパケットフィルタリングの設定については 第22章 を参照してください。

20.1. TCP Wrappers の概要

Turbolinux 11 Server が提供するネットワークサービスの中には、TCP Wrappers が提供する /usr/lib/libwrap.a ライブラリを利用してアクセス制御を行っているサーバープログラムが存在します。例えば、xinetd、sshd、portmap などのネットワークサービスは TCP Wrappers により、クライアントからのアクセス要求を制御できます。これらのサービスでは、クライアントからのリクエストを受け取ると、サーバープログラムがそのリクエストに応答する前に TCP Wrappers によるアクセス制御が実行されます。許可されたクライアントからのリクエストであれば、その処理はクライアントプログラムとサーバープログラムの間で直接やり取りされることになりますが、アクセスが許可されていないクライアントからのリクエストであれば拒否します。

TCP Wrappers は、/etc/hosts.allow と /etc/hosts.deny という 2 つの設定ファイルを参照することでクライアントからのアクセスを制御しています。このため、異なるサービスでも共通のアクセス制御ファイルを利用することができ、ネットワークサービスへのアクセス管理が容易となるメリットがあります。