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 computadoraInbound
Action
– Qué acción tomar si se cumple la regla,Allow
oBlock
$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.
Name
Este 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.DisplayName
Semejante aName
, varios objetos canalizados o una matriz de cadenas modificarán esas reglas en consecuencia.DisplayGroup
oGroup
Si 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-NetFirewallRule
Este 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-NetFirewallRule
Esto 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 elWhatIf
parámetro si no tiene como objetivo una regla o un conjunto de reglas específicas.Enable-NetFirewallRule
Como elDisable-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 elWhatIf
parámetro si no tiene como objetivo una regla o un conjunto de reglas específicas.Get-NetFirewallProfile
Este comando muestra las alternativas configuradas en este momento para un perfil especificado, como elDomain
,Private
, oPublic
perfiles.Get-NetFirewallSetting
La configuración global del cortafuegos se puede recuperar usando elGet-NetFirewallSetting
mando. Estas configuraciones incluyen opciones tales como opciones de certificado, cola de paquetes o listas de autorización.Rename-NetFirewallRule
Para cambiar el nombre de una regla de firewall existente, utilice elRename-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-NetFirewallProfile
Para determinar configuraciones específicas para perfiles individuales, use elSet-NetFirewallProfile
mando. Esto posibilita que cada perfil tenga configuraciones distintas.Set-NetFirewallSetting
Este comando configura los comportamientos del firewall global que se aplican independientemente del perfil de red que se esté usando en este momento.Show-NetFirewallRule
Este 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!