Блокируем доступ к определенным сайтам в Windows

В статье рассмотрим несколько способов, позволяющий заблокировать доступ к определенным веб-сайтам, доменам или IP адресам с компьютера Windows без использования сторонних программ. Обычно блокировку сайтов наиболее эффективно настраивать на уровне сетевого шлюза (роутер, маршрутизатор, Wi-Fi точка доступа, через которую вы выходите в Интернет), или с помощью стороннего ПО (фильтры контента, DNS фильтры, родительский контрол и т.д.). В данном случае мы попробуем заблокировать определенный сайт с помощью встроенных средств Windows и скриптов PowerShell.

Блокировка сайтов в Windows с помощью файла hosts

Самый известный способ заблокировать определенный сайт в Windows — перенаправить трафик к сайту на несуществующий IP с помощью фейковой записи в файле hosts. По умолчанию файл хост находится в каталоге %windir%\system32\drivers\etc\ (можно изменить местоположение через параметр реестра DataBasePath в ветке HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters ).

hosts файл в windows

Файл hosts используется для ручного назначения соответствий между IP адресами и DNS именами. При выполнении разрешении имен, файл hosts имеет приоритет над DNS серверами, указанными в настройках сетевых подключений.

Чтобы отредактировать файл host, нужно открыть его любом в текстовом редакторе с правами администратора. Например, запустите консоль PoweShell в режиме Run as administrator и выполните команду:

notepad $env:SystemRoot\System32\drivers\etc\hosts

Чтобы заблокировать определенный сайт (например, ok.ru), добавьте в файл hosts строки вида:

127.0.0.1 ok.ru
127.0.0.1 www.ok.ru

Сохраните файл и очистите локальный кэш DNS клиента:

ipconfig /flushdns

блокировка сайта через файл hosts

После этого при попытке открыть сайт ok.ru в любом браузере будет появляется сообщение ERR_CONNECTION_REFUSED / Страница не найдена / Страница не доступна.

сайт заблокирован в браузере ERR_CONNECTION_REFUSED

Для автоматизации блокровки (разблокировки) определенных сайтов в списке запрещенных в файле hosts можно использовать следующие PowerShell функции:

Function BlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) {
$hosts = "$env:SystemRoot\System32\drivers\etc\hosts"
$hosts = 'C:\Windows\System32\drivers\etc\hosts'
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If(-not $is_blocked) {
$hoststr="127.0.0.1 ” + $Url
Add-Content -Path $hosts -Value $hoststr
}
}

Function UnBlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) {
$hosts = "$env:SystemRoot\System32\drivers\etc\hosts"
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If($is_blocked) {
$newhosts = Get-Content -Path $hosts |
Where-Object {

$_ -notmatch ([regex]::Escape($Url))
}
Set-Content -Path $hosts -Value $newhosts
}
}

powershell - функция блокировки сайтов в файле hosts

Можно добавить эти функции в файл профиля PowerShell, после чего чтобы добавить сайт в заблокированные достаточно выполнить команду:

BlockSiteHosts ("vk.com")

Чтобы разблокировать сайт:

UnBlockSiteHosts ("vk.com")

Однако, если у вас настроено разрешение имен через DNS over HTTPS, браузеры могут игнорировать записи в файле hosts (в частности, Mozilla Firefox по умолчанию использует режим разрешения через DoH через сервера Cloudflare). Поэтому такой способ блокировки сайтов не будет особо эффективным.

DNSoverHTTPS в браузере обходит блокировки в hosts

Как заблокировать сайт в браузере с помощью групповых политик?

Для блокировки определенный сайтов в браузерах пользователей можно использовать групповые политики (GPO). Единственный нюанс, для каждого браузера идет свой набор шаблонов групповых политик, которые не будет работать для других браузеров. Поэтому администратору в первую очередь нужно ограничить запуск любых браузеров, кроме разрешенных (через AppLocker или SRP).

