Tìm kiếm trang web

Làm cách nào để chặn miền hoặc trang web trên Tường lửa của Bộ bảo vệ Windows bằng PowerShell?


Hãy xem xét một số cách để chặn quyền truy cập vào các trang web, tên miền, URL hoặc địa chỉ IP cụ thể trong Windows mà không cần sử dụng các công cụ của bên thứ ba. Trong trường hợp của chúng tôi, chúng tôi sẽ cố gắng chặn một số trang web nhất định bằng các công cụ Windows 10 tích hợp sẵn và các tính năng tự động hóa PowerShell.

Thông thường, việc chặn các trang web trên bộ định tuyến mạng của bạn (bộ chuyển mạch hoặc điểm truy cập Wi-Fi bạn đang sử dụng để truy cập Internet) hoặc sử dụng phần mềm của bên thứ ba (bộ lọc nội dung, bộ lọc DNS, v.v.) sẽ dễ dàng hơn.

Chặn trang web bằng tệp máy chủ trong Windows

Phương pháp phổ biến nhất để chặn một trang web cụ thể trên Windows là chỉnh sửa tệp hosts. Thông thường, nó nằm trong thư mục %windir%\system32\drivers tc\. Xin lưu ý rằng tệp máy chủ không có phần mở rộng.

Đường dẫn đến thư mục chứa tệp hosts được đặt trong tham số DataBasePath trong khóa đăng ký HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters . Theo mặc định, nó là %SystemRoot%\System32\drivers tc.

Tệp máy chủ được sử dụng để gán thủ công ánh xạ giữa địa chỉ IP và tên DNS. Khi phân giải tên, máy chủ có mức độ ưu tiên cao hơn máy chủ DNS được chỉ định trong cài đặt kết nối mạng.

Để chặn một trang web cụ thể (ví dụ: facebook.com), hãy mở tệp máy chủ (với quyền quản trị viên) và thêm các chuỗi như sau vào tệp:

127.0.0.1 facebook.com
127.0.0.1 www.facebook.com

Lưu tệp và khởi động lại máy tính của bạn (hoặc xóa bộ đệm DNS bằng lệnh:

ipconfig /flushdns

).

Sau đó, khi thử mở facebook.com trên bất kỳ trình duyệt nào, bạn sẽ thấy thông báo “Không tìm thấy trang”/“Không có trang”.

Bạn có thể thêm các dòng mới chứa URL trang web vào tệp máy chủ của mình bằng tệp .bat như vậy:

@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

Hoặc bạn có thể sử dụng các chức năng PowerShell sau để tự động chặn các trang web cụ thể trong tệp máy chủ của mình.

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="127.0.0.1 ” + $Url
Add-Content -Path $hosts -Value $hoststr
}
}
Function UnBlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) {
$hosts = 'C:\Windows\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
}
}

Để thêm một trang web vào danh sách các URL bị chặn, chỉ cần thực hiện lệnh:

BlockSiteHosts ("twitter.com")

Để bỏ chặn trang web, hãy chạy:

UnBlockSiteHosts ("twitter.com")

Chặn trang web bằng cách sử dụng bộ lọc DNS

Nếu khách hàng của bạn sử dụng cùng một máy chủ DNS, theo cách tương tự, bạn có thể chặn một số trang web nhất định bằng cách tạo một mục nhập DNS trong DNS đó và chỉ định một cái gì đó như 127.0.0.1 trong đó. Nhân tiện, hầu hết các bộ lọc nội dung DNS thương mại (OpenDNS, SafeDNS, Cisco Umbrella, v.v.) đều sử dụng cùng một nguyên tắc.

Làm cách nào để chặn địa chỉ IP của trang web trong Tường lửa của Bộ bảo vệ Windows?

Ngoài ra, bạn có thể chặn một số trang web bằng Tường lửa bảo vệ Windows tích hợp. Nhược điểm chính của phương pháp này là bạn sẽ không thể sử dụng tên miền hoặc URL của trang web trong quy tắc chặn. Tường lửa của Bộ bảo vệ Windows cho phép bạn chỉ định một địa chỉ IP hoặc một mạng con làm nguồn/đích.
Trước hết, bạn phải lấy địa chỉ IP của trang web mà bạn muốn chặn. Sẽ dễ thực hiện hơn bằng cách sử dụng lệnh nslookup:

