第 9章TCPラッパーとxinetd

ネットワークサービスへのアクセスを制御することは困難な場合があります。ファイアウォールは特定のネットワークに対するアクセスの制御に有効ですが、設定が困難な場合があります。TCPラッパーとxinetdは、ホスト名とIPアドレスによってサービスへのアクセスを制御します。さらに、これらのツールには、設定が容易なロギングや利用状況管理の機能も含まれています。

TCPラッパーの目的

SSHやTelnet、FTPなど、現代の多くのネットワークサービスでは、受け取ったリクエストと要求されたサービスの間で動作するよう設計されたプログラムであるTCPラッパーを利用しています。TCPラッパーは、Red Hat Linuxをサーバークラスでインストールするとデフォルトでインストールされます。これによって、各種のサービスの実行に多くの利点が提供され、それぞれ異なる方法でアクセスを制御できるようになります。

TCPラッパーの考え方は、受信したクライアント接続を、サーバーシステムで独立したプロセスとして動作しているネットワークサービスデーモンと直接通信できるようにするのではなく、リクエストのターゲットを別のプログラムで「ラップ」して、サービスを使用しようとしているユーザーのロギングと高いレベルのアクセス制御を可能にするというものです。

TCPラッパーの基本となる機能は、libwrap.aによって提供されます。xinetdsshdportmapなどのネットワークサービスは、このライブラリが処理します。ユーザーが作成したネットワークプログラムを含む他のネットワークサービスも、この機能を提供するためにlibwrap.aで処理できます。Red Hat Linuxでは、必要なTPCラッパープログラムとライブラリはtcp_wrappers-<バージョン番号> RPMファイルにバンドルされています。

TCPラッパーの利点

TCPラッパーを使用しているネットワークサービスに何者かがアクセスしようとすると、要求されたサービスの名前とクライアントのホスト情報を小さいラッパープログラムが報告します。ラッパープログラムはクライアントに情報を直接送り返すことはせず、アクセス制御ディレクティブが満たされると処理を行わなくなるのでクライアントとサーバーの間の通信に余計なオーバーヘッドを与えることはありません。

他のネットワークサービス制御手法と比較すると、TCPラッパーには基本的に2つの利点があります。

  • 接続しようとしているクライアントからは、TCPラッパーが使用されているかどうか知ることができません。正当なユーザーは違いに気づくことがなく、アタッカーは接続に失敗した理由がまったくわかりません。

  • TCPラッパーは、ラッパープログラムが保護するアプリケーションから独立して動作します。このため、共通する設定ファイルを多くのアプリケーションで共有できるので、管理が容易になります。