TCP Wrapper

 TCP Wrapperは、ネットワークサービスへのアクセスを制御するためのセキュリティツールです。主にinetd(インターネットサービスデーモン)やxinetdと連携して動作し、ホストベースのアクセス制御を提供します。TCP Wrapperは1980年代に開発され、現在でもレガシーシステムやセキュリティに敏感な環境で利用されています。

 TCP Wrapperは、ネットワークサービスに対するアクセス制御を行うために以下のファイルを使用します。

  • /etc/hosts.allow: アクセスを許可するホストを定義
  • /etc/hosts.deny: アクセスを拒否するホストを定義

これらのファイルを利用して、ホスト単位でのアクセス制御を柔軟に行うことができます。

inetdとxinetdの比較

機能inetdxinetd
アクセス制御TCP Wrapperと連携して実現独自のアクセス制御機能を持つ
設定の柔軟性限られたオプションのみ豊富なオプションと設定項目
利用される状況主にレガシーシステムで利用より新しいシステムで広く利用
inetdとxinetdの比較

 xinetdは、only_fromno_accessといった設定項目を持ち、独自にアクセス制御機能を提供します。一方、inetdはこれらの機能を持たないため、TCP Wrapperを利用してアクセス制御を行っていました。現在でも、TCP Wrapperを活用するシステムは存在するため、その仕組みを理解しておくことが重要です。

/etc/hosts.allowと/etc/hosts.denyの定義方法

 TCP Wrapperで使用される/etc/hosts.allow/etc/hosts.denyファイルは、以下の構文で定義されます。

【構文】
デーモン名:ホスト名 または IPアドレス または ネットワークアドレス

定義例
ファイル設定例説明
/etc/hosts.allowsshd: 192.168.1.5IPアドレス192.168.1.5からのSSHアクセスを許可
/etc/hosts.allowhttpd: .example.comexample.comドメインからのHTTPアクセスを許可
/etc/hosts.denyALL: ALLすべてのホストからのアクセスを拒否
/etc/hosts.denyvsftpd: 192.168.1.100IPアドレス192.168.1.100からのFTPアクセスを拒否
/etc/hosts.allowと/etc/hosts.denyの定義方法

TCP Wrapperによるアクセス制御の流れ

TCP Wrapperは、ネットワーク経由でアクセスがあると以下の順序でチェックを行います。

  1. /etc/hosts.allowを確認: 許可リストにホストが含まれていれば、アクセスを許可します。
  2. /etc/hosts.denyを確認: 許可リストにないホストであれば、拒否リストにホストが含まれているかを確認し、含まれていればアクセスを拒否します。
  3. デフォルト動作: どちらにも含まれていないホストは、アクセスが許可されます。
アクセス制御のフロー
ステップ処理内容
/etc/hosts.allow確認ホストがリストに含まれていればアクセス許可。
/etc/hosts.deny確認ホストがリストに含まれていればアクセス拒否。
どちらにも含まれない場合デフォルトでアクセスを許可。
アクセス制御のフロー

セキュリティのベストプラクティス

 TCP Wrapperを使用する際には、セキュリティを強化するために、/etc/hosts.denyファイルにALL:ALLを記載することが推奨されます。これにより、許可リストに含まれていないすべてのホストからのアクセスを拒否できます。

まとめ

 TCP Wrapperは、inetdと連携して使用されるアクセス制御ツールとして、依然として重要な役割を果たしています。/etc/hosts.allow/etc/hosts.denyファイルを適切に設定することで、ホストベースのセキュリティを効果的に強化することができます。特にレガシーシステムやセキュリティが重要な環境では、TCP Wrapperの理解と利用が不可欠です。