回答:
IPTablesはカーネルレベルで機能します。一般的に、これはアプリケーションやプロセスに関する知識がないことを意味します。ほとんどの場合、さまざまなパケットヘッダーから取得した内容に基づいてのみフィルタリングできます。
ただし、host.allow / denyはアプリケーション/プロセスレベルで動作します。システムで実行されているさまざまなプロセスまたはデーモンのルールを作成できます。
そのため、たとえばIPTablesはポート22でフィルタリングできます。SSHはこのポートを使用するように構成できますが、通常は別のポートで構成することもできます。IPTablesは、どのポートがオンになっているかを認識せず、TCPヘッダーのポートについてのみ認識します。ただし、hosts.allowファイルは、opensshデーモンなどの特定のデーモン用に構成できます。
あなたが選ばなければならないなら、私は一般に最小のIPTablesで選ぶでしょう。私はhosts.allowを素敵なボーナスとして見ています。デーモンレベルは簡単だと思われる場合でも、IPTablesはパケットを実際にブロックする前にブロックします。セキュリティが早ければ早いほど、より良いものをブロックできます。ただし、この選択を変更する状況は確かにあります。
iptablesはアプリケーションに到達する前にアクセスをブロックしますが、hosts.allow / hosts.denyはPAMの一部であり、アプリケーションがPAMチェックを実装してファイルを正しく処理する必要があります。両方とも有用であり、両方を配置することはさらに優れています。