Как добавить исходящее исключение брандмауэра Windows?

Мне нужно открыть брандмауэр Windows для исходящих соединений для приложения, которое я пишу.

Лучшие ответы, которые я смог найти, находятся здесь:

http://www.shafqatahmed.com/2008/01/controlling-win.html

http://www.vincenzo.net/isxkb/index.php?title=Adding_a_rule_to_the_Windows_firewall

Проблема в том, что метод создает только входящее правило, а не исходящее правило. (И сценарии C# и InnoSetup используют один и тот же метод.) Это совершенно бесполезно для меня.

Поведение по умолчанию для брандмауэра Windows разрешает исходящий трафик, но это не гарантирует, что кто-то не изменит это.

Я бы предпочел сделать это в установщике (используя InnoSetup), а не в C#.

Я что-то пропустил?

Кто-нибудь знает, как создать исходящее правило?

5 ответов

Вы можете использовать netsh, если вам нужно добавить некоторые исключения для вашего приложения.

напишите в командной строке (для XP):

netsh firewall add allowedprogram ?

напишите в командной строке (для W7):

netsh advfirewall firewall add rule ?

Это различие, потому что команда netsh firewall устарела. Вместо этого мы должны использовать команду netsh advfirewall firewall.

Дополнительную информацию об использовании команды netsh advfirewall firewall вместо команды netsh firewall, которую можно найти в Базе знаний, можно найти здесь: http://go.microsoft.com/fwlink/?linkid=121488

Примеры:

Добавление правила для входящего трафика без инкапсуляции безопасности для messenger.exe:

netsh advfirewall firewall add rule name="allow messenger" dir=in program="c:\programfiles\messenger\msmsgs.exe" security=authnoencap action=allow

Добавление правила для исходящего трафика на порт 80:

netsh advfirewall firewall add rule name="allow80" protocol=TCP dir=out localport=80 action=block

Добавление правил для входящего трафика с безопасностью и шифрованием трафика для TCP через порт 80:

netsh advfirewall firewall add rule name="Require Encryption for Inbound TCP/80" protocol=TCP dir=in localport=80 security=authdynenc action=allow

TechNet: создает правило для исходящего порта в Windows 7, Windows Vista, Windows Server 2008 или Windows Server 2008 R2

Хотя я предполагаю, что вы хотели создать такие правила программно, в этом случае вас может заинтересовать программная работа с объектами групповой политики.

Наконец, если вы планируете сделать это во время установки, InnoSetup сможет объединить необходимые ключи реестра во время установки.

Проблема с netsh заключается в том, что он не работает на некоторых версиях Windows (например, Windows Vista Basic). Вот почему лучше добавить исключение, не используя netsh. Эта статья содержит пример кода Inno Setup.

Это одна из многих задач, которые можно передать инструментам командной строки Windows.NETsh делает соответствующие вещи, но его (как и все, что делает netsh) почти невозможно найти. Простая версия:
netsh firewall add allowedprogram <path> <name>
Для более подробной информации, запустите:
netsh firewall add allowedprogram ?

Это можно сделать либо в [Run] раздел или по телефону Exec,

Обратите внимание, что это не рекомендуется в Windows 7; если вы ориентируетесь только на Vista/2008 или более позднюю версию, вы должны использовать netsh advfirewall firewall вместо. У Microsoft есть статья о переходе с первого на второе, но я все еще должен поддерживать XP, поэтому я этого не делал.

Вы можете выполнитьnetshв[Run]раздел установщика. В этом примере открывается порт 80 для любого исполняемого файла:

      [Run]
; Remove firewall exception first when upgrading
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""My WWW Server"" "; Flags: runhidden

; Add firewall exception
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""My WWW Server"" protocol=TCP dir=out localport=80 action=allow "; Flags: runhidden

[UninstallRun]
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""My WWW Server"" "; Flags: runhidden; RunOnceId: "RemoveFirewallExc"

Изменятьdir=outкdir=inчтобы создать правило для входящего трафика.

Другие вопросы по тегам