Как заблокировать доступ к сайту в Windows с помощью PowerShell

08.06.2022

itpro

Windows 10, Windows Server 2016

комментария 3
Рассмотрим несколько способов, которые помогут вам запретить доступ к отдельным сайтам, URL и IP адресам в Windows без использования сторонних программ. Обычно блокировку сайтов наиболее эффективно настраивать на уровне сетевого шлюза (роутер, маршрутизатор, Wi-Fi точка доступа, через которую вы выходите в Интернет), или с помощью стороннего ПО (фильтры контента, DNS фильтры и т.д.). В нашем случае мы попробуем заблокировать определенный сайт с помощью встроенных средств Windows 10 и автоматизации PowerShell.
Блокировка сайтов в Windows с помощью файла hosts
Самый известный способ заблокировать определенный сайт в Windows – отредактировать файл hosts. Обычно файл находится в каталоге %windir%\system32\drivers\etc\. Обратите внимание, что у файла hosts нет расширения.

Путь к каталогу с файлом hosts задается в параметре DataBasePath в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters. По-умолчанию это %SystemRoot%\System32\drivers\etc.
Файл hosts используется для ручного назначения соответствий между IP адресами и DNS именами. При выполнении разрешении имен файл hosts имеет приоритет над DNS серверами, указанными в настройках сетевых подключений,
Чтобы заблокировать определенный сайт (например, ok.ru), откройте на редактирование файл hosts (с правами администратора) и добавьте в него строки вида:
127.0.0.1 ok.ru
127.0.0.1 www.ok.ru

Сохраните файл и перезагрузите компьютер (или очистите DNS кэш командой: ipconfig /flushdns ).
После этого при попытке открыть сайт ok.ru в любом браузере будет появляется сообщение “Страница не найдена” / “Страница не доступна”.
Вы можете добавлять новые строки с URL сайтов в файл hosts с помощью такого bat файла:
@echo off
set hostspath=%windir%\System32\drivers\etc\hosts
echo 127.0.0.1 www.facebook.com >> %hostspath%
echo 127.0.0.1 facebook.com >> %hostspath%
exit
Либо можно воспользоваться следующими PowerShell функциями для автоматизации блокировки (разблокировки) определенных сайтов в списке запрещенных доменов в файле hosts.
Function BlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) $hosts = ‘C:\Windows\System32\drivers\etc\hosts’
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If(-not $is_blocked) $hoststr yandex_rtb_R-A-78675-12″>
Where-Object <
$_ -notmatch ([regex]::Escape($Url))
>
Set-Content -Path $hosts -Value $newhosts
>
>

Теперь чтобы добавить определенный сайт в заблокированные достаточно выполнить функцию:
Чтобы разблокировать сайт запустите:
Блокировка сайтов через DNS
Если ваши клиенты пользуются одним DNS сервером, вы можете аналогичным образом заблокировать определенный сайты с помощью создания DNS записи в этом DNS, указывающей на 127.0.0.1 (или что-то в таком роде). По такому принципу, кстати, работают большинство коммерческих контент фильтров DNS (OpenDNS, SkyDNS, Яндекс.DNS и т.д.).
Блокируем IP адрес сайта в брандмауэре Windows
Также вы можете заблокировать определенные сайты с помощью встроенного Windows Firewall. Главный недостаток такого метода – вы не сможете использовать имя домена или сайта в правиле блокировке. Брандмауэр Windows в качестве источника/назначения позволяет указать только IP адрес или подсеть.
Сначала нужно определить IP адрес сайта, который вы хотите заблокировать. Проше всего это сделать командой nslookup.

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

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

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

В окне со списком профилей брандмауэра, к которым применяется это правило оставьте все опции. Осталось указать имя правила и сохранить его.
После этого Брандмауэр Защитника Windows будет блокировать все соединения с данным сайтом. В браузере при подключении к заблокированному сайту будет появляться ошибка:
Unable to connect
Доступ в Интернет закрыт
Возможно, подключение заблокирована брандмауэром или антивирусным ПО.
ERR_NETWORK_ACCESS_DENIED
В домене 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

Строка “ The rule was parsed successfully from the store” говорит о том, что правило новое правило брандмауэра успешно применено. Вы можете найти его в графическом интерфейсе Windows Firewall.

