Jak zablokować dostęp do witryny w systemie Windows za pomocą programu PowerShell

Oto kilka sposobów, które pomogą Ci odmówić dostępu do określonych witryn, adresów URL i adresów IP w systemie Windows bez korzystania z programów innych firm. Zwykle najskuteczniejsze jest konfigurowanie blokowania witryn na poziomie bramy sieciowej (router, router, punkt dostępu Wi-Fi, za pośrednictwem którego uzyskujesz dostęp do Internetu) lub przy użyciu oprogramowania innych firm (filtry treści, filtry DNS itp.). W naszym przypadku spróbujemy zablokować określoną witrynę za pomocą wbudowanych narzędzi Windows 10 i automatyzacji PowerShell.

Treść

  • Blokuj witryny w systemie Windows za pomocą pliku hosts
  • Blokowanie witryn przez DNS
  • Blokujemy adres IP witryny w zaporze systemu Windows
  • PowerShell: reguły blokowania witryn według nazwy i adresu IP w zaporze systemu Windows

Blokuj witryny w systemie Windows za pomocą pliku hosts

Najbardziej znanym sposobem blokowania określonej witryny w systemie Windows jest edycja pliku. gospodarze. Zwykle plik znajduje się w katalogu % windir% \ system32 \ drivers \ etc \. Pamiętaj, że plik hosts nie ma rozszerzenia.

Ścieżka do katalogu z plikiem hosts jest ustawiona w parametrze DataBasePath w oddziale rejestru HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters. Domyślnie jest to% SystemRoot% \ System32 \ drivers \ etc.

Plik hosts służy do ręcznego przypisywania mapowań między adresami IP i nazwami DNS. Podczas rozwiązywania nazw plik hostów ma pierwszeństwo przed serwerami DNS określonymi w ustawieniach połączenia sieciowego.,

Aby zablokować określoną witrynę (na przykład ok.ru), otwórz plik hosts do edycji (z uprawnieniami administratora) i dodaj wiersze formularza:

127.0.0.1 ok.ru
127.0.0.1 www.ok.ru

Zapisz plik i uruchom ponownie komputer (lub wyczyść pamięć podręczną DNS za pomocą polecenia: ipconfig / flushdns).

Następnie, gdy spróbujesz otworzyć stronę ok.ru w dowolnej przeglądarce, pojawi się komunikat „Nie znaleziono strony” / „Strona niedostępna”.

Możesz dodać nowe wiersze z adresów URL witryn do pliku hosts, używając takiego pliku nietoperza:

@echo wyłączone
set hostspath =% windir% \ System32 \ drivers \ etc \ hosts
echo 127.0.0.1 www.facebook.com >>% hostspath%
echo 127.0.0.1 facebook.com >>% hostspath%
wyjście

Lub możesz użyć następujących funkcji programu PowerShell, aby zautomatyzować blokowanie (odblokowywanie) niektórych witryn na liście zabronionych domen w pliku hosts.

Funkcja BlockSiteHosts ([Parameter (Mandatory = $ true)] $ Url)
$ hosts = 'C: \ Windows \ System32 \ drivers \ etc \ hosts'
$ is_blocked = Get-Content -Path $ hosts |
Select-String -Pattern ([regex] :: Escape ($ Url))
Jeśli (-not $ is_blocked)
$ hoststr = „127.0.0.1” + $ Url
Add-Content -Path $ hosts -Value $ hoststr

Funkcja UnBlockSiteHosts ([Parameter (Mandatory = $ true)] $ Url)
$ hosts = 'C: \ Windows \ System32 \ drivers \ etc \ hosts'
$ is_blocked = Get-Content -Path $ hosts |
Select-String -Pattern ([regex] :: Escape ($ Url))
Jeśli ($ is_blocked)
$ newhosts = Get-Content -Path $ hosts |
Where-Object
$ _ -notmatch ([regex] :: Escape ($ Url))

Set-Content -Path $ hosts -Value $ newhosts

Teraz, aby dodać konkretną stronę do zablokowanych, wystarczy wykonać funkcję:

BlockSiteHosts („vk.com”)

Aby odblokować witrynę, uruchom:

UnBlockSiteHosts („vk.com”)

Blokowanie witryn przez DNS

Jeśli Twoi klienci korzystają z tego samego serwera DNS, możesz podobnie blokować niektóre witryny, tworząc rekord DNS w tym DNS, wskazując na 127.0.0.1 (lub coś w tym rodzaju). Zgodnie z tą zasadą większość komercyjnych filtrów treści DNS działa (OpenDNS, SkyDNS, Yandex.DNS itp.).

Blokujemy adres IP witryny w zaporze systemu Windows

