web-dev-qa-db-ja.com

リモート接続がタイムアウトするWindows7ファイアウォール。接続を拒否する必要があります

Windows 7ファイアウォールは、送信接続を許可し、受信接続をブロックするデフォルトのオプションで実行されています。ローカルネットワーク内から定期的に接続しようとするプロセスがありますが、これは問題ありません。接続を受け入れるプログラムが実行されているときは、すべてうまくいきます。そうでない場合、Windows 7ファイアウォールは、接続を拒否するのではなく、接続のタイムアウトを試みます(本来のように)。

そのポートですべての接続を明示的に許可するルールを作成しようとしましたが、それでもタイムアウトになります。ファイアウォールがRSTパケットの返送をブロックしているかどうか疑問に思っていますか?パブリックプロファイルを無効にすると、接続が完全に拒否されますが(予想どおり)、ファイアウォールルールでは拒否されません。

これが私がこれまで成功せずに試したルールです:

ポートタイプ、TCP、指定されたポート11211、接続を許可、ドメイン、プライベート、およびパブリックに適用

助言がありますか?

注意: 「拒否されました」と言うときは、「申し訳ありませんが、何も聞いていません」という接続に対するオペレーティングシステムの応答を指します。ローカルマシンでこれをテストします。コマンドプロンプトを開き、telnet localhost 60000と入力します。次のように表示されます:Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused

これは拒否された接続です。 (少なくとも私のシステムでは)ポート60000で何もリッスンしていないため、オペレーティングシステムは要求を「拒否」しています。

telnet example.com 60000を試してください。待つ。最終的には次のようなものが表示されます:Trying 192.0.43.10... telnet: connect to address 192.0.43.10: Operation timed out

違いを見ます? example.comには「拒否」で返信するホストがないため、 君の ローカルオペレーティングシステム(サーバーではないなど)は、「何もありません、タイムアウトします」と言います。

とても違う。問題は、Windows7ファイアウォールが本来の「拒否」を生成していないことです。これを修正する方法を知りたいのですが。

5
JT.

これは、「ステルスモード」と呼ばれるWindowsファイアウォール機能によるものです。アイデアは、接続をタイムアウトする代わりに拒否すると、攻撃者にそのIPアドレスに実際にコンピューターがあることを知らせるというものです。接続の試行がタイムアウトすると、攻撃者がコンピューターを無視することが期待されます。ステルスモードの詳細については、 technet を参照してください。

文書化されているようにレジストリを変更することにより、ステルスモードを無効にできます ここ

Software\Policies\Microsoft\WindowsFirewall\DomainProfile, Software\Policies\Microsoft\WindowsFirewall\PrivateProfile, Software\Policies\Microsoft\WindowsFirewall\PublicProfile, Software\Policies\Microsoft\WindowsFirewall\StandardProfile追加REG_DWORD名前付きDisableStealthMode、値は0x00000001

その後、変更を有効にするには、Windowsファイアウォールサービスを再起動する必要があります。

9
d1c