Чтобы не резолвить имя сайта в IP адреса вручную можно использовать PowerShell командлет Resolve-DnsName для получения IP адресов сайтов.
Resolve-DnsName «ok.ru»| Select-Object -ExpandProperty IPAddress

Таким образом мы можем преобразовать имя домена в IP адреса и сразу добавить запрещающее правило для блокирования доступа к сайту:
$IPAddress = Resolve-DnsName «ok.ru»| Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName «Block Site» -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress
Получается, что теперь вы можете добавить запрещающее правило в Windows Firewall сразу для нескольких сайтов:
$SitesToBlock = “lenta.ru”,”mail.ru”,”facebook.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
У командлета Resolve-DnsName я добавил параметр –NoHostsFile, чтобы не использовать при проверке файл hosts.
Проверим, что блокирующее правило для исходящего появилось в консоли.

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

В сегодняшней статье рассмотрим пару способов блокирования определенных сайтов, чтобы они не открывались во всех браузерах на вашем компьютере.
Если вы хотите кому-то закрыть доступы к определенному сайту – желательно этому пользователю создать учетную запись без прав администратора и запретить открытие заданных сайтов. Конечно вы можете запретить открытие сайтов и пользователю, под которым входите в компьютер, но если данный пользователь с правами администратора – он может, используя данную инструкцию, снова разрешить вход на нужный ему сайт. Если вы выполните один из вариантов описанных ниже и внесете определенные сайты в список запрещенных – выбранные вами сайты не будут открываться во всех браузерах. Хотя есть и исключения: в opera и яндекс браузере можно включить vpn, он будет открывать запрещенные сайты (решение данной проблемы – создание пользователя без прав администратора и удаление данных браузеров); анонимайзеры, через них можно заходить на любой сайт (данный вопрос можно решить только добавив большую их часть в список запрещенных). Инструкция писалась в Windows 10, но способы подходят для всех версий Windows.
Заблокировать сайты в hosts
Самый простой способ не требующий установки дополнительного программного обеспечения.
1. Откройте “Блокнот” от имени администратора: один из способов – в строке поиска напишите “Блокнот”, нажмите на найденном варианте правой клавишей мыши и выберите “Запустить от имени администратора”.

2. В открывшемся блокноте зайдите в “Файл” => Открыть.

3. В адресную строку вставьте C:\Windows\System32\drivers\etc и нажмите клавишу Enter => справа внизу вместо “Текстовые документы” выберите “Все файлы” => выберите появившийся файл hosts и нажмите на “Открыть”.