Możesz także blokować niektóre witryny za pomocą wbudowanej Zapory systemu Windows. Główną wadą tej metody jest to, że nie można użyć nazwy domeny lub witryny w regule blokującej. Zapora systemu Windows jako źródło / miejsce docelowe pozwala określić tylko adres IP lub podsieć.

Najpierw musisz określić adres IP witryny, którą chcesz zablokować. Najłatwiej to zrobić za pomocą polecenia nslookup.

nslookup ok.ru

Jak widać w wynikach polecenia, do witryny przypisanych jest kilka adresów IP. Musisz je wszystkie zablokować.

Teraz musisz uruchomić panel ustawień Zapory systemu Windows (Panel sterowania \ Wszystkie elementy panelu sterowania \ Zapora systemu Windows Defender \ Ustawienia zaawansowane lub firewall.cpl).

W sekcji „Reguły wychodzące”Utwórz nową regułę z następującymi parametrami:

  • Rodzaj reguły: Konfigurowalny;
  • Program: Wszystkie programy;
  • Rodzaj protokołu: Any;
  • Powierzchnia: w sekcji „Określ zdalne adresy IP, których dotyczy ta reguła” wybierz „Określone adresy IP” -> Dodaj. W oknie, które zostanie otwarte, określ adresy IP, podsieci IP lub zakres adresów IP witryn, które chcesz zablokować.

Kliknij OK-> Dalej -> Działanie: „Zablokuj połączenie”.

W oknie z listą profili zapory, których dotyczy ta reguła, pozostaw wszystkie opcje. Pozostaje określić nazwę reguły i zapisać ją.

Następnie Zapora systemu Windows Defender zablokuje wszystkie połączenia z tą witryną. Podczas łączenia z zablokowaną witryną w przeglądarce pojawi się błąd:

Nie można się połączyć

lub

Dostęp do Internetu jest zamknięty
Połączenie może zostać zablokowane przez zaporę ogniową lub oprogramowanie antywirusowe..
ERR_NETWORK_ACCESS_DENIED

W domenie AD można rozpowszechniać zasady witryn blokujących za pomocą obiektu zasad grupy na komputerach użytkowników. Ale to znowu jest niepraktyczne. Bardziej poprawnie filtruj witryny w bramie dostępu do Internetu.

PowerShell: reguły blokowania witryn według nazwy i adresu IP w zaporze systemu Windows

Możesz także użyć programu PowerShell, aby utworzyć regułę zapory, która blokuje połączenia wychodzące do określonej witryny:

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

Wiersz „Reguła została pomyślnie przeanalizowana ze sklepu” wskazuje, że reguła została pomyślnie zastosowana nowa reguła zapory. Można go znaleźć w graficznym interfejsie użytkownika Zapory systemu Windows.

Aby uniknąć ręcznego tłumaczenia nazwy witryny na adresy IP, można użyć polecenia cmdlet programu PowerShell Resolve-DnsName aby uzyskać adresy IP witryn.

Resolve-DnsName "ok.ru" | Wybierz obiekt - rozwiń adres IP Adres

W ten sposób możemy przekonwertować nazwę domeny na adresy IP i natychmiast dodać regułę odmowy, aby zablokować dostęp do strony:

$ IPAddress = Resolve-DnsName "ok.ru" | Wybierz obiekt - rozwiń adres IP Adres
New-NetFirewallRule -DisplayName „Zablokuj witrynę” -Kierunek Wychodzące -LocalPort Dowolny-Protokół Dowolny -Akcja Blok -RemoteAddress $ IPAdres

Okazuje się, że teraz możesz dodać regułę odmowy do Zapory systemu Windows dla kilku witryn jednocześnie:

$ SitesToBlock = „lenta.ru”, „mail.ru”, „facebook.com”
$ IPAddress = $ SitesToBlock | Resolve-DnsName -NoHostsFile | Wybierz obiekt - rozwiń adres IP Adres
New-NetFirewallRule -DisplayName „Block Web Sites” -Direction Outbound -LocalPort Any -Protocol Any -Action Block -RemoteAddress $ IPAddress

Do polecenia cmdlet Resolve-DnsName dodałem parametr -NoHostsFile, aby nie używać pliku hosts podczas sprawdzania.

Sprawdźmy, czy reguła blokująca dla ruchu wychodzącego pojawiła się w konsoli.

Ten artykuł jest przede wszystkim treningiem dla umysłu. W sieci firmowej, aby ograniczyć dostęp do witryn, musisz użyć filtrowania na poziomie bramy dostępu do Internetu lub serwera proxy. Blokowanie na poziomie hosta nie jest tak skuteczne.