nslookup twitter.com

Như bạn có thể thấy, lệnh đã trả về một số địa chỉ IP được gán cho trang web. Bạn phải chặn tất cả chúng.

Chạy phần bổ trợ quản lý Tường lửa của Bộ bảo vệ Windows (Bảng điều khiển\Tất cả các mục trong Bảng điều khiển\Tường lửa của Bộ bảo vệ Windows\Cài đặt nâng cao hoặc bằng cách chạy firewall.cpl).

Trong phần Quy tắc gửi đi, hãy tạo quy tắc mới với các cài đặt sau:

  • Loại quy tắc: Tùy chỉnh

  • Chương trình: Tất cả các chương trình

  • Loại giao thức: Bất kỳ

  • Phạm vi: Trong phần “Quy tắc này áp dụng cho những địa chỉ IP từ xa nào? ” chọn “Những địa chỉ IP này” -> Thêm. Trong cửa sổ tiếp theo, nhập địa chỉ IP, mạng con hoặc dải địa chỉ IP mà bạn muốn chặn.

Nhấp vào OK -> Tiếp theo -> Hành động -> Chặn kết nối.

Giữ nguyên tất cả các tùy chọn trong cửa sổ với các cấu hình Tường lửa mà quy tắc được áp dụng. Sau đó chỉ định tên quy tắc và lưu nó.

Sau đó, Tường lửa của Bộ bảo vệ Windows sẽ chặn tất cả các kết nối gửi đến các địa chỉ IP của trang web được chỉ định. Thông báo sau sẽ xuất hiện trong trình duyệt của bạn khi cố gắng kết nối với trang web bị chặn:

Unable to connect

Hoặc

Your Internet access is blocked
Firewall or antivirus software may have blocked the connection
ERR_NETWORK_ACCESS_DENIED

Trong miền AD của bạn, bạn có thể triển khai chính sách Tường lửa của Windows để chặn quyền truy cập vào trang web trên máy tính người dùng bằng GPO. Tuy nhiên, nó không hợp lý. Tốt hơn là bạn nên lọc các trang web trên bộ định tuyến (cổng) truy cập Internet của mình.

Sử dụng PowerShell để tạo quy tắc tường lửa để chặn trang web theo tên miền hoặc địa chỉ IP

Bạn cũng có thể tạo quy tắc Tường lửa chặn kết nối đến trang web bằng PowerShell:

New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound -LocalPort Any -Protocol Any -Action Block -RemoteAddress 104.244.42.129, 104.244.42.0/24

Chuỗi “Quy tắc đã được phân tích cú pháp thành công từ cửa hàng” có nghĩa là quy tắc Tường lửa mới đã được áp dụng thành công. Bạn có thể tìm thấy nó trong giao diện đồ họa của Tường lửa bảo vệ Windows.

Để không phân giải tên trang web thành địa chỉ IP theo cách thủ công, bạn có thể sử dụng lệnh ghép ngắn Resolve-DnsName PowerShell để lấy địa chỉ IP của trang web:

Resolve-DnsName "twitter.com"| Select-Object -ExpandProperty IPAddress

Do đó, bạn có thể chuyển đổi tên của trang web thành địa chỉ IP của nó và thêm quy tắc chặn vào cài đặt tường lửa:


$IPAddress = Resolve-DnsName "twitter.com"| Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound -LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress

Vì vậy, giờ đây bạn có thể thêm quy tắc chặn vào Tường lửa Windows của mình cho nhiều trang web cùng một lúc:

$SitesToBlock = "facebook.com","instagram.com","youtube.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

Tôi đã thêm tham số -NoHostsFile vào lệnh ghép ngắn Resolve-DnsName để không sử dụng tệp máy chủ để giải quyết.

Hãy đảm bảo rằng một quy tắc gửi ra ngoài khối đã xuất hiện trong bảng điều khiển Tường lửa của Windows.

Bài viết này chủ yếu là một bài tập rèn luyện trí não. Trong mạng công ty, bạn phải sử dụng tính năng lọc trang web trên cổng truy cập Internet, bộ định tuyến hoặc máy chủ proxy. Chặn cấp máy chủ không hiệu quả lắm.

Bài viết liên quan