TCP Wrapper
TCP Wrapperは、ネットワークサービスへのアクセスを制御するためのセキュリティツールです。主にinetd(インターネットサービスデーモン)やxinetdと連携して動作し、ホストベースのアクセス制御を提供します。TCP Wrapperは1980年代に開発され、現在でもレガシーシステムやセキュリティに敏感な環境で利用されています。
TCP Wrapperは、ネットワークサービスに対するアクセス制御を行うために以下のファイルを使用します。
/etc/hosts.allow
: アクセスを許可するホストを定義/etc/hosts.deny
: アクセスを拒否するホストを定義
これらのファイルを利用して、ホスト単位でのアクセス制御を柔軟に行うことができます。
inetdとxinetdの比較
機能 | inetd | xinetd |
---|---|---|
アクセス制御 | TCP Wrapperと連携して実現 | 独自のアクセス制御機能を持つ |
設定の柔軟性 | 限られたオプションのみ | 豊富なオプションと設定項目 |
利用される状況 | 主にレガシーシステムで利用 | より新しいシステムで広く利用 |
xinetdは、only_from
やno_access
といった設定項目を持ち、独自にアクセス制御機能を提供します。一方、inetdはこれらの機能を持たないため、TCP Wrapperを利用してアクセス制御を行っていました。現在でも、TCP Wrapperを活用するシステムは存在するため、その仕組みを理解しておくことが重要です。
/etc/hosts.allowと/etc/hosts.denyの定義方法
TCP Wrapperで使用される/etc/hosts.allow
と/etc/hosts.deny
ファイルは、以下の構文で定義されます。
【構文】デーモン名:ホスト名 または IPアドレス または ネットワークアドレス
定義例
ファイル | 設定例 | 説明 |
---|---|---|
/etc/hosts.allow | sshd: 192.168.1.5 | IPアドレス192.168.1.5からのSSHアクセスを許可 |
/etc/hosts.allow | httpd: .example.com | example.comドメインからのHTTPアクセスを許可 |
/etc/hosts.deny | ALL: ALL | すべてのホストからのアクセスを拒否 |
/etc/hosts.deny | vsftpd: 192.168.1.100 | IPアドレス192.168.1.100からのFTPアクセスを拒否 |
TCP Wrapperによるアクセス制御の流れ
TCP Wrapperは、ネットワーク経由でアクセスがあると以下の順序でチェックを行います。
- /etc/hosts.allowを確認: 許可リストにホストが含まれていれば、アクセスを許可します。
- /etc/hosts.denyを確認: 許可リストにないホストであれば、拒否リストにホストが含まれているかを確認し、含まれていればアクセスを拒否します。
- デフォルト動作: どちらにも含まれていないホストは、アクセスが許可されます。
アクセス制御のフロー
ステップ | 処理内容 |
---|---|
/etc/hosts.allow 確認 | ホストがリストに含まれていればアクセス許可。 |
/etc/hosts.deny 確認 | ホストがリストに含まれていればアクセス拒否。 |
どちらにも含まれない場合 | デフォルトでアクセスを許可。 |
セキュリティのベストプラクティス
TCP Wrapperを使用する際には、セキュリティを強化するために、/etc/hosts.deny
ファイルにALL:ALL
を記載することが推奨されます。これにより、許可リストに含まれていないすべてのホストからのアクセスを拒否できます。
まとめ
TCP Wrapperは、inetdと連携して使用されるアクセス制御ツールとして、依然として重要な役割を果たしています。/etc/hosts.allow
と/etc/hosts.deny
ファイルを適切に設定することで、ホストベースのセキュリティを効果的に強化することができます。特にレガシーシステムやセキュリティが重要な環境では、TCP Wrapperの理解と利用が不可欠です。