Как заблокировать программе доступ в Интернет из Windows

Россия+7 (910) 990-43-11
Обновлено: 2024-02-16

Не нужно изобретать велосипед: брандмауэр Windows объединяет всё необходимое для блокировки трафика данных, генерируемого любой установленной программой, а также компонентами системы. Брандмауэр Windows позволяет блокировать как входящий, так и исходящий трафик, следя за тем, чтобы приложение не могло ни отправлять, ни получать один байт данных: что такое брандмауэр и как он работает?

Как заблокировать любое общение приложения, не полагаясь на Windows Firewall Control? Одним из решений было бы создание изолированной виртуальной машины с Virtualbox, VMware, Hyper-V или с другими решениями виртуализации.

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

Блокировать доступ в Интернет для всех исполняемых файлов в папке

Мы создали для вас два простых скрипта PowerShell, которые позволяют блокировать все входящие и исходящие сообщения для всех исполняемых файлов, содержащихся в указанной папке. Предположим, вы временно отключили доступ к сетевой карте (Ethernet или Wi-Fi), нажав комбинацию клавиш Windows + R, набрав ncpa.cpl , щелкнув правой кнопкой мыши и выбрав Отключить.

После установки интересующего вас приложения вам нужно будет записать путь, по которому оно установлено, затем нажать Windows + X и выбрать Windows PowerShell (администратор).

Запуск Windows PowerShell от имени администратора

На этом этапе, замените C:\FOLDER полным путем к папке, содержащей файлы, подлежащие блокировке (исполняемые файлы, которые не должны иметь возможность отправлять и получать данные через Интернет), соответствующие правила будут автоматически созданы в брандмауэре Windows.

Чтобы заблокировать весь исходящий трафик для исполняемых файлов, содержащихся в указанной папке:

$d='C:\FOLDER'; Get-ChildItem -Path "$d\*.exe" -Recurse | Select-Object -ExpandProperty Name | ForEach-Object { New-NetFirewallRule -DisplayName "Заблокировано PowerShell $_ (out)" -Direction Outbound -Action Block -Profile Any -Enabled True -Program $d"\"$_ }

Чтобы заблокировать весь входящий трафик для исполняемых файлов, содержащихся в указанной папке:

$d='C:\FOLDER'; Get-ChildItem -Path "$d\*.exe" -Recurse | Select-Object -ExpandProperty Name | ForEach-Object { New-NetFirewallRule -DisplayName "Заблокировано PowerShell $_ (in)" -Direction Inbound -Action Block -Profile Any -Enabled True -Program $d"\"$_ }

Нажмите Win + R, затем наберите wf.msc и нажмите Ввод, вновь добавленные правила появятся в разделах «Исходящие правила» и «Входящие правила» брандмауэра Windows.

Если впоследствии вы захотите удалить различные правила, созданные без прохождения через окно брандмауэра Защитника Windows с повышенной безопасностью, просто откройте окно PowerShell с правами администратора и введите:

Get-NetFirewallRule | ? DisplayName -like 'Заблокировано PowerShell*' | Select-Object DisplayName | ForEach-Object { Remove-NetFirewallRule -DisplayName $_.DisplayName }

Следует иметь в виду, что последний скрипт, запущенный как есть, одним махом удалит все правила брандмауэра с префиксом «Заблокировано PowerShell» (обратите внимание на использование подстановочного знака*).

В обоих случаях для достижения поставленной цели мы сначала использовали конвейер PowerShell, извлекая имена исполняемых файлов, содержащихся в папке, указанной пользователем, а затем используя команду New-NetFirewallRule для создания нового правила брандмауэра (передавая во входную команду имя исполняемого файла для строки описания правила и полный путь для правил входящих и исходящих соединений).

Чтобы заблокировать программу, ограничивающую себя исполняемыми файлами, содержащимися в папке, указанной в переменной $d, а не в её подпапках, просто удалите параметр -Recurse.


4.4/128