¿Cómo bloquear un dominio o sitio web en el Firewall de Windows Defender con PowerShell?
Consideremos algunas formas de bloquear el acceso a sitios web, nombres de dominio, URL o direcciones IP específicos en Windows sin usar herramientas de terceros. En nuestro caso, intentaremos bloquear ciertos sitios web utilizando las herramientas integradas de Windows 10 y las funciones de automatización de PowerShell.
Por lo general, es más fácil bloquear sitios web en su enrutador de red (conmutador o punto de acceso Wi-Fi que está utilizando para acceder a Internet) o usar software de terceros (filtros de contenido, filtros DNS, etc.).
Bloqueo de sitios web utilizando el archivo Hosts en Windows
El método más popular para bloquear un sitio web específico en Windows es editar el archivo hosts. Por lo general, se encuentra en el directorio %windir%\system32\drivers tc\. Tenga en cuenta que el archivo hosts no tiene extensión.
La ruta al directorio que contiene el archivo hosts se establece en el parámetro DataBasePath bajo la clave de registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters . De forma predeterminada, es %SystemRoot%\System32\drivers tc.
El archivo de hosts se usa para asignar manualmente asignaciones entre direcciones IP y nombres DNS. Al resolver nombres, los hosts tienen mayor prioridad que los servidores DNS especificados en la configuración de conexión de red.
Para bloquear un sitio web específico (por ejemplo, facebook.com), abra el archivo hosts (con los privilegios de administrador) y agréguele cadenas como estas:
127.0.0.1 facebook.com
127.0.0.1 www.facebook.comGuarde el archivo y reinicie su computadora (o borre el caché de DNS usando el comando:
ipconfig /flushdns).
Después de eso, cuando intente abrir facebook.com en cualquier navegador, verá el mensaje "Página no encontrada"/"Página no disponible".
Puede agregar nuevas líneas que contengan URL de sitios web a su archivo de hosts utilizando un archivo .bat de este tipo:
@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%
exitO puede usar las siguientes funciones de PowerShell para bloquear automáticamente sitios web específicos en su archivo de hosts.
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
}
}Para agregar un sitio web a la lista de URL bloqueadas, simplemente ejecute el comando:
BlockSiteHosts ("twitter.com")
Para desbloquear el sitio web, ejecute:
UnBlockSiteHosts ("twitter.com")Bloquear sitios web mediante el filtrado de DNS
Si sus clientes usan el mismo servidor DNS, de la misma manera puede bloquear ciertos sitios web creando una entrada DNS en ese DNS y especificando algo como 127.0.0.1 en él. Por cierto, la mayoría de los filtros de contenido DNS comerciales (OpenDNS, SafeDNS, Cisco Umbrella, etc.) utilizan el mismo principio.
¿Cómo bloquear la dirección IP del sitio web en el Firewall de Windows Defender?
Además, puede bloquear algunos sitios web utilizando el Firewall de Windows Defender integrado. La principal desventaja de este método es que no podrá usar el nombre de un dominio o la URL de un sitio web en la regla de bloqueo. El Firewall de Windows Defender le permite especificar solo una dirección IP o una subred como origen/destino.
En primer lugar, debe obtener la dirección IP del sitio web que desea bloquear. Es más fácil hacerlo usando el comando nslookup:
nslookup twitter.comComo puede ver, el comando ha devuelto varias direcciones IP asignadas al sitio web. Tienes que bloquearlos a todos.
Ejecute el complemento de administración de Firewall de Windows Defender (Panel de control\Todos los elementos del panel de control\Firewall de Windows Defender\Configuración avanzada o ejecutando firewall.cpl).
En la sección Reglas de salida, cree una nueva regla con la siguiente configuración:
Tipo de regla: personalizada
Programa: Todos los programas
-
Tipo de protocolo: cualquiera
Alcance: En la sección "¿A qué direcciones IP remotas se aplica esta regla?" ” seleccione “Estas direcciones IP” -> Agregar. En la siguiente ventana, ingrese las direcciones IP, las subredes o un rango de direcciones IP que desea bloquear.
Haga clic en Aceptar -> Siguiente -> Acción -> Bloquear la conexión.
Deje todas las opciones como están en la ventana con los perfiles de Firewall a los que se aplica la regla. A continuación, especifique el nombre de la regla y guárdelo.
Después de eso, el Firewall de Windows Defender bloqueará todas las conexiones salientes a las direcciones IP del sitio web especificado. El siguiente mensaje aparecerá en su navegador cuando intente conectarse al sitio bloqueado:
Unable to connectO
Your Internet access is blocked
Firewall or antivirus software may have blocked the connection
ERR_NETWORK_ACCESS_DENIEDEn su dominio de AD, puede implementar una política de Firewall de Windows para bloquear el acceso a un sitio web en las computadoras de los usuarios que usan GPO. Sin embargo, no es racional. Es mejor filtrar sitios web en su enrutador de acceso a Internet (puerta de enlace).
Uso de PowerShell para crear una regla de firewall para bloquear sitios web por nombre de dominio o dirección IP
También puede crear una regla de Firewall que bloquee la conexión al sitio web usando PowerShell:
New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound -LocalPort Any -Protocol Any -Action Block -RemoteAddress 104.244.42.129, 104.244.42.0/24La cadena "La regla se analizó con éxito desde la tienda" significa que la nueva regla de Firewall se aplicó con éxito. Puede encontrarlo en la interfaz gráfica de su Firewall de Windows Defender.
Para no convertir manualmente los nombres de los sitios web en direcciones IP, puede usar el cmdlet de PowerShell Resolve-DnsName para obtener las direcciones IP de los sitios web:
Resolve-DnsName "twitter.com"| Select-Object -ExpandProperty IPAddressPor lo tanto, puede convertir el nombre del sitio web en sus direcciones IP y agregar una regla de bloqueo a la configuración del firewall:
$IPAddress = Resolve-DnsName "twitter.com"| Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound -LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddressAhora puede agregar una regla de bloqueo a su Firewall de Windows para varios sitios web a la vez:
$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 $IPAddressHe agregado el parámetro -NoHostsFile al cmdlet Resolve-DnsName para no usar el archivo de hosts para resolver.
Asegurémonos de que haya aparecido una regla de bloqueo de salida en la consola de Firewall de Windows.
Este artículo es principalmente un ejercicio de entrenamiento mental. En una red corporativa, debe usar el filtrado de sitios web en su puerta de enlace de acceso a Internet, enrutador o servidor proxy. El bloqueo a nivel de host no es muy efectivo.










