TCP ラッパーは、着信ネットワーク トラフィックの基本的なトラフィック フィルタリングを提供します。 Linux サーバーで実行されている「ラップされた」ネットワーク サービスへの他のシステムからのアクセスを許可または拒否できます。 TCP ラップ サービスは、libwrap.a ライブラリに対してコンパイルされたサービスです。 ldd コマンドを使用して、ネットワーク サービスが libwrap.a にリンクされているかどうかを確認します。次の例では、sshd サービスの絶対パス名を特定し、grep コマンドを使用して libwrap ライブラリを検索して、sshd サービスにリンクされている共有ライブラリを一覧表示します。
# which sshd /sbin/sshd
# ldd /sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1fea580000)
構成ファイル
TCP ラッパーは、アクセス制御の基礎として 2 つの構成ファイルに依存しています:
- /etc/hosts.allow
- /etc/hosts.deny
クライアントがリモート システム上のネットワーク サービスに接続しようとすると、これらのファイルを使用して、クライアント アクセスが許可されるか拒否されるかが決定されます。 /etc/hosts.allow および /etc/hosts.deny を使用して、ローカル システム上のサーバー デーモンへのクライアント アクセスを選択的に許可または拒否するルールを定義します。両方のファイルのエントリの形式は次のとおりです:
daemon_list : client_list [: command]
各フィールドの説明は次のとおりです:
- daemon_list :デーモンのコンマ区切りリスト、またはすべてのデーモンのキーワード ALL
- client_list :クライアントのコンマ区切りリスト、またはすべてのクライアントのキーワード ALL
- コマンド :クライアントがサーバー デーモンにアクセスしようとしたときに実行されるオプションのコマンド
クライアント アクセスを許可するには、クライアントのホスト名または IP アドレスを /etc/hosts.allow に追加します。クライアント アクセスを拒否するには、その名前または IP アドレスを /etc/hosts.deny に追加します。
/etc/hosts.allow ファイルが最初に読み取られ、上から下に読み取られます。デーモンとクライアントのペアがファイルの最初の行と一致する場合、アクセスが許可されます。行が一致しない場合は、次の行が読み取られ、同じチェックが実行されます。すべての行が読み取られ、一致が見つからない場合は、/etc/hosts.deny ファイルが先頭から読み取られます。デーモンとクライアントのペアの一致が拒否ファイルで見つかった場合、アクセスは拒否されます。どちらのファイルにもデーモンとクライアントのペアのルールが見つからない場合、またはどちらのファイルも存在しない場合は、サービスへのアクセスが許可されます。
hosts.allow のアクセス ルールが最初に適用されるため、hosts.deny で指定されたルールよりも優先されます。したがって、hosts.allow でサービスへのアクセスが許可されている場合、hosts.deny で同じサービスへのアクセスを拒否するルールは無視されます。以下は、/etc/hosts.allow ファイル内のエントリの例です:
1. 192.168.2 サブネット上のクライアントが FTP にアクセスできるようにするには (デーモンは vsftpd):
# vi /etc/hosts.allow vsftpd : 192.168.2.*
2. すべてのクライアントが ssh、scp、および sftp にアクセスできるようにするには (デーモンは sshd):
# vi /etc/hosts.allow sshd : ALL
3. /etc/hosts.deny ファイルに次のエントリを配置して、サブネット 192.168.2.* を除くすべてのクライアントへの FTP サービスを拒否します (これは、vsftpd:192.168.2.* の以前のエントリが /etc/hosts に存在することを前提としています)。許可):
# vi /etc/hosts.deny vsftpd : ALL
4. .domain 構文を使用して、特定のドメインのホストを表します。次の例では、example.com ドメイン内の任意のホストから vsftpd への接続を許可します (エントリが /etc/hosts.allow にある場合):
# vi /etc/hosts.allow vsftpd : .example.com
このエントリが /etc/hosts.deny にある場合、接続は拒否されます。
Linux の TCP ラッパー (hosts.allow &hosts.deny) コマンド オプション