Можно ли в брандмауэре Windows (Windows Defender Firewall) настроить для конкретного приложения разрешение исходящих соединений только к определённым IP‑адресам или доменам?

Windows 10, родной брандмауэр. Нужно дать одному приложению доступ только к нескольким адресам/подсетям в интернете; все остальные адреса должны быть недоступны. При этом множество других приложений не должно затрагиваться. <br/> Я вчитался в rule precedence behaviors: <br/> 1)   Explicitly defined allow rules take precedence over the default block setting. <br/> 2)   Explicit block rules take precedence over any conflicting allow rules. <br/> 3)   More specific rules take precedence over less specific rules, except if there are explicit block rules as mentioned in 2. For example, if the parameters of rule 1 include an IP address range, while the parameters of rule 2 include a single IP host address, rule 2 takes precedence. <br/> И нахожусь в некотором недоумении — действительно ли это реализовано настолько неудобно? Сейчас вижу два возможных варианта решения: 1) для приложения вручную прописывать блокирующие правила на все диапазоны, которые нужно запретить (т.е. инвертировать список разрешённых адресов); либо 2) установить глобальный запрет на outbound и затем для каждого приложения вручную прописать разрешения. Оба подхода мне не нравятся — может быть, я упускаю какое-то более удобное решение?
  • 11 марта 2026 г. 19:00
Ответы на вопрос 2
Короткий ответ: нет — не удобно и не «чисто» реализовано штатным брандмауэром Windows. Можно сделать рабочие обходы, но прямой «для этого одного процесса — разрешать только эти IP, а всё остальное блокировать» без затрагивания других приложений штатными средствами не сделать.

Почему так:
- Windows Defender Firewall по умолчанию позволяет исходящие соединения. Если вы просто создадите правило Allow для приложения и перечислите нужные remote IP — это разрешит соединения к этим адресам, но ничего не помешает приложению подключаться к любым другим адресам (потому что политика по умолчанию — Allow).
- Попытка сделать «для этого приложения запрещено всё, кроме…» путём создания общего блокирующего правила для этого приложения и затем отдельных allow‑правил для нужных IP не сработает: explicit Block rules имеют приоритет над Allow, т.е. общий блок «перебьёт» любые allow‑правила.
- Можно изменить глобальную политику исходящих соединений на Block и потом «открывать» всё, что нужно — но это затронет все приложения и потребует прописать много разрешений.

Варианты решения и рекомендации
1) Если хотите остаться на штатном брандмауэре:
   - Можно установить для соответствующего профиля DefaultOutboundAction = Block (Set-NetFirewallProfile -DefaultOutboundAction Block) и затем вручную создать Allow‑правила для всех приложений/сервисов, которым нужен доступ. Работает, но требует много правил и затрагивает систему в целом.
   - Для одного приложения можно создать Allow‑правило с перечислением remote IP/prefix (через GUI или PowerShell), но без глобального блока это будет только допускать эти адреса дополнительно — не запрещать всё остальное.

   Пример PowerShell‑команды для разрешения приложения к нескольким подсетям:
   New-NetFirewallRule -DisplayName "Allow MyApp to allowed IPs" -Direction Outbound -Program "C:\Path\MyApp.exe" -Action Allow -RemoteAddress "1.2.3.4,5.6.7.0/24" -Profile Private,Domain

2) Более практичные альтернативы (рекомендую):
   - Использовать сторонний файрвол на базе WFP, который поддерживает per‑application whitelist/blacklist и умеет делать «deny by default» для конкретного процесса. Примеры: SimpleWall (бесплатный, open source), TinyWall, NetLimiter (платно, с управлением по приложениям), Comodo / GlassWire и т.п. Такие утилиты реализуют свою логику поверх WFP и позволяют легко сделать «только эти адреса» для конкретного приложения.
   - Использовать перехват/прокси: запустить приложение через локальный SOCKS/HTTP‑прокси (или заставить через Proxifier), настроить прокси/ACL так, чтобы он пускал только нужные IP. Подходит, если приложение поддерживает прокси или вы можете принудительно направить трафик.
   - Поместить приложение в изолированную среду (VM, контейнер) и контролировать исходящий трафик на уровне хоста/маршрутизатора/VM‑файрвола. Это хорошо для жёсткой сегрегации.
   - Для корпоративной инфраструктуры — использовать сторонние сетевые устройства/UTM, прокси, или политики через SCCM/MDM, которые позволяют гибко задавать правила.

Итого
Если нужна простая и удобная реализация «для этого приложения — только эти адреса, всё остальное запрещено», лучший путь — сторонний инструмент (SimpleWall / TinyWall / NetLimiter и др.) либо прокси/VM. Встроенный брандмауэр Windows либо потребует глобального блокирования исходящих соединений (и большой работы по созданию разрешений), либо множества «инвертированных» блокирующих правил — оба варианта неудобны.
Не пробовал, но может сделать два правила: <br/> Первым - разрешаем этому приложению нужное. <br/> Вторым - запрещаем этому приложению любую сетевую активность. <br/> <br/> Адекватные firewall выполняют правила по порядку и если в первом правиле разрешения нет, то применится второе правило, где всё нельзя. Ну и наоборот. <br/> Но не тестировал, винда может оказаться коварной.
Похожие вопросы