Gerir a Firewall do Windows com a linha de comandos
Este artigo fornece exemplos de como gerir a Firewall do Windows com o PowerShell e netsh.exe
o , que podem ser utilizados para automatizar a gestão da Firewall do Windows.
Definir predefinições globais do perfil
As predefinições globais definem o comportamento do dispositivo numa base por perfil. A Firewall do Windows suporta perfis de Domínio, Privado e Público.
A Firewall do Windows remove o tráfego que não corresponde ao tráfego não solicitado permitido ou ao tráfego enviado em resposta a um pedido do dispositivo. Se descobrir que as regras que criar não são impostas, poderá ter de ativar a Firewall do Windows. Eis como ativar a Firewall do Windows num dispositivo local:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Controlar o comportamento da Firewall do Windows
As predefinições globais podem ser definidas através da interface de linha de comandos. Estas modificações também estão disponíveis através da consola da Firewall do Windows. Os scriptlets seguintes definem as ações de entrada e saída predefinidas, especificam ligações de rede protegidas e não permitem que as notificações sejam apresentadas ao utilizador quando um programa é impedido de receber ligações de entrada. Permite a resposta unicast ao tráfego de rede multicast ou difusão e especifica as definições de registo para resolução de problemas.
Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow -NotifyOnListen False -AllowUnicastResponseToMulticast True -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log
Desativar a Firewall do Windows
A Microsoft recomenda que não desative a Firewall do Windows porque perde outros benefícios, tais como a capacidade de utilizar regras de segurança de ligação IPsec (Internet Protocol), proteção de rede contra ataques que utilizam impressões digitais de rede, Proteção do Serviço Windows e filtros de tempo de arranque. O software de firewall não Microsoft pode desativar programaticamente apenas os tipos de regras da Firewall do Windows que precisam de ser desativados para compatibilidade. Não deve desativar a firewall para este fim. Se for necessária a desativação da Firewall do Windows, não a desative ao parar o serviço firewall do Windows (no snap-in Serviços, o nome a apresentar é Firewall do Windows Defender e o nome do serviço é MpsSvc). Parar o serviço firewall do Windows não é suportado pela Microsoft e pode causar problemas, incluindo:
- O menu Iniciar pode deixar de funcionar
- As aplicações modernas podem não conseguir instalar ou atualizar
- Falha na ativação do Windows através do telemóvel
- Incompatibilidades de aplicações ou SO que dependem da Firewall do Windows
O método adequado para desativar a Firewall do Windows é desativar os Perfis de Firewall do Windows e deixar o serviço em execução. Utilize o procedimento seguinte para desativar a firewall ou desativar a definição de Política de Grupo Configuração do Computador|Modelos Administrativos|Rede|Connections de rede|Firewall do Windows|Domínio Prolfile|Firewall do Windows: proteja todas as ligações de rede. Para obter mais informações, veja Guia de implementação da Firewall do Windows. O exemplo seguinte desativa a Firewall do Windows para todos os perfis.
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Implementar regras de firewall básicas
Esta secção fornece exemplos de scriptlets para criar, modificar e eliminar regras de firewall.
Criar regras de firewall
Adicionar uma regra de firewall no Windows PowerShell tem um aspeto muito semelhante ao que tinha no Netsh, mas os parâmetros e valores são especificados de forma diferente. Eis um exemplo de como permitir que a aplicação Telnet ouça na rede. Esta regra de firewall está confinada à sub-rede local através de um palavra-chave em vez de um endereço IP. Tal como no Netsh, a regra é criada no dispositivo local e entrará em vigor imediatamente.
New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow
O scriptlet seguinte mostra como adicionar uma regra de firewall básica que bloqueia o tráfego de saída de uma aplicação específica e porta local para um Objeto de Política de Grupo (GPO) no Active Directory. No Windows PowerShell, o arquivo de políticas é especificado como um parâmetro no cmdlet New-NetFirewall. Em Netsh, primeiro tem de especificar o GPO que os comandos numa sessão netsh devem modificar. Os comandos introduzidos são executados no conteúdo do GPO e a execução permanece em vigor até que a sessão netsh termine ou até que outro comando set store seja executado. Aqui, domain.contoso.com é o nome do seu Active Directory Domain Services (AD DS) e gpo_name é o nome do GPO que pretende modificar. As aspas são necessárias se existirem espaços no nome do GPO.
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -LocalPort 23 -Action Block -PolicyStore domain.contoso.com\gpo_name
Colocação em Cache de GPO
Para reduzir a carga sobre os controladores de domínio ocupados, Windows PowerShell permite-lhe carregar um GPO para a sua sessão local, fazer todas as suas alterações nessa sessão e, em seguida, guardá-lo novamente de uma só vez. O comando seguinte executa as mesmas ações que o exemplo anterior (ao adicionar uma regra Telnet a um GPO), mas fá-lo aplicando a colocação em cache de GPO no PowerShell. Alterar o GPO ao carregá-lo para a sua sessão local e utilizar o parâmetro -GPOSession não é suportado no Netsh
$gpo = Open-NetGPO -PolicyStore domain.contoso.com\gpo_name
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\telnet.exe -Protocol TCP -LocalPort 23 -Action Block -GPOSession $gpo
Save-NetGPO -GPOSession $gpo
Este comando não cria um lote das suas alterações individuais, carrega e guarda todo o GPO de uma só vez. Assim, se outras alterações forem efetuadas por outros administradores ou numa janela de Windows PowerShell diferente, guardar o GPO substitui essas alterações.
Modificar uma regra de firewall existente
Quando uma regra é criada, o Netsh e o Windows PowerShell permitem-lhe alterar as propriedades e a influência da regra, mas a regra mantém o identificador exclusivo (no Windows PowerShell, este identificador é especificado com o parâmetro -Name). Por exemplo, pode ter uma regra Permitir Web 80 que ativa a porta TCP 80 para tráfego não solicitado de entrada. Pode alterar a regra para corresponder a um endereço IP remoto diferente de um servidor Web cujo tráfego será permitido ao especificar o nome legível por humanos e localizado da regra.
Set-NetFirewallRule -DisplayName "Allow Web 80" -RemoteAddress 192.168.0.2
O Netsh requer que forneça o nome da regra para que seja alterada e não temos uma forma alternativa de obter a regra de firewall. No Windows PowerShell, pode consultar a regra com as respetivas propriedades conhecidas.
Ao executar Get-NetFirewallRule
o , poderá reparar que as condições comuns, como endereços e portas, não são apresentadas. Estas condições são representadas em objetos separados denominados Filtros. Conforme mostrado anteriormente, pode definir todas as condições em New-NetFirewallRule e Set-NetFirewallRule. Se quiser consultar regras de firewall com base nestes campos (portas, endereços, segurança, interfaces, serviços), terá de obter os próprios objetos de filtro.
Pode alterar o ponto final remoto da regra Permitir Web 80 (como feito anteriormente) com objetos de filtro. Ao utilizar Windows PowerShell, consulta por porta com o filtro de porta e, em seguida, partindo do princípio de que existem outras regras que afetam a porta local, cria mais consultas até que a regra pretendida seja obtida.
No exemplo seguinte, partimos do princípio de que a consulta devolve uma única regra de firewall, que é, em seguida, encaminhada para o Set-NetFirewallRule
cmdlet que utiliza a capacidade do Windows PowerShell de fazer o pipeline de entradas.
Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction -eq "Inbound" -and $_.Action -eq "Allow"} | Set-NetFirewallRule -RemoteAddress 192.168.0.2
Também pode consultar as regras com o caráter universal. O exemplo seguinte devolve uma matriz de regras de firewall associadas a um programa específico. Os elementos da matriz podem ser modificados em cmdlets subsequentes Set-NetFirewallRule
.
Get-NetFirewallApplicationFilter -Program "*svchost*" | Get-NetFirewallRule
Várias regras num grupo podem ser modificadas em simultâneo quando o nome do grupo associado é especificado num comando Definir. Pode adicionar regras de firewall a grupos de gestão especificados para gerir múltiplas regras que partilham as mesmas influências. No exemplo seguinte, adicionamos regras de firewall telnet de entrada e saída ao grupo Telnet Management. No Windows PowerShell, a associação a grupos é especificada quando as regras são criadas pela primeira vez para recriarmos as regras de exemplo anteriores. Não é possível adicionar regras a um grupo de regras personalizado no Netsh.
New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"
Se o grupo não for especificado no momento da criação da regra, a regra pode ser adicionada ao grupo de regras através da notação de pontos no Windows PowerShell. Não pode especificar o grupo utilizando Set-NetFirewallRule
, uma vez que o comando permite a consulta por grupo de regras.
$rule = Get-NetFirewallRule -DisplayName "Allow Inbound Telnet"
$rule.Group = "Telnet Management"
$rule | Set-NetFirewallRule
Com a ajuda do Set
comando, se o nome do grupo de regras for especificado, a associação ao grupo não será modificada, mas todas as regras do grupo receberão as mesmas modificações indicadas pelos parâmetros indicados.
O scriptlet seguinte permite todas as regras num grupo predefinido que contém a gestão remota que influencia as regras da firewall.
Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True
Existe também um cmdlet separado Enable-NetFirewallRule
para ativar regras por grupo ou por outras propriedades da regra.
Enable-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Verbose
Eliminar uma regra de firewall
Os objetos de regra podem ser desativados para que deixem de estar ativos. No Windows PowerShell, o cmdlet Disable-NetFirewallRule deixará a regra no sistema, mas colocará-a num estado desativado para que a regra deixe de ser aplicada e tenha impacto no tráfego. Uma regra de firewall desativada pode ser reativada por Enable-NetFirewallRule. Este cmdlet é diferente do Remove-NetFirewallRule, que remove permanentemente a definição de regra do dispositivo. O cmdlet seguinte elimina a regra de firewall existente especificada do arquivo de políticas local.
Remove-NetFirewallRule -DisplayName "Allow Web 80"
Tal como acontece com outros cmdlets, também pode consultar as regras a serem removidas. Aqui, todas as regras de firewall de bloqueio são eliminadas do dispositivo.
Remove-NetFirewallRule -Action Block
Pode ser mais seguro consultar as regras com o comando Obter e guardá-las numa variável, observar as regras a serem afetadas e, em seguida, encaminhá-las para o comando Remover , tal como fizemos para os comandos Definir . O exemplo seguinte mostra como pode ver todas as regras de firewall de bloqueio e, em seguida, eliminar as primeiras quatro regras.
$x = Get-NetFirewallRule -Action Block
$x
$x[0-3] | Remove-NetFirewallRule
Gerir remotamente
A gestão remota com o WinRM está ativada por predefinição. Os cmdlets que suportam o parâmetro CimSession utilizam WinRM e podem ser geridos remotamente por predefinição. O exemplo seguinte devolve todas as regras de firewall do arquivo persistente num dispositivo com o nome RemoteDevice.
Get-NetFirewallRule -CimSession RemoteDevice
Podemos efetuar quaisquer modificações ou ver regras em dispositivos remotos com o parâmetro -CimSession . Aqui, removemos uma regra de firewall específica de um dispositivo remoto.
$RemoteSession = New-CimSession -ComputerName RemoteDevice
Remove-NetFirewallRule -DisplayName "AllowWeb80" -CimSession $RemoteSession -Confirm
Implementar definições de regras IPsec básicas
Uma política de segurança de Protocolo Internet (IPsec) consiste em regras que determinam o comportamento de IPsec. O IPsec suporta a autenticação ponto a ponto ao nível da rede, a autenticação da origem de dados, a integridade dos dados, a confidencialidade dos dados (encriptação) e a proteção de repetição. Windows PowerShell pode criar políticas IPsec avançadas e complexas, como no Netsh e na consola da Firewall do Windows. No entanto, uma vez que Windows PowerShell é baseada em objetos em vez de baseada em tokens de cadeia, a configuração no Windows PowerShell oferece maior controlo e flexibilidade. No Netsh, a autenticação e os conjuntos criptográficos foram especificados como uma lista de tokens separados por vírgulas num formato específico. No Windows PowerShell, em vez de utilizar as predefinições, primeiro cria os objetos de autenticação ou proposta criptográfica pretendidos e agrupa-os em listas pela sua ordem preferida. Em seguida, vai criar uma ou mais regras IPsec que fazem referência a estes conjuntos. A vantagem deste modelo é que o acesso programático às informações nas regras é muito mais fácil. Veja as secções seguintes para obter exemplos de esclarecimento.
Criar regras IPsec
O cmdlet seguinte cria uma regra básica do modo de transporte IPsec num Objeto Política de Grupo. Uma regra IPsec é simples de criar; tudo o que é necessário é o nome a apresentar e as restantes propriedades utilizam valores predefinidos. O tráfego de entrada é autenticado e a integridade é verificada com o modo rápido predefinido e as definições do modo main. Estas predefinições podem ser encontradas na consola em Personalizar Predefinições de IPsec.
New-NetIPsecRule -DisplayName "Require Inbound Authentication" -PolicyStore domain.contoso.com\gpo_name
Adicionar métodos de autenticação personalizados a uma regra IPsec
Se quiser criar um conjunto personalizado de propostas de modo rápido que inclua a AH e a ESP num objeto de regra IPsec, crie os objetos associados separadamente e associe as respetivas associações. Para obter mais informações sobre os métodos de autenticação, veja Escolher o Protocolo IPsec. Em seguida, pode utilizar as políticas de modo rápido personalizadas recentemente criadas quando criar regras IPsec. O objeto do conjunto de criptografia está ligado a um objeto de regra IPsec. Neste exemplo, vamos basear-nos na regra IPsec criada anteriormente ao especificar um conjunto de criptografia de modo rápido personalizado. A regra IPsec final requer que o tráfego de saída seja autenticado pelo método de criptografia especificado.
$AHandESPQM = New-NetIPsecQuickModeCryptoProposal -Encapsulation AH,ESP -AHHash SHA1 -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "ah:sha1+esp:sha1-des3" -Proposal $AHandESPQM -PolicyStore domain.contoso.com\gpo_name
New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -QuickModeCryptoSet $QMCryptoSet.Name -PolicyStore domain.contoso.com\gpo_name
Regras de transporte IPsec IKEv2
Uma rede empresarial pode ter de proteger as comunicações com outra agência. No entanto, descobre que a agência executa sistemas operativos não Windows e requer a utilização da norma Internet Key Exchange Versão 2 (IKEv2). Pode aplicar capacidades IKEv2 no Windows Server 2012 ao especificar IKEv2 como o módulo-chave numa regra IPsec. Esta especificação de capacidade só pode ser efetuada com a autenticação de certificados de computador e não pode ser utilizada com a autenticação de fase 2.
New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -Phase1AuthSet MyCertAuthSet -KeyModule IKEv2 -RemoteAddress $nonWindowsGateway
Para obter mais informações sobre o IKEv2, incluindo cenários, veja Securing End-to-End IPsec Connections by Using IKEv2 (Proteger o IPsec ponto a ponto Connections ao Utilizar o IKEv2).
Copiar uma regra IPsec de uma política para outra
As regras de firewall e IPsec com as mesmas propriedades de regra podem ser duplicadas para simplificar a tarefa de voltar a criá-las em diferentes arquivos de políticas. Para copiar a regra criada anteriormente de um arquivo de políticas para outro, os objetos associados também têm de ser copiados separadamente. Não é necessário copiar filtros de firewall associados. Pode consultar regras para serem copiadas da mesma forma que outros cmdlets. Copiar regras individuais é uma tarefa que não é possível através da interface Netsh. Eis como pode fazê-lo com Windows PowerShell.
$Rule = Get-NetIPsecRule -DisplayName "Require Inbound Authentication"
$Rule | Copy-NetIPsecRule -NewPolicyStore domain.costoso.com\new_gpo_name
$Rule | Copy-NetPhase1AuthSet -NewPolicyStore domain.costoso.com\new_gpo_name
Lidar com erros de Windows PowerShell
Para processar erros nos scripts de Windows PowerShell, pode utilizar o parâmetro -ErrorAction. Este parâmetro é especialmente útil com os cmdlets Remove . Se quiser remover uma regra específica, irá reparar que falha se a regra não for encontrada. Quando as regras estão a ser removidas, se a regra ainda não estiver lá, é aceitável ignorar esse erro. Neste caso, pode fazer o seguinte para suprimir quaisquer erros de "regra não encontrada" durante a operação de remoção.
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98" -ErrorAction SilentlyContinue
A utilização de carateres universais também pode suprimir erros, mas podem corresponder potencialmente a regras que não pretendia remover. Estes carateres universais podem ser um atalho útil, mas só devem ser utilizados se souber que não existem regras adicionais que serão eliminadas acidentalmente. Assim, o cmdlet seguinte também removerá a regra, suprimindo todos os erros "não encontrados".
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*"
Ao utilizar carateres universais, se quiser fazer duplo marcar o conjunto de regras correspondentes, pode utilizar o parâmetro -WhatIf.
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -WhatIf
Se apenas quiser eliminar algumas das regras correspondentes, pode utilizar o parâmetro -Confirm para obter um pedido de confirmação regra a regra.
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Confirm
Também pode simplesmente executar toda a operação, apresentando o nome de cada regra à medida que a operação é executada.
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Verbose
Monitor
Os seguintes comandos Windows PowerShell são úteis no ciclo de atualização de uma fase de implementação. Para permitir que veja todas as regras IPsec num arquivo específico, pode utilizar os seguintes comandos. No Netsh, este comando não mostra regras em que profile=domain, public ou profile=domain,private. Mostra apenas as regras que têm o domínio de entrada única incluído na regra. Os seguintes exemplos de comando mostrarão as regras IPsec em todos os perfis.
Show-NetIPsecRule -PolicyStore ActiveStore
Pode monitorizar as associações de segurança do modo main para obter informações como os elementos que estão atualmente ligados ao dispositivo e que conjunto de proteção é utilizado para formar as associações de segurança. Utilize o seguinte cmdlet para ver as regras de modo main existentes e as respetivas associações de segurança:
Get-NetIPsecMainModeSA
Localizar o GPO de origem de uma regra
Para ver as propriedades de uma determinada regra ou grupo de regras, consulte a regra. Quando uma consulta devolve campos especificados como NotConfigured, pode determinar a partir do qual a política armazena uma regra. Para objetos provenientes de um GPO (o parâmetro -PolicyStoreSourceType é especificado como GroupPolicy no comando Mostrar ), se -TracePolicyStore for transmitido, o nome do GPO é encontrado e devolvido no campo PolicyStoreSource .
Get-NetIPsecRule -DisplayName "Require Inbound Authentication" -TracePolicyStore
É importante ter em atenção que as origens reveladas não contêm um nome de domínio.
Implementar uma política básica de isolamento de domínio
O IPsec pode ser utilizado para isolar membros do domínio de membros que não sejam do domínio. O isolamento de domínio utiliza a autenticação IPsec para exigir que os dispositivos associados a um domínio estabeleçam positivamente as identidades dos dispositivos de comunicação para melhorar a segurança de uma organização. Uma ou mais funcionalidades do IPsec podem ser utilizadas para proteger o tráfego com um objeto de regra IPsec. Para implementar o isolamento de domínio na sua rede, os dispositivos no domínio recebem regras IPsec que bloqueiam o tráfego de rede de entrada não solicitado que não está protegido pelo IPsec. Aqui, criamos uma regra IPsec que requer autenticação por membros do domínio. Através desta autenticação, pode isolar dispositivos associados a um domínio de dispositivos que não estão associados a um domínio. Nos exemplos seguintes, a autenticação Kerberos é necessária para o tráfego de entrada e é pedida para o tráfego de saída.
$kerbprop = New-NetIPsecAuthProposal -Machine -Kerberos
$Phase1AuthSet = New-NetIPsecPhase1AuthSet -DisplayName "Kerberos Auth Phase1" -Proposal $kerbprop -PolicyStore domain.contoso.com\domain_isolation
New-NetIPsecRule -DisplayName "Basic Domain Isolation Policy" -Profile Domain -Phase1AuthSet $Phase1AuthSet.Name -InboundSecurity Require -OutboundSecurity Request -PolicyStore domain.contoso.com\domain_isolation
Configurar o modo de túnel IPsec
O comando seguinte cria um túnel IPsec que encaminha o tráfego de uma rede privada (192.168.0.0/16) através de uma interface no dispositivo local (1.1.1.1. 1) ligado a uma rede pública a um segundo dispositivo através da respetiva interface pública (2.2.2.2) a outra rede privada (192.157.0.0/16). Todo o tráfego através do túnel é verificado quanto à integridade através de ESP/SHA1 e é encriptado com ESP/DES3.
$QMProposal = New-NetIPsecQuickModeCryptoProposal -Encapsulation ESP -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "esp:sha1-des3" -Proposal $QMProposal
New-NetIPSecRule -DisplayName "Tunnel from HQ to Dallas Branch" -Mode Tunnel -LocalAddress 192.168.0.0/16 -RemoteAddress 192.157.0.0/16 -LocalTunnelEndpoint 1.1.1.1 -RemoteTunnelEndpoint 2.2.2.2 -InboundSecurity Require -OutboundSecurity Require -QuickModeCryptoSet $QMCryptoSet.Name
Implementar regras de firewall seguras com o IPsec
Em situações em que apenas o tráfego seguro pode ser permitido através da Firewall do Windows, é necessária uma combinação de firewalls configuradas manualmente e regras IPsec. As regras de firewall determinam o nível de segurança dos pacotes permitidos e as regras IPsec subjacentes protegem o tráfego. Os cenários podem ser realizados no Windows PowerShell e no Netsh, com muitas semelhanças na implementação.
Criar uma regra de firewall segura (permitir se estiver segura)
Configurar a regra de firewalls para permitir ligações se estiverem seguras requer que o tráfego correspondente seja autenticado e protegido pela integridade e, em seguida, opcionalmente encriptado pelo IPsec. O exemplo seguinte cria uma regra de firewall que requer a autenticação do tráfego. O comando só permite o tráfego de rede Telnet de entrada se a ligação do dispositivo remoto for autenticada através de uma regra IPsec separada.
New-NetFirewallRule -DisplayName "Allow Authenticated Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -Authentication Required -Action Allow
O comando seguinte cria uma regra IPsec que requer uma primeira autenticação (computador) e, em seguida, tenta uma autenticação opcional de segundo (utilizador). A criação desta regra protege e permite o tráfego através dos requisitos de regras de firewall para o programa messenger.
$mkerbauthprop = New-NetIPsecAuthProposal -Machine -Kerberos
$mntlmauthprop = New-NetIPsecAuthProposal -Machine -NTLM
$P1Auth = New-NetIPsecPhase1AuthSet -DisplayName "Machine Auth" -Proposal $mkerbauthprop,$mntlmauthprop
$ukerbauthprop = New-NetIPsecAuthProposal -User -Kerberos
$unentlmauthprop = New-NetIPsecAuthProposal -User -NTLM
$anonyauthprop = New-NetIPsecAuthProposal -Anonymous
$P2Auth = New-NetIPsecPhase2AuthSet -DisplayName "User Auth" -Proposal $ukerbauthprop,$unentlmauthprop,$anonyauthprop
New-NetIPSecRule -DisplayName "Authenticate Both Computer and User" -InboundSecurity Require -OutboundSecurity Require -Phase1AuthSet $P1Auth.Name -Phase2AuthSet $P2Auth.Name
Isolar um servidor ao exigir encriptação e associação a grupos
Para melhorar a segurança dos dispositivos numa organização, pode implementar o isolamento de domínio no qual os membros do domínio são restritos. Precisam de autenticação quando comunicam entre si e rejeitam ligações de entrada não autenticadas. Para melhorar a segurança dos servidores com dados confidenciais, estes dados têm de ser protegidos ao permitir o acesso apenas a um subconjunto de dispositivos no domínio empresarial. O IPsec pode fornecer esta camada adicional de proteção ao isolar o servidor. No isolamento do servidor, o acesso a dados confidenciais está restrito a utilizadores e dispositivos com necessidades comerciais legítimas e os dados são encriptados adicionalmente para impedir escutas.
Criar uma regra de firewall que requer associação a grupos e encriptação
Para implementar o isolamento do servidor, colocamos em camadas uma regra de firewall que restringe o tráfego a utilizadores ou dispositivos autorizados na regra IPsec que impõe a autenticação. A seguinte regra de firewall permite o tráfego telnet de contas de utilizador que são membros de um grupo personalizado chamado "Autorizado para o Servidor de Acesso". Além disso, este acesso pode ser restringido com base no dispositivo, no utilizador ou em ambos ao especificar os parâmetros de restrição. É criada uma cadeia SDDL (Security Descriptor Definition Language) ao expandir o identificador de segurança (SID) de um utilizador ou grupo. Para obter mais informações sobre como localizar o SID de um grupo, consulte: Localizar o SID de uma conta de grupo. Restringir o acesso a um grupo permite que as administrações expandam o suporte de autenticação forte através da Firewall do Windows e/ou das políticas IPsec. O exemplo seguinte mostra como criar uma cadeia de carateres SDDL que representa grupos de segurança.
$user = new-object System.Security.Principal.NTAccount ("corp.contoso.com\Administrators")
$SIDofSecureUserGroup = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value
$secureUserGroup = "D:(A;;CC;;;$SIDofSecureUserGroup)"
Ao utilizar o scriptlet anterior, também pode obter a cadeia SDDL para um grupo de computadores seguro, conforme mostrado aqui:
$secureMachineGroup = "D:(A;;CC;;;$SIDofSecureMachineGroup)"
Para obter mais informações sobre como criar grupos de segurança ou como determinar a cadeia SDDL, veja Trabalhar com SIDs. O Telnet é uma aplicação que não fornece encriptação. Esta aplicação pode enviar dados, como nomes e palavras-passe, através da rede. Estes dados podem ser intercetados por utilizadores maliciosos. Se um administrador quiser permitir a utilização do Telnet, mas proteger o tráfego, pode ser criada uma regra de firewall que exija a encriptação IPsec. Esta regra de firewall é necessária para que o administrador possa ter a certeza de que, quando esta aplicação é utilizada, todo o tráfego enviado ou recebido por esta porta é encriptado. Se o IPsec não autorizar a ligação, não é permitido tráfego desta aplicação. Neste exemplo, permitimos apenas tráfego Telnet de entrada autenticado e encriptado de um grupo de utilizadores seguro especificado através da criação da seguinte regra de firewall.
New-NetFirewallRule -DisplayName "Allow Encrypted Inbound Telnet to Group Members Only" -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -Direction Inbound -Action Allow -LocalPort 23 -Authentication Required -Encryption Required -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\Server_Isolation
Imposição de segurança de pontos finais
O exemplo anterior mostrou a segurança ponto a ponto para uma determinada aplicação. Em situações em que a segurança do ponto final é necessária para muitas aplicações, ter uma regra de firewall por aplicação pode ser complicado e difícil de gerir. A autorização pode substituir a base por regra e ser feita na camada IPsec. Neste exemplo, definimos a definição IPsec global para permitir apenas o tráfego do modo de transporte proveniente de um grupo de utilizadores autorizado com o seguinte cmdlet. Veja os exemplos anteriores para trabalhar com grupos de segurança.
Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup
Criar regras de firewall que permitem tráfego de rede protegido por IPsec (desativação autenticada)
O bypass autenticado permite que o tráfego de um dispositivo ou utilizador fidedigno especificado substitua as regras de bloqueio da firewall. Esta substituição é útil quando um administrador quer utilizar servidores de análise para monitorizar e atualizar dispositivos sem a necessidade de utilizar exceções ao nível da porta. Para obter mais informações, veja Como ativar a desativação da firewall autenticada. Neste exemplo, partimos do princípio de que existe uma regra de firewall de bloqueio. Este exemplo permite que qualquer tráfego de rede em qualquer porta de qualquer endereço IP substitua a regra de bloco, se o tráfego for autenticado como proveniente de um dispositivo ou conta de utilizador que seja membro do dispositivo especificado ou grupo de segurança de utilizador.
New-NetFirewallRule -DisplayName "Inbound Secure Bypass Rule" -Direction Inbound -Authentication Required -OverrideBlockRules $true -RemoteMachine $secureMachineGroup -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\domain_isolation