Cara memblokir akses ke situs di Windows menggunakan PowerShell

Berikut adalah beberapa cara untuk membantu Anda menolak akses ke situs, URL, dan alamat IP tertentu pada Windows tanpa menggunakan program pihak ketiga. Biasanya, ini paling efektif untuk mengonfigurasi pemblokiran situs di tingkat gateway jaringan (router, router, titik akses Wi-Fi di mana Anda mengakses Internet), atau menggunakan perangkat lunak pihak ketiga (filter konten, filter DNS, dll.). Dalam kasus kami, kami akan mencoba memblokir situs tertentu menggunakan alat Windows 10 dan otomatisasi PowerShell bawaan.

Konten:

  • Blokir situs di Windows menggunakan file host
  • Memblokir situs melalui DNS
  • Kami memblokir alamat IP situs di firewall Windows
  • PowerShell: aturan untuk memblokir situs berdasarkan nama dan alamat IP di firewall Windows

Blokir situs di Windows menggunakan file host

Cara paling dikenal untuk memblokir situs tertentu di Windows adalah mengedit file. tuan rumah. Biasanya file tersebut ada di direktori % windir% \ system32 \ drivers \ etc \. Perhatikan bahwa file host tidak memiliki ekstensi.

Path ke direktori dengan file hosts diatur dalam parameter DataBasePath di cabang registri HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameter. Secara default, ini adalah% SystemRoot% \ System32 \ drivers \ dll.

File host digunakan untuk secara manual menetapkan pemetaan antara alamat IP dan nama DNS. Saat menyelesaikan nama, file host didahulukan dari server DNS yang ditentukan dalam pengaturan koneksi jaringan.,

Untuk memblokir situs tertentu (misalnya, ok.ru), buka file host untuk diedit (dengan hak administrator) dan tambahkan baris formulir:

127.0.0.1 ok.ru
127.0.0.1 www.ok.ru

Simpan file dan mulai ulang komputer (atau hapus cache DNS dengan perintah: ipconfig / flushdns).

Setelah itu, ketika Anda mencoba membuka situs web ok.ru di browser apa pun, pesan “Halaman tidak ditemukan” / “Halaman tidak tersedia” akan muncul.

Anda dapat menambahkan baris baru dari URL situs ke file host menggunakan file bat seperti itu:

@echo mati
atur hostspath =% windir% \ System32 \ drivers \ etc \ hosts
gema 127.0.0.1 www.facebook.com >>% hostspath%
gema 127.0.0.1 facebook.com >>% hostspath%
keluar

Atau Anda dapat menggunakan fungsi PowerShell berikut untuk mengotomatiskan pemblokiran (pemblokiran) situs tertentu dalam daftar domain terlarang di file host.

Function BlockSiteHosts ([Parameter (Wajib = $ true)] $ Url)
$ hosts = 'C: \ Windows \ System32 \ drivers \ etc \ hosts'
$ is_blocked = Dapatkan-Konten -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 (Wajib = $ true)] $ Url)
$ hosts = 'C: \ Windows \ System32 \ drivers \ etc \ hosts'
$ is_blocked = Dapatkan-Konten -Path $ hosts |
Select-String -Pattern ([regex] :: Escape ($ Url))
If ($ is_blocked)
$ newhosts = Dapatkan-Konten -Path $ hosts |
Dimana-Obyek
$ _ -notmatch ([regex] :: Escape ($ Url))

Set-Konten -Halaman $ host -Harga $ host baru

Sekarang, untuk menambahkan situs tertentu ke situs yang diblokir, cukup untuk menjalankan fungsinya:

BlockSiteHosts ("vk.com")

Untuk membuka kunci situs, jalankan:

UnBlockSiteHosts ("vk.com")

Memblokir situs melalui DNS

Jika klien Anda menggunakan server DNS yang sama, Anda dapat memblokir situs tertentu dengan cara yang sama dengan membuat catatan DNS di DNS itu, menunjuk ke 127.0.0.1 (atau sesuatu seperti itu). Dengan prinsip ini, omong-omong, sebagian besar filter konten DNS komersial berfungsi (OpenDNS, SkyDNS, Yandex.DNS, dll.).

