Como gerenciar regras de firewall do Windows com PowerShell

Conteúdo

Logotipo de Powershell

O Windows contém um firewall avançado robusto, mas fácil de usar, e com PowerShell 7 podemos facilmente configurar o firewall a partir da linha de comando. Esta postagem cobre os comandos comuns usados ​​no Firewall do Windows e onde eles podem ser usados.

Módulo NetSecurity está ok documentado. Observe que esta postagem se aplica apenas ao sistema operacional Windows. Para outros sistemas operacionais, existem outras ferramentas de linha de comando que podem ser usadas para realizar o mesmo tipo de funções, O que UFW o IPTables en Linux.

Carregando o NetSecurity Módulo

a NetSecurity O módulo, integrado e oferecido pela Microsoft, Contém todos os recursos essenciais para adicionar, excluir e modificar regras de firewall. Para carregar o módulo, apenas importe o módulo como mostrado abaixo.

Import-Module -Name 'NetSecurity'

Lista de regras de firewall existentes

O cmdlet, Get-NetFirewallRule irá mostrar todas as regras de firewall existentes. Existem muitos, por padrão, Portanto, para provar isso, nós pegamos o primeiro 10.

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

Existem muitas propriedades que são retornadas por Get-NetFirewallRule. Mesmo que listemos apenas uma das propriedades acima, correndo Get-NetFirewallRule | Select-Object * -First 1, irá listar todos disponíveis.

Crie uma nova regra de firewall

Existem muitas maneiras diferentes de criar uma nova regra de firewall, mas o comando que faz isso é [Net-NewFirewallRule](<https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=win10-ps>). As propriedades básicas que precisam ser concluídas são:

  • DisplayName – O nome amigável da regra de firewall.
  • Direction – Tanto para bloquear o tráfego que sai do computador. Outbound ou entrando no computador Inbound
  • Action – Que ação tomar se a regra for cumprida, Allow o Block

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

New-NetFirewallRule @Params
Se ele Name parâmetro não é usado, então um GUID aleatório é usado. a DisplayName pode ser legível por humanos, mas o Name foi atribuído um GUID aleatório.

Modificar uma regra de firewall existente

E se quisermos modificar uma regra existente sem excluir e recriar a regra completamente? Para faze-lo, devemos executar o Set-NetFirewallRule, e nos permitirá modificar a regra de firewall conforme necessário.

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

Set-NetFirewallRule @Params

Outras habilidades úteis que o Set-NetFirewallRule tem é a capacidade de operar com várias regras ao mesmo tempo. Isso pode ser feito localizando regras por um dos três parâmetros.

  • NameEste é o padrão e se os nomes forem definidos via pipe ou uma matriz de strings, cada um deles terá ação.
  • DisplayNameIgual a Name, vários objetos em pipeline ou uma matriz de strings modificarão essas regras de acordo.
  • DisplayGroup o GroupSe as regras são agrupadas, todas essas regras agrupadas podem ser aplicadas ao mesmo tempo.

Exclua uma regra de firewall existente

Por último, nós gostaríamos de deletar a regra existente, uma vez que é viável que não seja mais necessário. Para fazer isso, execute o comando Remove-NetFirewallRule. Quando isso acontecer, muitas vezes é aconselhável usar o WhatIf parâmetro para verificar se a regra está correta para excluir.

Remove-NetFirewallRule -DisplayName "Block WINS"

É fundamental atentar para que o Remove-NetFirewallRule pode deletar várias regras ao mesmo tempo. Abaixo está um exemplo deste tipo de funcionalidade. A próxima regra irá remover todas as regras desabilitadas contidas na política firewall_gpo no ad.local.test domínio.

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

Um comando útil está sendo executado, mas potencialmente perigoso Remove-NetFirewallFule por si mesmo, que remove todas as regras de firewall locais estáticas que foram criadas. Se você tiver um GPO de domínio que defina regras de firewall, isso removerá aqueles que podem entrar em conflito com as regras definidas pelo GPO.

Funcionalidade adicional

Existem muitos outros comandos disponíveis no NetSecurity módulo. Mesmo que não cobramos todos eles aqui, abaixo estão alguns comandos notáveis ​​para demonstrar o quão grande é o módulo.

  • Copy-NetFirewallRuleEste comando irá copiar uma regra de firewall existente e todos os filtros associados para o mesmo ou para um armazenamento de política diferente.
  • Disable-NetFirewallRuleIsso desabilitará uma regra de firewall habilitada anteriormente. A regra continuará existindo, mas não modificará ativamente nenhum dado de rede. Se você executar este comando sem nenhum parâmetro, irá desabilitar todas as regras ativas no computador de destino. Recomenda-se sempre executar este comando com o WhatIf parâmetro se não visar uma regra específica ou conjunto de regras.
  • Enable-NetFirewallRuleComo ele Disable-NetFirewallRule, este comando irá habilitar uma regra previamente desabilitada ou um conjunto de regras. Se este comando for executado sem nenhum parâmetro, irá habilitar todas as regras desabilitadas anteriormente. Recomenda-se sempre executar este comando com o WhatIf parâmetro se não visar uma regra específica ou conjunto de regras.
  • Get-NetFirewallProfileEste comando exibe as alternativas atualmente configuradas para um perfil especificado, como ele Domain, Private, o Public perfis.
  • Get-NetFirewallSettingAs configurações globais de firewall podem ser recuperadas usando o Get-NetFirewallSetting comando. Essas configurações incluem opções como opções de certificado, fila de pacotes ou listas de autorização.
  • Rename-NetFirewallRulePara renomear uma regra de firewall existente, Use o Rename-NetFirewallRule comando. Isso é útil se uma regra foi criada sem um nome específico, então um GUID aleatório é recebido como um nome, e é preferível ter um nome legível atribuído.
  • Set-NetFirewallProfilePara determinar configurações específicas para perfis individuais, usar el Set-NetFirewallProfile comando. Isso permite que cada perfil tenha configurações diferentes.
  • Set-NetFirewallSettingEste comando configura os comportamentos globais do firewall que se aplicam independentemente do perfil de rede atualmente em uso..
  • Show-NetFirewallRuleEste comando auxiliar irá mostrar as regras de firewall e seus objetos associados em uma lista formatada.

Existe uma extensa funcionalidade IPSec contida no módulo. Os comandos listados anteriormente são aqueles que operam na configuração padrão do Firewall do Windows.

conclusão

Existem muitos comandos disponíveis para gerenciar o Firewall do Windows. Esta postagem aborda apenas alguns deles, em particular os comandos mais importantes para listar, Criar, modificar e limpar regras de firewall rapidamente. Mesmo configurações complexas de firewall podem ser obtidas estritamente por meio da linha de comando usando o NetSecurity Módulo de PowerShell!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.