Cómo administrar las reglas del firewall de Windows con PowerShell

Contenidos

Logotipo de Powershell

Windows contiene un firewall avanzado robusto, pero fácil de utilizar, y con PowerShell 7 podemos configurar fácilmente el firewall desde la línea de comandos. Este post cubre los comandos comunes que se usan en el Firewall de Windows y dónde se pueden utilizar.

El módulo NetSecurity está bien documentado. Tenga en cuenta que este post solo se aplica al sistema operativo Windows. Para otros sistemas operativos, existen otras herramientas de línea de comandos que se pueden usar para realizar el mismo tipo de funciones, como UFW o IPTables en Linux.

Cargando el NetSecurity Módulo

los NetSecurity El módulo, integrado y ofrecido por Microsoft, contiene todas las funciones imprescindibles para agregar, borrar y modificar reglas de firewall. Para cargar el módulo, simplemente importe el módulo como se muestra a continuación.

Import-Module -Name 'NetSecurity'

Lista de reglas de firewall existentes

El cmdlet, Get-NetFirewallRule mostrará todas las reglas de firewall existentes. Hay muchos, por defecto, por lo tanto para demostrarlo, sacamos los primeros 10.

Get-NetFirewallRule | Select-Object DisplayName, Enabled, Direction, Action -First 10

Hay muchas propiedades que son devueltas por Get-NetFirewallRule. Aún cuando enumeramos solo una de las propiedades arriba, ejecutando Get-NetFirewallRule | Select-Object * -First 1, enumerará todos los disponibles.

Cree una nueva regla de firewall

Hay muchas formas diferentes de crear una nueva regla de firewall, pero el comando que hace esto es [Net-NewFirewallRule](<https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=win10-ps>). Las propiedades básicas que deben completarse son:

  • DisplayName – El nombre descriptivo de la regla de firewall.
  • Direction – Ya sea para bloquear el tráfico que sale de la computadora. Outbound o entrando en la computadora Inbound
  • Action – Qué acción tomar si se cumple la regla, Allow o Block

$Params = @{ "DisplayName" = 'Block WINS' "Direction" = 'Inbound' "Action" = 'Block' "RemoteAddress" = 'WINS' }

New-NetFirewallRule @Params
Si el Name no se utiliza el parámetro, entonces se utiliza un GUID aleatorio. los DisplayName puede ser legible por humanos, pero el Name se le asignó un GUID aleatorio.

Modificar una regla de firewall existente

¿Qué sucede si queremos modificar una regla existente sin borrar y volver a crear la regla por completo? Para hacerlo, debemos ejecutar el Set-NetFirewallRule, y nos permitirá modificar la regla de firewall según sea necesario.

$Params = @{
	"DisplayName"   = 'Block WINS'
	"Action"        = 'Allow'
}

Set-NetFirewallRule @Params

Otras habilidades útiles que el Set-NetFirewallRule tiene es la capacidad de operar con varias reglas al mismo tiempo. Esto se puede hacer localizando reglas por uno de tres parámetros.

  • NameEste es el valor predeterminado y si los nombres se establecen a través de la tubería o una matriz de cadenas, se actuará sobre cada uno de ellos.
  • DisplayNameSemejante a Name, varios objetos canalizados o una matriz de cadenas modificarán esas reglas en consecuencia.
  • DisplayGroup o GroupSi las reglas se agrupan, todas esas reglas agrupadas se pueden aplicar al mismo tiempo.

Borrar una regla de firewall existente

Por último, nos gustaría borrar la regla existente, dado que es factible que ya no sea necesaria. Para hacer esto, ejecute el comando Remove-NetFirewallRule. Cuando lo hace, a menudo es aconsejable usar el WhatIf parámetro para verificar que la regla es la correcta para borrar.

Remove-NetFirewallRule -DisplayName "Block WINS"

Es esencial prestar atención que el Remove-NetFirewallRule puede borrar varias reglas al mismo tiempo. A continuación se muestra un ejemplo de este tipo de funcionalidad. La próxima regla eliminará todas las reglas inhabilitadas contenidas en la política firewall_gpo en el ad.local.test dominio.

Remove-NetFirewallRule -Enabled 'False' -PolicyStore 'ad.local.testfirewall_gpo'

Se está ejecutando un comando útil, pero potencialmente peligroso Remove-NetFirewallFule por sí mismo, lo que elimina todas las reglas de firewall locales estáticas que se han creado. Si tiene un GPO de dominio que establece reglas de firewall, esto eliminará las que puedan entrar en conflicto con esas reglas definidas por GPO.

Funcionalidad adicional

Hay muchos otros comandos disponibles dentro del NetSecurity módulo. Aún cuando no los cubrimos todos aquí, a continuación se muestran algunos comandos notables para demostrar cuán inmenso es el módulo.

  • Copy-NetFirewallRuleEste comando copiará una regla de firewall existente y todos los filtros asociados en el mismo almacén de políticas o en uno distinto.
  • Disable-NetFirewallRuleEsto deshabilitará una regla de firewall previamente habilitada. La regla seguirá existiendo, pero no modificará activamente ningún dato de red. Si ejecuta este comando sin ningún parámetro, deshabilitará todas las reglas activas en la computadora de destino. Se recomienda ejecutar siempre este comando con el WhatIf parámetro si no tiene como objetivo una regla o un conjunto de reglas específicas.
  • Enable-NetFirewallRuleComo el Disable-NetFirewallRule, este comando habilitará una regla previamente deshabilitada o un conjunto de reglas. Si este comando se ejecuta sin ningún parámetro, habilitará todas las reglas previamente deshabilitadas. Se recomienda ejecutar siempre este comando con el WhatIf parámetro si no tiene como objetivo una regla o un conjunto de reglas específicas.
  • Get-NetFirewallProfileEste comando muestra las alternativas configuradas en este momento para un perfil especificado, como el Domain, Private, o Public perfiles.
  • Get-NetFirewallSettingLa configuración global del cortafuegos se puede recuperar usando el Get-NetFirewallSetting mando. Estas configuraciones incluyen opciones tales como opciones de certificado, cola de paquetes o listas de autorización.
  • Rename-NetFirewallRulePara cambiar el nombre de una regla de firewall existente, utilice el Rename-NetFirewallRule mando. Esto es útil si se creó una regla sin un nombre específico, por lo que se recibe un GUID aleatorio como nombre, y se prefiere tener asignado un nombre legible por humanos.
  • Set-NetFirewallProfilePara determinar configuraciones específicas para perfiles individuales, use el Set-NetFirewallProfile mando. Esto posibilita que cada perfil tenga configuraciones distintas.
  • Set-NetFirewallSettingEste comando configura los comportamientos del firewall global que se aplican independientemente del perfil de red que se esté usando en este momento.
  • Show-NetFirewallRuleEste comando auxiliar mostrará las reglas del cortafuegos y sus objetos asociados en una lista formateada.

Hay una amplia funcionalidad IPSec contenida en el módulo. Los comandos enumerados previamente son los que operan en la configuración estándar del Firewall de Windows.

Conclusión

Hay muchos comandos disponibles para administrar el Firewall de Windows. Este post solo toca algunos de ellos, en particular los comandos más importantes para enumerar, crear, modificar y borrar rápidamente las reglas del firewall. Inclusive las configuraciones de firewall complejas se pueden lograr estrictamente a través de la línea de comando usando el NetSecurity Módulo de PowerShell!

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.