Правило входящего брандмауэра Windows - сценарий Powershell

432
Sam.92

Я пытаюсь создать сценарий PS, который создает правило брандмауэра Windows, блокирующее порт «6672» для определенного файла .exe в соединении INBOUND, но позволяет мне иметь возможность вносить в белый список определенные IP-адреса.

Способ сделать это вручную означает, что я должен полностью заблокировать порт (6672) для моего файла .exe для ВСЕХ IP-адресов, а затем добавить диапазон, оставляя IP-адреса, которые я хочу добавить в белый список.

Например, если я хочу добавить «192.168.0.3», я должен установить диапазон для правила для «0.0.0.0» на «192.168.0.2», а затем для «192.168.0.4» на «255.255.255.255». Причина, по которой я должен был это сделать, заключалась в том, что в брандмауэре Windows похоже, что вы не можете внести в белый список отдельные IP-адреса из правила блокировки, а правила блокировки отменяют любые разрешающие правила.

Итак, возвращаясь к моей первоначальной точке, я действительно борюсь за идеи о том, как решить эту проблему в настоящее время, так как я не могу найти обходной путь. Есть ли способ, которым кто-нибудь знает, чтобы иметь возможность исключить определенные IP-адреса из правила, или как сделать правило разрешения приоритетным по отношению к правилу блока?

РЕДАКТИРОВАТЬ

Так что у меня есть этот код:

New-NetFirewallRule -DisplayName "GTAO" -Direction Inbound -LocalPort 6672 -Protocol UDP -Action Block New-NetFirewallRule -DisplayName "GTAO" -Direction Outbound -LocalPort 6672 -Protocol UDP -Action Block 

Я в основном хочу, чтобы что-то подобное переопределило предыдущее правило, создав «белый список» для этого правила для отдельных IP-адресов.

$UIP = Read-Host "Enter IP to whitelist" New-NetFirewallRule -DisplayName "GTA$UIP" -Direction Inbound -LocalPort 6672 -Protocol UDP -Action Allow -RemoteAddress $UIP 
0

1 ответ на вопрос

0
postanote

Это не специфическая проблема PS, а «Как заставить WF делать X или Y, для которых он не предназначен».

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

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

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

Согласно документации брандмауэра Windows, правила блокировки всегда имеют приоритет над правилами разрешения, поэтому даже если ваше правило разрешения выглядит более конкретным, чем правило блокировки, правило разрешения не будет работать, и трафик, соответствующий правилам разрешения и блокировки, будет заблокирован. Параметр «Разрешить этому правилу межсетевого экрана переопределять правила блокировки» доступен только для правил, для которых требуется IPSec, и недоступен для исходящих правил.

Единственное, что вы можете сделать с помощью брандмауэра Windows для достижения чего-то близкого к тому, что вам нужно, это переключить поведение по умолчанию для исходящих соединений на «Блокировать», а затем добавить явные правила разрешения для всех исходящих соединений, которые вам нужны (не только для этой отдельной программы). ). Кроме того, вы можете искать стороннее программное обеспечение брандмауэра с большим количеством функций.

... Вы можете создать вышеприведенное правило для отдельной программы, просто установив правило для программы, а не для всех программ.

поэтому вы устанавливаете 2 или более правил (в зависимости от того, сколько IP-адресов вы хотите разрешить) и блокируете все остальные. так, например, если вы хотите только разрешить

10.10.10.10

а также

20.20.20.20

Вы устанавливаете правила:

блок с 0.0.0.0 по 10.10.10.9 и с 10.10.10.11 по 20.20.20.19 и с 20.20.20.21 до 255.255.255.255

Это на самом деле имеет много смысла. О, чувак, теперь я должен думать о том, как получить диапазоны IP-адресов в качестве переменной вывода ... Regex здесь мы идем! XD Sam.92 6 лет назад 0