2.6. TCP Wrapper と xinetd

ネットワークサービスへのアクセス制御は、サーバー管理者にとって最も重要なセキュリティ関連のタスクのひとつです。Red Hat Enterprise Linux は、このためにいくつかのツールを提供しています。例えば、iptables ベースのファイアウォールは、カーネルのネットワークスタック内の不要なネットワークパケットを除去します。それを利用するネットワークサービスについては、TCP Wrapper はどのホストが「ラップされた」ネットワークサービスに接続許可または拒否されるかを定義することで、新たな保護層を追加します。このようにラップされたネットワークサービスの 1 つが xinetd スーパーサーバーです。このサービスは、ネットワークサービスのサブセットへの接続を制御し、アクセス制御を改善するので、スーパーサーバーと呼ばれています。
図2.4「ネットワークサービスへのアクセス制御」は、ネットワークサービスを保護するためにこれらのツールがどのように連動するかを示す基本的な図です。
ネットワークサービスへのアクセス制御

図2.4 ネットワークサービスへのアクセス制御

iptables を使ったファイアウォールの使用についての詳細情報は、「IPTables」 を参照してください。

2.6.1. TCP Wrapper

TCP Wrapper パッケージ (tcp_wrapperstcp_wrappers-libs) はデフォルトでインストールされ、ネットワークサービスに対するホストベースのアクセス制御を提供します。パッケージ内の最も重要なコンポーネントは /lib/libwrap.so または /lib64/libwrap.so ライブラリです。一般的に言うと、TCP でラップしたサービスとは libwrap.so ライブラリに対してコンパイルされたものです。
TCP でラップされたサービスへの接続を試行する際には、クライアントが接続を許可されるかどうかを決定するために、サービスはホストのアクセスファイル (/etc/hosts.allow および /etc/hosts.deny) をまず参照します。多くの場合、サービスは、要求しているクライアントと要求されたサービスの名前を /var/log/secure または /var/log/messages に書き込むために、syslog デーモン (syslogd) を使用します。
クライアントが接続を許可されると、TCP Wrapper は要求されたサービスへの接続制御を解放し、それ以降はクライアントとサーバー間の通信に介入しません。
アクセス制御とロギング以外にも、TCP Wrapper は、要求されたネットワークサービスへの接続制御の拒否や開放を行う前に、クライアントとやりとりするためのコマンドを実行できます。
TCP Wrapper はサーバー管理者の数多くのセキュリティツールに加わる重要なツールになるので、Red Hat Enterprise Linux 内のほとんどのネットワークサービスは libwrap.so ライブラリにリンクされています。これらのアプリケーションには、/usr/sbin/sshd/usr/sbin/sendmail、および /usr/sbin/xinetd などがあります。

注記

ネットワークサービスのバイナリが libwrap.so にリンクされていることを確認するには、root ユーザーとして以下のコマンドを入力します。
ldd <binary-name> | grep libwrap
<binary-name> をネットワークサービスのバイナリの名前で置き換えます。コマンドが何も出力せずにそのままプロンプトに戻る場合、ネットワークサービスは libwrap.so にリンクされていません
以下の例は /usr/sbin/sshdlibwrap.so にリンクしていることを示しています。
~]# ldd /usr/sbin/sshd | grep libwrap
        libwrap.so.0 => /lib/libwrap.so.0 (0x00655000)

2.6.1.1. TCP Wrapper の利点

TCP Wrapper は他のネットワークサービス制御にはない、以下の利点を提供します。
  • クライアントとラップされたネットワークサービス双方への透過性 — 接続しているクライアントとラップされたネットワークサービスは共に TCP Wrapper が使用されていることを認識しません。正当なユーザーはログに記録されて要求したサービスに接続される一方、禁止されたクライアントからの接続は失敗します。
  • 複数プロトコルの一元管理 — TCP Wrapper は、保護対象のネットワークサービスとは独立して動作し、数多くのサーバーアプリケーションがアクセス制御設定ファイルの共通セットを共有してよりシンプルな管理を行えるようにします。