Kami memblokir alamat IP situs di firewall Windows

Anda juga dapat memblokir situs tertentu menggunakan Firewall Windows bawaan. Kerugian utama dari metode ini adalah Anda tidak dapat menggunakan domain atau nama situs dalam aturan pemblokiran. Windows Firewall sebagai sumber / tujuan memungkinkan Anda untuk menentukan hanya alamat IP atau subnet.

Pertama, Anda perlu menentukan alamat IP situs yang ingin Anda blokir. Cara termudah untuk melakukan ini adalah dengan perintah nslookup.

nslookup ok.ru

Seperti yang Anda lihat di hasil perintah ada beberapa alamat IP yang ditugaskan ke situs. Anda harus memblokir semuanya.

Sekarang Anda perlu memulai panel pengaturan Windows Firewall (Control Panel \ All Control Panel Items \ Windows Defender Firewall \ Advanced Settings atau firewall.cpl).

Di bagian “Aturan Keluar”Buat aturan baru dengan parameter berikut:

  • Jenis aturan: Dapat disesuaikan;
  • Programnya: Semua program;
  • Jenis protokol: Apa saja;
  • Area: di bagian "Tentukan alamat IP jarak jauh yang menjadi aturan ini" pilih "Alamat IP tertentu" -> Tambah. Di jendela yang terbuka, tentukan alamat IP, subnet IP atau kisaran alamat IP situs yang ingin Anda blokir.

Klik OK-> Selanjutnya -> Tindakan: “Blokir koneksi”.

Di jendela dengan daftar profil firewall yang aturan ini berlaku, tinggalkan semua opsi. Tetap menentukan nama aturan dan menyimpannya.

Setelah itu, Windows Defender Firewall akan memblokir semua koneksi ke situs ini. Saat menghubungkan ke situs yang diblokir, kesalahan akan muncul di browser:

Tidak dapat terhubung

atau

Akses internet ditutup
Koneksi dapat diblokir oleh firewall atau perangkat lunak antivirus..
ERR_NETWORK_ACCESS_DENIED

Dalam domain AD, Anda dapat mendistribusikan kebijakan situs pemblokiran menggunakan GPO ke komputer pengguna. Tetapi sekali lagi, ini tidak praktis. Saring situs dengan lebih tepat di gateway akses Internet.

PowerShell: aturan untuk memblokir situs berdasarkan nama dan alamat IP di firewall Windows

Anda juga dapat menggunakan PowerShell untuk membuat aturan firewall yang memblokir koneksi keluar ke situs tertentu:

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

Baris "Aturan berhasil diurai dari toko" menunjukkan bahwa aturan aturan firewall baru telah berhasil diterapkan. Anda dapat menemukannya di GUI Windows Firewall.

Untuk menghindari penyelesaian nama situs ke alamat IP secara manual, Anda dapat menggunakan cmdlet PowerShell Resolve-DnsName untuk mendapatkan alamat IP situs.

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

Dengan demikian, kami dapat mengonversi nama domain menjadi alamat IP dan segera menambahkan aturan tolak untuk memblokir akses ke situs:

$ IPAddress = Putuskan-DnsName "ok.ru" | Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound -LocalPort Any -Protocol Any -Action Block -RemoteAddress $ IPAddress

Ternyata sekarang Anda dapat menambahkan aturan tolak ke Windows Firewall untuk beberapa situs sekaligus:

$ 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

Untuk cmdlet Resolve-DnsName, saya menambahkan parameter -NoHostsFile, agar tidak menggunakan file host saat memeriksa.

Mari kita verifikasi bahwa aturan pemblokiran untuk keluar keluar muncul di konsol.

Artikel ini terutama latihan untuk pikiran. Pada jaringan perusahaan, untuk membatasi akses ke situs, Anda perlu menggunakan pemfilteran pada tingkat gateway akses Internet atau server proxy. Pemblokiran tingkat host tidak begitu efektif.