Как добавить исходящее исключение брандмауэра Windows? - PullRequest
14 голосов
/ 09 октября 2011

Мне нужно открыть брандмауэр 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 #.

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

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

Ответы [ 4 ]

23 голосов
/ 02 февраля 2012

Вы можете использовать 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
1 голос
/ 24 февраля 2014

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

1 голос
/ 09 октября 2011

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

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

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

0 голосов
/ 20 октября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...