如何用PowerShell屏蔽Windows Defender防火墙上的域或者网站?

时间:2020-01-09 10:46:13  来源:igfitidea点击:

让我们考虑一些方法来阻止在Windows中访问特定的网站、域名、url或者IP地址,而不使用第三方工具。在我们的例子中,我们将尝试使用内置的windows10工具和PowerShell自动化功能来阻止某些网站。

通常,在网络路由器(交换机或者Wi-Fi接入点,我们用于访问互联网)或者使用第三方软件(内容过滤器、DNS过滤器等)来阻止网站更容易。

Windows下使用Hosts文件屏蔽网站

在Windows上阻止特定网站最流行的方法是编辑 hosts文件。通常位于 %windir%\system32\drivers\etc\目录中。请注意hosts文件没有扩展名。

包含 hosts文件的目录路径在注册表项 HKEY U LOCAL U MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下的 DataBasePath参数中设置。默认为%SystemRoot%\System32\drivers\etc。

hosts文件用于手动分配IP地址和DNS名称之间的映射。解析名称时,主机的优先级高于网络连接设置中指定的DNS服务器。

阻止特定网站(例如,脸谱网),打开hosts文件(具有管理员权限)并向其中添加以下字符串:

127.0.0.1 facebook.com
127.0.0.1 www.facebook.com

保存文件并重新启动计算机(或者使用以下命令清除DNS缓存:

ipconfig /flushdns

).

之后,当试图打开脸谱网在任何浏览器中,我们都会看到消息“Page not found”/“Page not available”。

我们可以使用这样的.bat文件将包含网站URL的新行添加到主机文件中:

@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等)都使用相同的原理。

如何在Windows Defender防火墙中屏蔽网站IP地址?

此外,我们还可以使用内置的Windows Defender防火墙阻止某些网站。这种方法的主要缺点是我们不能在阻止规则中使用域名或者网站URL的名称。Windows Defender防火墙允许我们仅指定IP地址或者子网作为源/目标。

首先,你必须得到你想要屏蔽的网站的IP地址。使用nslookup命令更容易实现:

nslookup twitter.com

如我们所见,该命令已返回多个分配给该网站的IP地址。你必须阻止他们。

运行Windows Defender防火墙管理管理单元(控制面板\All Control Panel Items\Windows Defender Firewall\Advanced Settings)或者 firewall.cpl).

出站规则部分,使用以下设置创建一个新规则:

规则类型:自定义

项目:所有项目

协议类型:任意

范围:在“此规则适用于哪些远程IP地址?”选择“这些IP地址”->Add。在下一个窗口中,输入要阻止的IP地址、子网或者IP地址范围。