Este artículo profundiza en la administración del Firewall de Windows Defender mediante PowerShell, lo cual puede parecer un poco intimidante al principio, especialmente si estás acostumbrado a la interfaz gráfica o a los comandos clásicos. Pero, sinceramente, una vez que le coges el truco, es una forma práctica de automatizar tareas como activar o desactivar el firewall, crear reglas o restablecer configuraciones sin tener que navegar por cientos de menús. A veces, el firewall no funciona correctamente después de actualizaciones o cambios en la red, y usar PowerShell directamente puede ahorrarte mucho tiempo y frustraciones. Verás cómo alternar perfiles, crear reglas para puertos o aplicaciones e incluso solucionar problemas de ejecución interna.
Cómo reparar la configuración del Firewall de Windows con PowerShell
Cómo habilitar o deshabilitar el Firewall de Windows Defender
La mayoría de las configuraciones nuevas tienen el firewall habilitado por defecto, pero a veces conviene desactivarlo por completo, por ejemplo, para realizar pruebas o una solución rápida (no se recomienda a largo plazo, por supuesto).Puedes comprobar el estado del perfil ejecutando:
Get-NetFirewallProfile | Format-Table Name, Enabled
Esto muestra los tres tipos de red (Dominio, Privada, Pública) y si están activados o desactivados. Si la situación no es la adecuada o necesitas desactivarlos por completo, usa:
Set-NetFirewallProfile -All -Enabled False
O bien, apunte a uno específico:
Set-NetFirewallProfile -Profile Public -Enabled False
Esto desactivará el firewall de tu red pública, lo cual puede ser útil si estás solucionando problemas con algo que no se conecta. Pero ten cuidado: desactivarlo no es la mejor idea a menos que estés completamente seguro de la seguridad. En algunas configuraciones, hacer esto y luego reiniciar o volver a habilitar Windows no tiene ningún problema.
Cómo cambiar los perfiles de red y la configuración de registro
Si Windows no detecta la red correctamente (por ejemplo, la considera pública cuando estás en casa), puedes configurar el perfil manualmente o comprobar qué está activo con Get-NetConnectionProfile. Para cambiar el perfil, ejecuta:
Set-NetConnectionProfile -InterfaceAlias "Ethernet0" -NetworkCategory Private
Reemplace “Ethernet0” con su alias de interfaz de red actual, que puede encontrar ejecutando:
Get-NetAdapter | Select Name, InterfaceAlias
También podría ser útil aumentar el registro del firewall para una mejor resolución de problemas. Por ejemplo:
Set-NetFirewallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName "$env:SystemRoot\System32\LogFiles\Firewall\pfirewall.log"
Esto permite que Windows mantenga un registro más detallado, lo cual resulta útil para averiguar por qué se bloquean ciertas conexiones. No sé por qué funciona, pero suele ayudar a detectar lo que sucede en segundo plano.
Cómo crear reglas de firewall en Windows con PowerShell
Si personaliza su configuración, abre puertos o bloquea aplicaciones específicas, PowerShell ofrece varios comandos. El más sencillo es New-NetFirewallRule. Por ejemplo, para permitir el tráfico entrante HTTP y HTTPS:
New-NetFirewallRule -DisplayName 'HTTP & HTTPS' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80, 443
¿Quieres bloquear el acceso saliente a un programa como Firefox? Aquí te explicamos cómo:
New-NetFirewallRule -Program "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -Action Block -Profile Domain, Private -DisplayName "Block Firefox" -Direction Outbound
O restringir RDP a una IP específica (porque, por supuesto, eso suele ser necesario en configuraciones seguras):
New-NetFirewallRule -DisplayName "Allow RDP from Office" -RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
¿Quieres algo más sofisticado? Crea reglas para solicitudes de eco ICMP (pings) desde ciertos rangos de IP para comprobar la estabilidad de la red.
$ips = @("192.168.2.15-192.168.2.40", "192.168.100.15-192.168.100.200", "10.1.0.0/16")
New-NetFirewallRule -DisplayName "Allow inbound ICMPv4" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow
Y, si hay una lista de IP larga, simplemente sáquela de un archivo de texto:
$ips=Get-Content C:\temp\ip.txt
Luego actualice la dirección remota de la regla:
Get-NetFirewallRule -DisplayName 'Allow RDP' | Set-NetFirewallRule -RemoteAddress $ips
Cabe mencionar que editar reglas también es sencillo. Simplemente obtenga las existentes con Get-NetFirewallRule y conéctelas a Set-NetFirewallRule para ajustar las direcciones o puertos remotos.
Creación de reglas para múltiples IP o personalización de las existentes
Se pueden agregar varias IP a la vez con un script. Por ejemplo, para agregar varias a una regla existente:
$ips = @("192.168.2.15", "192.168.2.17", "192.168.100.15")
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter).RemoteAddress
$current_ips += $ips
Set-NetFirewallRule -DisplayName 'HTTP-Inbound' -RemoteAddress $current_ips
¿Quieres obtener la lista de todas las IP de una regla? Simplemente:
Get-NetFirewallRule -DisplayName 'Http_inbound' | Get-NetFirewallAddressFilter
Y si necesitas eliminar una IP de una regla (algo molesto pero factible), aquí tienes un truco rápido:
$removeip = "192.168.100.5"
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter).RemoteAddress
$filterIP = $current_ips | Where-Object { $_ -ne $removeip }
Set-NetFirewallRule -DisplayName 'HTTP-Inbound' -RemoteAddress $filterIP
Habilitar, deshabilitar o eliminar reglas rápidamente
Si una determinada regla no funciona correctamente o quieres probar un cambio rápido, ejecuta:
Disable-NetFirewallRule -DisplayName 'HTTP-Inbound'
Para volver a encenderlo:
Enable-NetFirewallRule -DisplayName 'HTTP-Inbound'
Y si necesitas eliminar una regla por completo:
Remove-NetFirewallRule -DisplayName 'HTTP-Inbound'
Para un restablecimiento completo (por ejemplo, si las cosas se complicaron), puede restablecer todas las reglas a los valores predeterminados con:
netsh advfirewall reset
o
(New-Object -ComObject HNetCfg. FwPolicy2).RestoreLocalFirewallDefaults()
Ten en cuenta que esto también borra tus reglas personalizadas. Es mejor exportarlas con antelación si estás modificando configuraciones sensibles.
netsh advfirewall export "C:\Backup\firewall-config.wfw"
netsh advfirewall import "C:\Backup\firewall-config.wfw"
Cómo comprobar las reglas de firewall activas con PowerShell
Si quieres ver qué reglas se están ejecutando realmente, especialmente las que permiten o bloquean el tráfico, prueba:
Get-NetFirewallRule | Where-Object { $_. Enabled -eq $true -and $_. Direction -eq 'Inbound' } | Format-Table
Solo para reglas de salida:
Get-NetFirewallRule -Action Block -Enabled $true -Direction Outbound
Y si quieres ver los detalles, incluidos los puertos y las direcciones IP, este sofisticado script te ayudará:
Get-NetFirewallRule -Action Allow -Enabled $true -Direction Inbound | Format-Table -Property Name, @{Name='Protocol';Expression={(Get-NetFirewallPortFilter -AssociatedNetFirewallRule $_).Protocol}}, @{Name='LocalPort';Expression={(Get-NetFirewallPortFilter -AssociatedNetFirewallRule $_).LocalPort}}, @{Name='RemoteAddress';Expression={(Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $_).RemoteAddress}}
PowerShell realmente hace que la administración profunda del firewall sea mucho más fácil, especialmente para automatizar tareas o solucionar problemas de red.
Resumen
En resumen, administrar el Firewall de Windows Defender mediante PowerShell no es tan complicado: una vez que te familiarizas con los comandos, es más rápido que navegar por los menús. Ya sea que estés activando o desactivando perfiles, modificando reglas para puertos o aplicaciones, o restableciendo la configuración, este método te brinda mayor control y soluciones más rápidas. Recuerda: exporta siempre tus reglas antes de modificarlas y no dejes el firewall totalmente desactivado a menos que tengas una buena razón. Esperamos que esto te ayude a mantener tus firewalls seguros y tu red protegida.
Resumen
- Compruebe el estado actual del firewall con
Get-NetFirewallProfile - Apágalo/enciéndelo usando
Set-NetFirewallProfile - Crea reglas para puertos, aplicaciones o IP con
New-NetFirewallRule - Editar reglas mediante la canalización hacia
Set-NetFirewallRule - Restablecer o exportar configuraciones antes de realizar cambios grandes
- Úselo
Get-NetFirewallRulepara echar un vistazo rápido a las reglas activas