サーバーのポートにtelnetで接続しようとしたときに、そのポートをリッスンしているプログラムがない場合、telnetが「接続できません...」エラーで終了します。という事は承知しています。しかし、どのポートでもリッスンするプログラムがないのに、なぜファイアウォールが必要なのでしょうか。
現在サービスが実行されていない可能性がありますが、明日はどうですか?それらはすべてオフになっていますが、ユーザーはどうですか? unix/windows/macシステム上の誰もが、アクセスできるマシン上で1024を超えるポートを開くことができます。マルウェアはどうですか?ウイルスはどうですか?また、ポートを開いて、世界への情報提供を開始したり、ネットワークからの接続の待機を開始したりすることもできます。
ファイアウォールの主な目的は、無効になっていることがわかっているサービスのポートをブロックすることではなく、知らない可能性があるサービスのポートをブロックすることです。それをデフォルトとして考えてみてくださいdeny許可するサービスのために特定の穴だけがパンチされています。ユーザーまたはユーザーが起動したプログラムは、アクセス権のあるシステムでサーバーを起動できます。ファイアウォールは、他のユーザーがそのサービスに接続するのを防ぎます。
優れた管理者は、公開する必要があるサービスを知っており、それらを有効にできます。ファイアウォールは主に、システムまたはネットワーク上で実行されている不明なサーバーからのリスクを軽減し、中央の場所からネットワークに許可されるものを管理するためのものです。
マシン/サーバーで何が実行されているかを知り、必要なものだけを有効にすることが重要ですが、ファイアウォールは、知らないものに対する追加の保護を提供します。
どのポートでもリッスンしているプログラムがない場合、ファイアウォールは必要ありませんが、サーバーは他の国から「封鎖」されているため、サーバーに接続できません。
一方、サーバーにローカルで実行中のプログラムがポートをリッスンしていないとしましょう。ただし、その背後にある他のコンピューターのゲートウェイとして機能します。この場合、ファイアウォールを使用してマスカレード(NAT)を管理し、オプションでパケット転送の一部をフィルタリングできます。
厳密に言うとそれは必ずしも必要ではないかもしれませんが、ファイアウォールは単にネットワークポートを介した接続を拒否するよりも多くの機能を提供できることに注意してください。たとえば、DROPとREJECTの動作です。