4. Ниже всех надписей с новой строки напишите 127.0.0.1 имя сайта (вместо “имя сайта” напишите сайт, доступ к которому вы хотите заблокировать. К примеру нам нужно заблокировать доступ к нескольким сайтам: www.youtube.com, https://yandex.ua и https://vk.com – введите после всего написанного в файле hosts надписи:
127.0.0.1 www.youtube.com
127.0.0.1 https://yandex.ua
127.0.0.1 https://vk.com
Каждая надпись вводится с новой строки, смотрите на рисунке.

5. Сохраните изменения зайдя в “Файл” => “Сохранить”, или нажав клавиши Ctrl+S, после чего закройте блокнот.

Попробуйте в любом браузере открыть один из заблокированных вами сайтов, вы увидите ошибку “Не удается получить доступ к сайту”. Чтобы вернуть всё как было – проделайте с первого по третий пункт и удалите добавленные вами строки, после чего сохраните и закройте файл.
Заблокировать сайты с помощью URL Blocker
Есть множество утилит, которые сделают тоже самое, что мы описывали в предыдущем пункте. Мы будем использовать небольшую утилиту URL Blocker, которая не требует установки и не предлагает никакой рекламы.
1. Скачайте URL Blocker. Внизу открывшейся страницы нажмите на “Download” и откройте скачанный файл.

2. Возможно система напишет, что данный файл может подвергнуть компьютер риску. Нажмите на “Подробнее” и выберите “Выполнить в любом случае”.


3. В нижнюю строку введите адрес сайта, доступ к которому нужно заблокировать и нажмите на “Add”.

Все введенные вами адреса будут отображаться в поле выше, чтобы применить изменения и заблокировать к ним доступ нажмите на “Apply”. Чтобы изменения вступили в силу вам нужно выйти из системы и войти снова, для этого нажмите на “Да”.

Попробуйте в любом браузере открыть один из заблокированных вами сайтов, вы увидите ошибку “Не удается получить доступ к сайту”. Чтобы вернуть всё как было – откройте приложение снова, нажмите на “Default”, после чего подтвердите нажав на “Да”.

На сегодня всё, если у вас есть дополнения или вы знаете другие способы – пишите комментарии! Удачи Вам
Как заблокировать доступ к сайту в Windows с помощью PowerShell

08.06.2022

itpro

Windows 10, Windows Server 2016

комментария 3
Рассмотрим несколько способов, которые помогут вам запретить доступ к отдельным сайтам, URL и IP адресам в Windows без использования сторонних программ. Обычно блокировку сайтов наиболее эффективно настраивать на уровне сетевого шлюза (роутер, маршрутизатор, Wi-Fi точка доступа, через которую вы выходите в Интернет), или с помощью стороннего ПО (фильтры контента, DNS фильтры и т.д.). В нашем случае мы попробуем заблокировать определенный сайт с помощью встроенных средств Windows 10 и автоматизации PowerShell.
Блокировка сайтов в Windows с помощью файла hosts
Самый известный способ заблокировать определенный сайт в Windows – отредактировать файл hosts. Обычно файл находится в каталоге %windir%\system32\drivers\etc\. Обратите внимание, что у файла hosts нет расширения.

Путь к каталогу с файлом hosts задается в параметре DataBasePath в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters. По-умолчанию это %SystemRoot%\System32\drivers\etc.
Файл hosts используется для ручного назначения соответствий между IP адресами и DNS именами. При выполнении разрешении имен файл hosts имеет приоритет над DNS серверами, указанными в настройках сетевых подключений,
Чтобы заблокировать определенный сайт (например, ok.ru), откройте на редактирование файл hosts (с правами администратора) и добавьте в него строки вида:
127.0.0.1 ok.ru
127.0.0.1 www.ok.ru

Сохраните файл и перезагрузите компьютер (или очистите DNS кэш командой: ipconfig /flushdns ).
После этого при попытке открыть сайт ok.ru в любом браузере будет появляется сообщение “Страница не найдена” / “Страница не доступна”.
Вы можете добавлять новые строки с URL сайтов в файл hosts с помощью такого bat файла:
@echo off
set hostspath=%windir%\System32\drivers\etc\hosts
echo 127.0.0.1 www.facebook.com >> %hostspath%
echo 127.0.0.1 facebook.com >> %hostspath%
exit
Либо можно воспользоваться следующими PowerShell функциями для автоматизации блокировки (разблокировки) определенных сайтов в списке запрещенных доменов в файле hosts.
Function BlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) $hosts = ‘C:\Windows\System32\drivers\etc\hosts’
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If(-not $is_blocked) $hoststr yandex_rtb_R-A-78675-12″>
Where-Object <
$_ -notmatch ([regex]::Escape($Url))
>
Set-Content -Path $hosts -Value $newhosts
>
>

Теперь чтобы добавить определенный сайт в заблокированные достаточно выполнить функцию:
Чтобы разблокировать сайт запустите:
Блокировка сайтов через DNS
Если ваши клиенты пользуются одним DNS сервером, вы можете аналогичным образом заблокировать определенный сайты с помощью создания DNS записи в этом DNS, указывающей на 127.0.0.1 (или что-то в таком роде). По такому принципу, кстати, работают большинство коммерческих контент фильтров DNS (OpenDNS, SkyDNS, Яндекс.DNS и т.д.).
Блокируем IP адрес сайта в брандмауэре Windows
Также вы можете заблокировать определенные сайты с помощью встроенного Windows Firewall. Главный недостаток такого метода – вы не сможете использовать имя домена или сайта в правиле блокировке. Брандмауэр Windows в качестве источника/назначения позволяет указать только IP адрес или подсеть.
Сначала нужно определить IP адрес сайта, который вы хотите заблокировать. Проше всего это сделать командой nslookup.

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

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

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

