Computer >> Máy Tính >  >> Hệ thống >> Windows 10

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall 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 các trang web nhất định bằng cách sử dụ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 (công tắc 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 máy chủ lưu trữ tập tin. Thông thường, nó nằm trong % windir% \ system32 \ drivers \ etc \ danh mục. Xin lưu ý rằng tệp máy chủ lưu trữ không có phần mở rộng.

Đường dẫn đến thư mục chứa máy chủ lưu trữ tệp được đặt trong DataBasePath tham số trong khóa đăng ký HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters . Theo mặc định, nó là% SystemRoot% \ System32 \ drivers \ etc. Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

Tệp máy chủ được sử dụng để gán các ánh xạ theo cách thủ công 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ủ lưu trữ (với đặc quyền của quản trị viên) và thêm các chuỗi như sau vào nó:

127.0.0.1 facebook.com
127.0.0.1 www.facebook.com

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

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 cố gắng mở facebook.com trong 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” / “Trang không khả dụng”.

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 cách sử dụ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 bạn.

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
}
}

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

Để 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 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 các trang web nhất định bằng cách tạo 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.) sử dụng cùng một nguyên tắc.

Cách Chặn Địa chỉ IP 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 của Bộ bảo vệ Windows được tích hợp sẵn. 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 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 bạn muốn chặn. Làm điều đó dễ dàng hơn bằng cách sử dụng nslookup lệnh:

nslookup twitter.com

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

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 mềm 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 Quy tắc đi , tạo quy tắc mới với các cài đặt sau:Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

  • 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, hãy nhập địa chỉ IP, mạng con hoặc dải địa chỉ IP mà bạn muốn chặn.

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

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

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

Để nguyên tất cả các tùy chọn trong cửa sổ với 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 đ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 mình, 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 sử dụng GPO. Tuy nhiên, nó không hợp lý. Tốt hơn là lọc các trang web trên bộ định tuyến truy cập Internet (cổng vào) của bạn.

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

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

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 của Bộ bảo vệ Windows.

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

Để 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 Resolve-DnsName Lệnh ghép ngắn PowerShell để lấy địa chỉ IP của trang web:

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

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

Do đó, bạn có thể chuyển đổi tên của trang web thành các đị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, bây giờ 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 –NoHostsFile tham số cho lệnh ghép ngắn Resolve-DnsName để không sử dụng tệp máy chủ để phân giải.

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

Làm cách nào để chặn một miền hoặc trang web trên Windows Defender Firewall bằng PowerShell?

Bài này hầu hết là 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.