Рассмотрим, как запретить доступ к сайту в браузере Microsoft Edge:

  1. Скачайте и установите административные шаблоны GPO для браузера MS Edge (подробнее об установке ADMX шаблонов GPO)
  2. Откройте редактор локальной GPO ( gpedit.msc ) или редактор доменных политик GPMC (если блокируете доступ к сайту на нескольких машинах в домене)
  3. Перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Microsoft Edge.
  4. Включите параметр Block access to a list of URLs, нажмите кнопку Show и добавьте список адресов сайтов, которые нужно заблокировать.Групповая политика для блокировки сайта в браузере edge
  5. Сохраните настройки политики и обновите их на клиенте: gpupdate /force

Теперь при попытке открыть запрещенный сайт в браузере Edge появится надпись:

Website is blocked
Your organization doesn’t allow you to view this site.
 сайт заблокирован политиками организации

Если вы используете Google Chrome в качестве основного браузера, нужно скачать и установить ADMX политики для Chrome и аналогичным образом настроить в них параметр Block access to a list of URLs.

Политика блокировки сайтов в chrome: Block access to a list of URLs

Групповые политики для браузеров позволят гибко создать запреты доступа к сайтом и/или исключения (в зависимости от того, хотите ли вы использовать белый или черный список сайтов).

Заблокировать IP адрес сайта в брандмауэре Windows

Можно заблокировать определенные сайты или домены с помощью правил встроенного Windows Firewall. Однако в Брандмауэре Windows в качестве источника/назначения позволяет указать только IP адрес или подсеть, поэтому впрямую указать имя сайта нельзя.

Сначала нужно отрезолвить имя сайта в IP адрес. Воспользуйтесь командой:

nslookup ok.ru

или

Resolve-DnsName ok.ru

nslookup - получения ip адресов сайта

Команда вернула несколько IP адресов сайта. Вам нужно заблокировать их все.

Теперь нужно запустить панель настройки Windows Firewall (Панель управления \Все элементы панели управления\Брандмауэр Защитника Windows\Дополнительные параметры или firewall.cpl ).

В секции “Правила для исходящих подключений” создайте новое правило со следующими параметрами: Windows Firewall создать исходящее правило

  • Тип правила: Настраиваемые;
  • Программа: Все программы;
  • Тип протокола: Любой;
  • Область: в секции “Укажите удаленные IP адреса, к которым применяется данное правило” выберите пункт “Указанные IP адреса” -> Добавить. В открывшемся окне укажите IP адреса, IP подсети или диапазон IP адресов сайтов, которые нужно заблокировать.

указать ip адреса для блокировки

Нажмите OK-> Далее -> Действие: “Блокировать подключение”.

windows firewall блокировать подключение

В окне со списком профилей брандмауэра (типов сетей), к которым применяется это правило оставьте все опции. Осталось указать имя правила и сохранить его.

Максимальное количество IP адресов и подсетей в одном правиле Windows Defender Firewall ограничено. На практике, не рекомендуется указывать более 3000 адресных объектов в одном правиле

В домене AD можно применить на компьютеры пользователей политику, блокирующую сайт с помощью GPO. Но еще раз скажем, это нецелесообразно. Фильтровать сайты правильнее на шлюзе доступа в Интернет.

PowerShell: блокировка сайтов по имени и IP адресу в брандмауэре Windows

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

New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress 217.20.147.1, 217.20.141.0/26

New-NetFirewallRule - создать правило блокировки сайта PowerShell

Для автоматического резолвинга имени сайта в IP можно использовать PowerShell командлет Resolve-DnsName:

Resolve-DnsName "ok.ru"| Select-Object -ExpandProperty IPAddress

Resolve-DnsName

Таким образом чтобы отрезвить имя сайта в IP адрес и сразу добавить запрещающее правило для блокирования доступа к нему, используйте такой скрипт:

$SitesToBlock = "lenta.ru","mail.ru","ok.com"
$IPAddress = $SitesToBlock | Resolve-DnsName -NoHostsFile | Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Web Sites" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress

Параметр -NoHostsFile позволяет игнорировать файл hosts.

Проверим, что блокирующее правило для исходящего появилось в консоли.

block web sites правило в консоли windows defender firewall

Эта статья прежде всего разминка для ума. В корпоративной сети для ограничения доступа к сайтам нужно использовать фильтрацию на уровне шлюза доступа в интернет или прокси-сервере. Блокировка доступа на уровне хостов не столь эффективна.


Предыдущая статья Следующая статья


Комментариев: 3 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)