Как да блокирам достъпа до сайт в Windows с помощта на PowerShell

Ето няколко начина да ви помогнем да откажете достъп до конкретни сайтове, URL адреси и IP адреси в Windows, без да използвате програми на трети страни. Обикновено е най-ефективно да конфигурирате блокирането на сайтове на ниво мрежов шлюз (рутер, рутер, Wi-Fi точка за достъп, през който имате достъп до Интернет) или да използвате софтуер на трети страни (филтри за съдържание, DNS филтри и др.). В нашия случай ще се опитаме да блокираме конкретен сайт, използвайки вградените инструменти за Windows 10 и автоматизацията на PowerShell.

Съдържание:

  • Блокирайте сайтовете в Windows, като използвате файла с хостове
  • Блокиране на сайтове чрез DNS
  • Ние блокираме IP адреса на сайта в защитната стена на Windows
  • PowerShell: правила за блокиране на сайтове по име и IP адрес в защитната стена на Windows

Блокирайте сайтовете в Windows, като използвате файла с хостове

Най-известният начин за блокиране на конкретен сайт в Windows е да редактирате файла. Силите. Обикновено файлът е в директорията % windir% \ system32 \ драйвери \ и т.н. \. Имайте предвид, че файлът с хостове няма разширение.

Пътят до директорията с файла host е зададен в параметъра DataBasePath в клона на регистъра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Параметри. По подразбиране това е% SystemRoot% \ System32 \ драйвери \ и т.н..

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

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

127.0.0.1 ok.ru
127.0.0.1 www.ok.ru

Запишете файла и рестартирайте компютъра (или изчистете кеша на DNS с командата: ipconfig / flushdns).

След това, когато се опитате да отворите уеб сайта ok.ru във всеки браузър, ще се появи съобщението „Страницата не е намерена“ / „Страницата не е налична“..

Можете да добавите нови редове от URL адресите на сайтове към файла с хостове, като използвате такъв файл bat:

@echo off
задайте hostspath =% windir% \ System32 \ driver \ etc \ hosts
ехо 127.0.0.1 www.facebook.com >>% hostspath%
ехо 127.0.0.1 facebook.com >>% домакин път
изход

Или можете да използвате следните функции PowerShell, за да автоматизирате блокирането (деблокирането) на определени сайтове в списъка със забранени домейни във файла с хостове.

Функция BlockSiteHosts ([Параметър (Задължителен = $ true)] $ Url)
$ hosts = 'C: \ Windows \ System32 \ драйвери \ etc \ hosts'
$ is_blocked = Get-Content -Path $ hosts |
Select-String -Pattern ([regex] :: Escape ($ Url))
Ако (-не $ is_blocked)
$ hoststr = "127.0.0.1" + $ URL
Add-Content -Path $ hosts -Value $ hoststr

Функция UnBlockSiteHosts ([Параметър (Задължителен = $ true)] $ Url)
$ hosts = 'C: \ Windows \ System32 \ драйвери \ etc \ hosts'
$ is_blocked = Get-Content -Path $ hosts |
Select-String -Pattern ([regex] :: Escape ($ Url))
Ако ($ is_blocked)
$ newhosts = Get-Content -Path $ hosts |
Къде-обект
$ _ -notmatch ([regex] :: Escape ($ Url))

Set-Content -Path $ hosts -Value $ newhosts

Сега, за да добавите конкретен сайт към блокираните, е достатъчно да изпълните функцията:

BlockSiteHosts ("vk.com")

За да отключите сайта, стартирайте:

UnBlockSiteHosts ("vk.com")

Блокиране на сайтове чрез DNS

Ако вашите клиенти използват същия DNS сървър, можете по подобен начин да блокирате определени сайтове, като създадете DNS запис в този DNS, сочейки към 127.0.0.1 (или нещо подобно). По този принцип, между другото, работят повечето комерсиални филтри за съдържание на DNS (OpenDNS, SkyDNS, Yandex.DNS и т.н.).

Ние блокираме IP адреса на сайта в защитната стена на Windows

Можете също да блокирате определени сайтове, като използвате вградената защитна стена на Windows. Основният недостатък на този метод е, че не можете да използвате името на домейна или сайта в правилото за блокиране. Защитната стена на Windows като източник / дестинация ви позволява да посочите само IP адрес или подмрежа.

Първо трябва да определите IP адреса на сайта, който искате да блокирате. Най-лесният начин да направите това е с командата nslookup.

nslookup ok.ru

Както можете да видите в резултатите от командата има няколко IP адреси, които са присвоени на сайта. Трябва да ги блокирате всички.

Сега трябва да стартирате панела за настройки на защитната стена на Windows (Контролен панел \ Всички елементи на контролния панел \ Защитна стена на Windows Defender \ Разширени настройки или firewall.cpl).

В раздел „Изходящи правила”Създайте ново правило със следните параметри:

  • Тип правило: Персонализирано;
  • Програмата: Всички програми;
  • Тип протокол: Всякакви;
  • област: в секцията „Посочете отдалечени IP адреси, към които се прилага това правило“, изберете „Определени IP адреси“ -> Добавяне. В прозореца, който се отваря, посочете IP адресите, IP подмрежите или обхвата на IP адресите на сайтове, които искате да блокирате.

Щракнете върху OK-> Next -> Action: “Блокова връзка".

В прозореца със списъка на профилите на защитната стена, към които се прилага това правило, оставете всички опции. Остава да посочите името на правилото и да го запазите.

След това защитната стена на Windows Defender ще блокира всички връзки към този сайт. Когато се свързвате с блокиран сайт, в браузъра ще се появи грешка:

Не може да се свърже

или

Достъпът до Интернет е затворен
Връзката може да бъде блокирана от защитна стена или антивирусен софтуер..
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

Редът „Правилото е анализиран успешно от магазина“ показва, че правилото е приложено успешно новото правило за защитна стена. Можете да го намерите в GUI на защитната стена на Windows.

За да избегнете ръчно разрешаване на име на сайт към IP адреси, можете да използвате командлета PowerShell Разрешаване-DnsName за да получите IP адресите на сайтовете.

Разреши-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 за няколко сайта едновременно:

$ SitesToBlock = „lenta.ru”, „mail.ru”, „facebook.com”
$ IPAddress = $ SitesToBlock | Разреши-DnsName -NoHostsFile | Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Блокиране на уеб сайтове" -Насочване на изхода -ЛокаленПорт -Протокол Всяка -Блок -Ремотиране на адрес IP IP адрес

За командлета Resolve-DnsName добавих параметър -NoHostsFile, за да не се използва хост файла при проверка.

Нека да проверим дали правилото за блокиране на изходящото се е появило в конзолата.

Тази статия е преди всичко тренировка за ума. В корпоративна мрежа, за да ограничите достъпа до сайтове, трябва да използвате филтриране на ниво шлюз за достъп до Интернет или прокси сървър. Блокирането на ниво домакин не е толкова ефективно.