閉じたポートに対するTelnetが応答しない接続が拒否されました

閉じたポートに対するTelnetが応答しない接続が拒否されました

私はdockerとUFWファイアウォールを持つサーバーを持っています(DockerがUFWルールにもかかわらず、いくつかのポートを開くために競合が発生する可能性があることを知っています)。

ランダムに閉じたポートを介して外部からこのサーバーにTelnetを接続すると、Telnetは頑張って...「送る代わりに」接続が拒否されました。

サーバーに行き、Telnet 127.0.0.1 7777を使って同じことをします」接続が拒否されました。

どんなアイデアがありますか?

答え1

多くのファイアウォールは実際にポートを「閉じる」代わりに「隠します」。これは、「Connection Rejected」を肯定的に再送信するのではなく、タイムアウトする前に応答を受け取ると考えてクライアントの時間を無駄にすることを意味します。これは、どのポートが実際に閉じられているのか、どのポートが遅いのか、現在応答していないサービスの背後にあるのかを知る方法がないため、潜在的な攻撃者にポート検索の有用性を低下させます。これはまた、狡猾な攻撃者が目標を無駄にすることができないことを意味します。それ何も送信しないのではなく、「申し訳ありません。閉鎖しました」パケットをたくさん送る時間です。

答え2

最も一般的に使用されるファイアウォールルールは、allowしかしdeny一般的に呼ばれる他のオプションも使用できますreject。 UFWにもそのようなものがあります。

「拒否」と「拒否」の違いは、「拒否」を選択するとファイアウォールが着信パケットを完全に無視するのに対し、「拒否」を選択するとファイアウォールが常に適切な「申し訳ありません。閉じています」というメッセージを送信します。実際の受信者を表します。、サービスが実際に着信接続を受信して​​いるかどうかにかかわらず。

ほとんどのオペレーティングシステムでも、半分のファイアウォールでも「申し訳ありません。ダウンしました」パケットを送信する操作には常に非常に低い優先順位を与えます。したがって、ファイアウォールの有無にかかわらず、システムに少し重要な作業がある場合、これらのパケットは遅延または完全に無視されます。

したがって、ファイアウォールで何かをブロックしたいが、そのポートへの接続試行が明らかな「接続拒否」エラーで迅速に失敗する必要がある場合は、デフォルトのルールの代わりにrejectファイアウォールのルールを使用してくださいdeny

関連情報