В окне со списком профилей брандмауэра, к которым применяется это правило оставьте все опции. Осталось указать имя правила и сохранить его.
После этого Брандмауэр Защитника Windows будет блокировать все соединения с данным сайтом. В браузере при подключении к заблокированному сайту будет появляться ошибка:
Unable to connect
Доступ в Интернет закрыт
Возможно, подключение заблокирована брандмауэром или антивирусным ПО.
ERR_NETWORK_ACCESS_DENIED
В домене 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

Строка “ The rule was parsed successfully from the store” говорит о том, что правило новое правило брандмауэра успешно применено. Вы можете найти его в графическом интерфейсе Windows Firewall.

Чтобы не резолвить имя сайта в IP адреса вручную можно использовать PowerShell командлет Resolve-DnsName для получения IP адресов сайтов.
Resolve-DnsName «ok.ru»| Select-Object -ExpandProperty IPAddress

Таким образом мы можем преобразовать имя домена в IP адреса и сразу добавить запрещающее правило для блокирования доступа к сайту:
$IPAddress = Resolve-DnsName «ok.ru»| Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName «Block Site» -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress
Получается, что теперь вы можете добавить запрещающее правило в Windows Firewall сразу для нескольких сайтов:
$SitesToBlock = “lenta.ru”,”mail.ru”,”facebook.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
У командлета Resolve-DnsName я добавил параметр –NoHostsFile, чтобы не использовать при проверке файл hosts.
Проверим, что блокирующее правило для исходящего появилось в консоли.

Эта статья прежде всего разминка для ума. В корпоративной сети для ограничения доступа к сайтам нужно использовать фильтрацию на уровне шлюза доступа в интернет или прокси-сервере. Блокировка доступа на уровне хостов не столь эффективна.
Предыдущая статья Следующая статья
Windows 10 Как заблокировать любые сайты на вашем ПК.
Наверно большая часть нашей жизни можно сегодня назвать цифровой. Мы посещаем десятки сайтов каждый день, чтобы получать и обмениваться информацией. Но сайты, которые мы посещаем, возможно, не совсем подходят для наших детей.
Если вы делите свой Windows 10 PC с детьми, это хорошая идея, блокировать доступ к определенным веб-сайтам на вашем компьютере.
Конечно, существуют десятки бесплатных и коммерческих программных продуктов, позволяющих блокировать веб-сайты на компьютере, но вы можете использовать встроенную в файл host блокировку URL-адреса на компьютере Windows. Это просто, все что нужно сделать — добавить URL-адрес веб-сайта в файл host. Ни один из браузеров, установленных на вашем компьютере не сможет открыть заблокированные вами сайты.
Как блокировать веб-сайты на вашем Windows 10 ПК путем редактирования файла host.
Как уже говорилось, вы можете блокировать веб-сайты на вашем Windows 10 ПК без установки какого-либо дополнительного программного обеспечения. Все, что вам нужно сделать, это отредактировать файл host. Вот как это сделать.
Шаг 1: Откройте программу Блокнот от имени администратора. Для этого введите — Блокнот в меню Пуск или на панели задач в поле поиска, кликните правой кнопкой мыши на значок блокнота, а затем выберите Запуск от имени администратора.


Нажмите кнопку Да, когда появится окно управления учетными записями пользователей.
Шаг 2: В окне программы Блокнот, нажмите кнопку меню Файл, нажмите кнопку Открыть.

C:\Windows\System32\Drivers\Etc
(где «C» буква диска где установлена Windows 10) и выберите файл host.
Примечание: вам потребуется изменить тип файла текстовые документы на все файлы (см рисунок ниже)


Нажмите кнопку Открыть, чтобы открыть файл с помощью блокнота.
Шаг 3: После того, как файл host открыт с помощью блокнота, добавьте URL адреса веб — сайтов, к которым вы хотите, заблокировать, запретить доступ на вашем ПК следующим образом:
127.0.0.1 www.bing.com
127.0.0.1 www.google.com

Шаг 4: После добавления адресов сайтов, откройте меню Файл, а затем нажмите кнопку Сохранить или нажмите сочетания клавиш Ctrl + S , чтобы сохранить изменения. Все!
Теперь попробуйте открыть один из введенных для блокировки сайтов в любом из веб-браузеров на вашем компьютере. С этого момента ни один из заблокированных сайтов не будет загружаться на вашем компьютере.
Для того, чтобы снова разблокировать сайты, снова откройте файл host, и удалите адрес сайта из файла host. Сохраните файл.