ค้นหาเว็บไซต์

จะบล็อกโดเมนหรือเว็บไซต์บนไฟร์วอลล์ Windows Defender ด้วย PowerShell ได้อย่างไร


ลองพิจารณาวิธีบล็อกการเข้าถึงเว็บไซต์ ชื่อโดเมน URL หรือที่อยู่ IP ที่ระบุใน Windows โดยไม่ต้องใช้เครื่องมือของบุคคลที่สาม ในกรณีของเรา เราจะพยายามบล็อกบางเว็บไซต์โดยใช้เครื่องมือ Windows 10 ในตัวและคุณสมบัติการทำงานอัตโนมัติของ PowerShell

โดยปกติแล้ว การบล็อกเว็บไซต์บนเราเตอร์เครือข่ายของคุณ (สวิตช์หรือจุดเชื่อมต่อ Wi-Fi ที่คุณใช้เพื่อเข้าถึงอินเทอร์เน็ต) จะง่ายกว่า หรือการใช้ซอฟต์แวร์ของบริษัทอื่น (ตัวกรองเนื้อหา ตัวกรอง DNS เป็นต้น)

การบล็อกเว็บไซต์โดยใช้ไฟล์โฮสต์ใน Windows

วิธียอดนิยมในการบล็อกเว็บไซต์ใดเว็บไซต์หนึ่งบน Windows คือการแก้ไขไฟล์ hosts โดยปกติจะอยู่ในไดเร็กทอรี %windir%\system32\drivers tc\ โปรดทราบว่าไฟล์โฮสต์ไม่มีนามสกุล

เส้นทางไปยังไดเร็กทอรีที่มีไฟล์ hosts ถูกตั้งค่าในพารามิเตอร์ DataBasePath ภายใต้รีจิสตรีคีย์ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters . โดยค่าเริ่มต้นคือ %SystemRoot%\System32\drivers tc

ไฟล์โฮสต์ใช้เพื่อกำหนดการแมประหว่างที่อยู่ IP และชื่อ DNS ด้วยตนเอง เมื่อแก้ไขชื่อ โฮสต์จะมีลำดับความสำคัญสูงกว่าเซิร์ฟเวอร์ DNS ที่ระบุในการตั้งค่าการเชื่อมต่อเครือข่าย

หากต้องการบล็อกเว็บไซต์เฉพาะเจาะจง (เช่น facebook.com) ให้เปิดไฟล์โฮสต์ (ด้วยสิทธิ์ของผู้ดูแลระบบ) และเพิ่มสตริงดังต่อไปนี้:

127.0.0.1 facebook.com
127.0.0.1 www.facebook.com

บันทึกไฟล์และรีสตาร์ทคอมพิวเตอร์ของคุณ (หรือล้างแคช DNS โดยใช้คำสั่ง:

ipconfig /flushdns

).

หลังจากนั้นเมื่อพยายามเปิด facebook.com ในเบราว์เซอร์ใดๆ คุณจะเห็นข้อความ “ไม่พบเพจ”/“ไม่มีเพจ”

คุณสามารถเพิ่มบรรทัดใหม่ที่มี URL ของเว็บไซต์ลงในไฟล์โฮสต์ของคุณโดยใช้ไฟล์ .bat เช่น:

@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

หรือคุณสามารถใช้ฟังก์ชัน PowerShell ต่อไปนี้เพื่อบล็อกเว็บไซต์เฉพาะในไฟล์โฮสต์ของคุณโดยอัตโนมัติ

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

หากต้องการเพิ่มเว็บไซต์ในรายการ URL ที่ถูกบล็อก ให้ดำเนินการคำสั่ง:

BlockSiteHosts ("twitter.com")

หากต้องการปลดบล็อกเว็บไซต์ ให้เรียกใช้:

UnBlockSiteHosts ("twitter.com")

บล็อกเว็บไซต์โดยใช้การกรอง DNS

หากไคลเอ็นต์ของคุณใช้เซิร์ฟเวอร์ DNS เดียวกัน ในลักษณะเดียวกัน คุณสามารถบล็อกเว็บไซต์บางแห่งได้โดยสร้างรายการ DNS ใน DNS นั้น และระบุบางอย่างเช่น 127.0.0.1 ลงในนั้น อย่างไรก็ตาม ตัวกรองเนื้อหา DNS เชิงพาณิชย์ส่วนใหญ่ (OpenDNS, SafeDNS, Cisco Umbrella ฯลฯ) ใช้หลักการเดียวกัน

จะบล็อกที่อยู่ IP ของเว็บไซต์ในไฟร์วอลล์ Windows Defender ได้อย่างไร

นอกจากนี้คุณยังสามารถบล็อกบางเว็บไซต์ได้โดยใช้ไฟร์วอลล์ Windows Defender ในตัว ข้อเสียเปรียบหลักของวิธีนี้คือ คุณจะไม่สามารถใช้ชื่อโดเมนหรือ URL ของเว็บไซต์ในกฎการบล็อกได้ ไฟร์วอลล์ Windows Defender ให้คุณระบุเฉพาะที่อยู่ IP หรือเครือข่ายย่อยเป็นแหล่งที่มา/ปลายทาง
ก่อนอื่น คุณต้องได้รับที่อยู่ IP ของเว็บไซต์ที่คุณต้องการบล็อก ทำได้ง่ายกว่าโดยใช้คำสั่ง nslookup:

nslookup twitter.com

อย่างที่คุณเห็น คำสั่งได้ส่งคืนที่อยู่ IP หลายรายการที่กำหนดให้กับเว็บไซต์ คุณต้องบล็อกพวกเขาทั้งหมด

เรียกใช้สแน็ปอินการจัดการ Windows Defender Firewall (แผงควบคุม\รายการแผงควบคุมทั้งหมด\Windows Defender Firewall\Advanced Settings หรือโดยการเรียกใช้ firewall.cpl)

ในส่วน กฎขาออก ให้สร้างกฎใหม่ด้วยการตั้งค่าต่อไปนี้:

  • ประเภทกฎ: กำหนดเอง

  • โปรแกรม: โปรแกรมทั้งหมด

  • ประเภทโปรโตคอล: อะไรก็ได้

  • ขอบเขต: ใน “ที่อยู่ IP ระยะไกลใดที่กฎนี้ใช้กับ ” ส่วนเลือก “ที่อยู่ IP เหล่านี้ ” -> เพิ่ม ในหน้าต่างถัดไป ให้ป้อนที่อยู่ IP ซับเน็ต หรือช่วงของที่อยู่ IP ที่คุณต้องการบล็อก

คลิก ตกลง -> ถัดไป -> การดำเนินการ -> ปิดกั้นการเชื่อมต่อ

ปล่อยให้ตัวเลือกทั้งหมดอยู่ในหน้าต่างที่มีโปรไฟล์ไฟร์วอลล์ที่ใช้กฎ จากนั้นระบุชื่อกฎและบันทึก

หลังจากนั้น Windows Defender Firewall จะบล็อกการเชื่อมต่อขาออกทั้งหมดไปยังที่อยู่ IP ของเว็บไซต์ที่ระบุ ข้อความต่อไปนี้จะปรากฏในเบราว์เซอร์ของคุณเมื่อพยายามเชื่อมต่อกับไซต์ที่ถูกบล็อก:

Unable to connect

หรือ

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

ในโดเมน AD ของคุณ คุณสามารถปรับใช้นโยบาย Windows Firewall เพื่อบล็อกการเข้าถึงเว็บไซต์บนคอมพิวเตอร์ของผู้ใช้โดยใช้ GPO อย่างไรก็ตามมันไม่มีเหตุผล เป็นการดีกว่าที่จะกรองเว็บไซต์บนเราเตอร์การเข้าถึงอินเทอร์เน็ต (เกตเวย์) ของคุณ

การใช้ PowerShell เพื่อสร้างกฎไฟร์วอลล์เพื่อบล็อกเว็บไซต์ด้วยชื่อโดเมนหรือที่อยู่ IP

คุณยังสามารถสร้างกฎไฟร์วอลล์ที่บล็อกการเชื่อมต่อกับเว็บไซต์โดยใช้ PowerShell:

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

สตริง “กฎถูกแยกวิเคราะห์สำเร็จจากร้านค้า” หมายความว่ากฎไฟร์วอลล์ใหม่ได้ถูกนำไปใช้เรียบร้อยแล้ว คุณสามารถค้นหาได้ในส่วนติดต่อแบบกราฟิกของไฟร์วอลล์ Windows Defender

เพื่อไม่ให้แก้ไขชื่อเว็บไซต์เป็นที่อยู่ IP ด้วยตนเอง คุณสามารถใช้ cmdlet PowerShell Resolve-DnsName เพื่อรับที่อยู่ IP ของเว็บไซต์:

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

ดังนั้น คุณสามารถแปลงชื่อเว็บไซต์เป็นที่อยู่ IP และเพิ่มกฎการบล็อกในการตั้งค่าไฟร์วอลล์ได้:


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

ตอนนี้คุณสามารถเพิ่มกฎการปิดกั้นไปยังไฟร์วอลล์ Windows ของคุณสำหรับหลายเว็บไซต์พร้อมกัน:

$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

ฉันได้เพิ่มพารามิเตอร์ -NoHostsFile ใน Resolve-DnsName cmdlet เพื่อไม่ให้ใช้ไฟล์โฮสต์ในการแก้ไข

ตรวจสอบให้แน่ใจว่ากฎการบล็อกขาออกปรากฏในคอนโซล Windows Firewall

บทความนี้ส่วนใหญ่เป็นแบบฝึกหัดฝึกสมอง ในเครือข่ายองค์กร คุณต้องใช้การกรองเว็บไซต์บนเกตเวย์การเข้าถึงอินเทอร์เน็ต เราเตอร์ หรือพร็อกซีเซิร์ฟเวอร์ของคุณ การบล็อกระดับโฮสต์ไม่ได้ผลมากนัก

บทความที่เกี่ยวข้อง