Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece exemplos de como gerenciar o Firewall do Windows com o PowerShell e netsh.exeo , que podem ser usados para automatizar o gerenciamento do Firewall do Windows.
Definir padrões globais de perfil
Os padrões globais definem o comportamento do dispositivo por perfil. O Firewall do Windows dá suporte a perfis de Domínio, Privado e Público.
O Firewall do Windows descarta o tráfego que não corresponde ao tráfego não solicitado permitido ou o tráfego enviado em resposta a uma solicitação do dispositivo. Se você achar que as regras criadas não são impostas, talvez seja necessário habilitar o Firewall do Windows. Veja como habilitar o Firewall do Windows em um dispositivo local:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Controlar o comportamento do Firewall do Windows
As configurações padrão globais podem ser definidas por meio da interface de linha de comando. Essas modificações também estão disponíveis por meio do console do Firewall do Windows. Os scriptlets a seguir definem as ações padrão de entrada e saída, especificam conexões de rede protegidas e não permitem que notificações sejam exibidas ao usuário quando um programa é impedido de receber conexões de entrada. Ele permite a resposta unicast ao tráfego de rede multicast ou de difusão e especifica as configurações de log para solução de problemas.
Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow -NotifyOnListen False -AllowUnicastResponseToMulticast True -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log
Desabilitar o Firewall do Windows
A Microsoft recomenda que você não desabilite o Firewall do Windows porque perderá outros benefícios, como a capacidade de usar regras de segurança de conexão do protocolo IPsec, proteção de rede contra ataques que empregam impressão digital de rede, Proteção de Serviços do Windows e filtros de tempo de inicialização. Softwares de firewall que não são da Microsoft podem desabilitar programaticamente apenas os tipos de regra do Firewall do Windows que precisam ser desabilitados para compatibilidade. Você não deve desabilitar o firewall por conta própria para essa finalidade. Se for necessário desabilitar o Firewall do Windows, não o desabilite interrompendo o serviço do Firewall do Windows (no snap-in Serviços, o nome de exibição é Windows Defender Firewall e o nome do serviço é MpsSvc). Interromper o serviço do Firewall do Windows não tem suporte da Microsoft e pode causar problemas, incluindo:
- O menu Iniciar pode parar de funcionar
- Aplicativos modernos podem falhar ao instalar ou atualizar
- Falha na ativação do Windows por telefone
- Incompatibilidades de aplicativos ou do sistema operacional que dependem do Firewall do Windows
O método adequado para desabilitar o Firewall do Windows é desabilitar os perfis do Firewall do Windows e deixar o serviço em execução. Use o procedimento a seguir para desativar o firewall ou desabilitar a configuração da Política de Grupo Configuração do Computador|Modelos Administrativos|Rede|Conexões de Rede|Firewall do Windows|Perfil do domínio|Firewall do Windows:Protege todas as conexões de rede. Para obter mais informações, consulte o guia de implantação do Firewall do Windows. O exemplo a seguir desabilita o Firewall do Windows para todos os perfis.
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Implantar regras básicas de firewall
Esta seção fornece exemplos de scriptlet para criar, modificar e excluir regras de firewall.
Criar regras de firewall
A adição de uma regra de firewall no Windows PowerShell se parece muito com o Netsh, mas os parâmetros e valores são especificados de forma diferente. Aqui está um exemplo de como permitir que o aplicativo Telnet escute na rede. Essa regra de firewall tem como escopo a sub-rede local usando uma palavra-chave em vez de um endereço IP. Assim como no Netsh, a regra é criada no dispositivo local e entra em vigor imediatamente.
New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow
O scriptlet a seguir mostra como adicionar uma regra de firewall básica que bloqueia o tráfego de saída de um aplicativo específico e uma porta local para um objeto Política de Grupo (GPO) no Active Directory. No Windows PowerShell, o repositório de políticas é especificado como um parâmetro dentro do cmdlet New-NetFirewall. No Netsh, você deve primeiro especificar o GPO que os comandos em uma sessão Netsh devem modificar. Os comandos inseridos são executados no conteúdo do GPO e a execução permanece em vigor até que a sessão Netsh seja encerrada 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 você deseja modificar. Aspas são necessárias se houver 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
Cache de GPO
Para reduzir a carga sobre controladores de domínio ocupados, o Windows PowerShell permite que você carregue um GPO em sua sessão local, faça todas as alterações nessa sessão e salve-o novamente de uma só vez. O comando a seguir executa as mesmas ações do exemplo anterior (adicionando uma regra Telnet a um GPO), mas fazemos isso aplicando o cache de GPO no PowerShell. Não há suporte para a alteração do GPO carregando-o na sessão local e usando o parâmetro -GPOSession 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
Esse comando não agrupa suas alterações individuais, ele carrega e salva todo o GPO de uma só vez. Portanto, se quaisquer outras alterações forem feitas por outros administradores ou em uma janela diferente do Windows PowerShell, salvar o GPO substituirá essas alterações.
Modificar uma regra de firewall existente
Quando uma regra é criada, o Netsh e o Windows PowerShell permitem que você altere as propriedades e a influência da regra, mas a regra mantém seu identificador exclusivo (no Windows PowerShell, esse identificador é especificado com o parâmetro -Name). Por exemplo, você pode ter uma regra Permitir Web 80 que habilita a porta TCP 80 para tráfego não solicitado de entrada. Você pode alterar a regra para corresponder a um endereço IP remoto diferente de um servidor Web cujo tráfego será permitido, especificando o nome localizado legível e legível da regra.
Set-NetFirewallRule -DisplayName "Allow Web 80" -RemoteAddress 192.168.0.2
O Netsh exige que você forneça o nome da regra para que ela seja alterada e não temos uma maneira alternativa de obter a regra de firewall. No Windows PowerShell, você pode consultar a regra usando suas propriedades conhecidas.
Ao executar Get-NetFirewallRule, você pode observar que as condições comuns, como endereços e portas, não são exibidas. Essas condições são representadas em objetos separados chamados Filtros. Como mostrado anteriormente, você pode definir todas as condições em New-NetFirewallRule e Set-NetFirewallRule. Se você quiser consultar regras de firewall com base nesses campos (portas, endereços, segurança, interfaces, serviços), precisará obter os próprios objetos de filtro.
Você pode alterar o ponto de extremidade remoto da regra Permitir Web 80 (como feito anteriormente) usando objetos de filtro. Usando o Windows PowerShell, você consulta por porta usando o filtro de porta e, em seguida, supondo que existam outras regras que afetam a porta local, você constrói com mais consultas até que a regra desejada seja recuperada.
No exemplo a seguir, presumimos que a consulta retorne uma única regra de firewall, que é então canalizada para o cmdlet utilizando a Set-NetFirewallRule capacidade do Windows PowerShell de canalizar entradas.
Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction -eq "Inbound" -and $_.Action -eq "Allow"} | Set-NetFirewallRule -RemoteAddress 192.168.0.2
Você também pode consultar regras usando o caractere curinga. O exemplo a seguir retorna 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 em um grupo podem ser modificadas simultaneamente quando o nome do grupo associado é especificado em um comando Set. Você pode adicionar regras de firewall a grupos de gerenciamento especificados para gerenciar várias regras que compartilham as mesmas influências. No exemplo a seguir, adicionamos regras de firewall Telnet de entrada e saída ao gerenciamento Telnet do grupo. No Windows PowerShell, a associação a grupo é especificada quando as regras são criadas pela primeira vez, portanto, recriamos as regras de exemplo anteriores. Adicionar regras a um grupo de regras personalizadas não é possível 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 poderá ser adicionada ao grupo de regras usando a notação de ponto no Windows PowerShell. Não é possível especificar o grupo usando Set-NetFirewallRule , pois o comando permite consultas por grupo de regras.
$rule = Get-NetFirewallRule -DisplayName "Allow Inbound Telnet"
$rule.Group = "Telnet Management"
$rule | Set-NetFirewallRule
Com a ajuda do comando, se o nome do grupo de Set 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 fornecidos.
O scriptlet a seguir habilita todas as regras em um grupo predefinido contendo o gerenciamento remoto que influencia as regras de firewall.
Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True
Há também um cmdlet separado Enable-NetFirewallRule para habilitar regras por grupo ou por outras propriedades da regra.
Enable-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Verbose
Excluir uma regra de firewall
Os objetos de regra podem ser desabilitados para que não fiquem mais ativos. No Windows PowerShell, o cmdlet Disable-NetFirewallRule deixará a regra no sistema, mas a colocará em um estado desabilitado para que a regra não seja mais aplicada e afete o tráfego. Uma regra de firewall desabilitada pode ser reabilitada pelo Enable-NetFirewallRule. Esse cmdlet é diferente do Remove-NetFirewallRule, que remove permanentemente a definição de regra do dispositivo. O cmdlet a seguir exclui a regra de firewall existente especificada do repositório de políticas local.
Remove-NetFirewallRule -DisplayName "Allow Web 80"
Assim como com outros cmdlets, você também pode consultar as regras a serem removidas. Aqui, todas as regras de firewall de bloqueio são excluídas do dispositivo.
Remove-NetFirewallRule -Action Block
Pode ser mais seguro consultar as regras com o comando Get e salvá-las em uma variável, observar as regras a serem afetadas e, em seguida, canalizá-las para o comando Remove , assim como fizemos para os comandos Set . O exemplo a seguir mostra como você pode exibir todas as regras de firewall de bloqueio e, em seguida, excluir as quatro primeiras regras.
$x = Get-NetFirewallRule -Action Block
$x
$x[0-3] | Remove-NetFirewallRule
Gerenciar remotamente
O gerenciamento remoto usando o WinRM está habilitado por padrão. Os cmdlets que dão suporte ao parâmetro CimSession usam WinRM e podem ser gerenciados remotamente por padrão. O exemplo a seguir retorna todas as regras de firewall do repositório persistente em um dispositivo chamado RemoteDevice.
Get-NetFirewallRule -CimSession RemoteDevice
Podemos realizar quaisquer modificações ou exibir regras em dispositivos remotos usando 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
Implantar configurações básicas de regra IPsec
Uma diretiva de IPsec (Segurança do Protocolo Internet) consiste em regras que determinam o comportamento do IPsec. O IPsec oferece suporte à autenticação de mesmo nível no nível de rede, autenticação de origem de dados, integridade de dados, confidencialidade de dados (criptografia) e proteção de repetição.
O Windows PowerShell pode criar políticas IPsec poderosas e complexas, como no Netsh e no console do Firewall do Windows. No entanto, como o Windows PowerShell é baseado em objeto e não em token de cadeia de caracteres, a configuração no Windows PowerShell oferece maior controle e flexibilidade.
No Netsh, os conjuntos criptográficos e de autenticação foram especificados como uma lista de tokens separados por vírgula em um formato específico. No Windows PowerShell, em vez de usar as configurações padrão, você primeiro cria a autenticação desejada ou os objetos de proposta criptográfica e os agrupa em listas na ordem de sua preferência. Em seguida, crie uma ou mais regras IPsec que façam referência a esses conjuntos. O benefício desse modelo é que o acesso programático às informações nas regras é muito mais fácil. Consulte as seções a seguir para esclarecer exemplos.
Criar regras IPsec
O cmdlet a seguir cria a regra básica do modo de transporte IPsec em um Objeto de Política de Grupo. Uma regra IPsec é simples de criar; Tudo o que é necessário é o nome de exibição, e as propriedades restantes usam valores padrão. O tráfego de entrada é autenticado e a integridade verificada usando as configurações padrão do modo rápido e do modo principal. Essas configurações padrão podem ser encontradas no console em Personalizar Padrões do 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 você quiser criar um conjunto personalizado de propostas de modo rápido que inclua AH e ESP em um objeto de regra IPsec, crie os objetos associados separadamente e vincule suas associações. Para obter mais informações sobre métodos de autenticação, consulte Escolhendo o protocolo IPsec.
Você pode usar as políticas de modo rápido personalizadas recém-criadas ao criar regras IPsec. O objeto de conjunto de criptografia está vinculado a um objeto de regra IPsec.
Neste exemplo, baseamos a regra IPsec criada anteriormente especificando um conjunto de criptomoedas 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 IKEv2 do IPsec
Uma rede corporativa pode precisar proteger as comunicações com outra agência. Mas, você descobre que a agência executa sistemas operacionais não Windows e requer o uso do padrão Internet Key Exchange Version 2 (IKEv2). Você pode aplicar recursos IKEv2 no Windows Server 2012 especificando IKEv2 como o módulo-chave em uma regra IPsec. Essa especificação de funcionalidade só pode ser feita usando a autenticação de certificado do computador e não pode ser usada 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, consulte Protegendo conexões IPsec de ponta a ponta usando 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 recriá-las em diferentes repositórios de políticas. Para copiar a regra criada anteriormente de um repositório de políticas para outro, os objetos associados também devem ser copiados separadamente. Não é necessário copiar os filtros de firewall associados. Você pode consultar regras a serem copiadas da mesma maneira que outros cmdlets. Copiar regras individuais é uma tarefa que não é possível por meio da interface Netsh. Veja como você pode fazer isso com o Windows PowerShell.
$Rule = Get-NetIPsecRule -DisplayName "Require Inbound Authentication"
$Rule | Copy-NetIPsecRule -NewPolicyStore domain.contoso.com\new_gpo_name
$Rule | Copy-NetPhase1AuthSet -NewPolicyStore domain.costoso.com\new_gpo_name
Tratamento de erros do Windows PowerShell
Para lidar com erros nos scripts do Windows PowerShell, você pode usar o parâmetro -ErrorAction. Esse parâmetro é especialmente útil com os cmdlets Remove . Se você quiser remover uma regra específica, observará que ela falhará se a regra não for encontrada. Quando as regras estão sendo removidas, se a regra ainda não estiver lá, é aceitável ignorar esse erro. Nesse caso, você 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
O uso de curingas também pode suprimir erros, mas eles podem corresponder a regras que você não pretendia remover. Esses curingas podem ser um atalho útil, mas só devem ser usados se você souber que não há regras extras que serão excluídas acidentalmente. Portanto, o cmdlet a seguir também removerá a regra, suprimindo quaisquer erros "não encontrados".
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*"
Ao usar curingas, se quiser marcar novamente o conjunto de regras correspondente, você poderá usar o parâmetro -WhatIf.
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -WhatIf
Se você quiser excluir apenas algumas das regras correspondentes, poderá usar o parâmetro -Confirm para obter um prompt de confirmação regra por regra.
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Confirm
Você também pode simplesmente executar a operação inteira, exibindo o nome de cada regra à medida que a operação é executada.
Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Verbose
Monitor
Os comandos do Windows PowerShell a seguir são úteis no ciclo de atualização de uma fase de implantação. Para permitir que você exiba todas as regras IPsec em um repositório específico, é possível usar os comandos a seguir. No Netsh, esse comando não mostra regras em que profile=domain,public ou profile=domain,private. Ele mostra apenas as regras que têm o domínio de entrada única incluído na regra. Os exemplos de comando a seguir mostrarão as regras de IPsec em todos os perfis.
Show-NetIPsecRule -PolicyStore ActiveStore
Você pode monitorar as associações de segurança do modo principal para obter informações como quais pares estão atualmente conectados ao dispositivo e qual pacote de proteção é usado para formar as associações de segurança. Use o cmdlet a seguir para exibir as regras de modo principal existentes e suas associações de segurança:
Get-NetIPsecMainModeSA
Localizar o GPO de origem de uma regra
Para exibir as propriedades de uma regra específica ou de um grupo de regras, consulte a regra. Quando uma consulta retorna campos especificados como NotConfigured, você pode determinar de qual repositório de política uma regra se origina. Para objetos provenientes de um GPO (o parâmetro -PolicyStoreSourceType é especificado como GroupPolicy no comando Show ), se -TracePolicyStore for passado, o nome do GPO será encontrado e retornado no campo PolicyStoreSource .
Get-NetIPsecRule -DisplayName "Require Inbound Authentication" -TracePolicyStore
É importante observar que as fontes reveladas não contêm um nome de domínio.
Implantar uma política básica de isolamento de domínio
O IPsec pode ser usado para isolar membros do domínio de membros que não são membros do domínio. O isolamento de domínio usa autenticação IPsec para exigir que os dispositivos ingressados no domínio estabeleçam positivamente as identidades dos dispositivos de comunicação para melhorar a segurança de uma organização. Um ou mais recursos do IPsec podem ser usados para proteger o tráfego com um objeto de regra IPsec. Para implementar o isolamento de domínio em 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 é protegido pelo IPsec. Aqui, criamos uma regra IPsec que exige autenticação por membros do domínio. Por meio dessa autenticação, você pode isolar dispositivos ingressados no domínio de dispositivos que não ingressaram em um domínio. Nos exemplos a seguir, a autenticação Kerberos é necessária para o tráfego de entrada e solicitada 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 a seguir cria um túnel IPsec que roteia o tráfego de uma rede privada (192.168.0.0/16) por meio de uma interface no dispositivo local (1.1.1.1) conectada a uma rede pública para um segundo dispositivo por meio de sua interface pública (2.2.2.2) para outra rede privada (192.157.0.0/16). Todo o tráfego através do túnel é verificado quanto à integridade usando ESP/SHA1 e é criptografado usando 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
Implantar regras de firewall seguras com IPsec
Em situações em que apenas o tráfego seguro pode ser permitido através do Firewall do Windows, é necessária uma combinação de regras de firewall e IPsec configuradas manualmente. As regras de firewall determinam o nível de segurança para 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 implantação.
Criar uma regra de firewall segura (permitir se for seguro)
Configurar a regra de firewalls para permitir conexões se elas forem seguras exige que o tráfego correspondente seja autenticado e protegido por integridade e, opcionalmente, criptografado por IPsec. O exemplo a seguir cria uma regra de firewall que exige que o tráfego seja autenticado. O comando permite o tráfego de rede Telnet de entrada somente se a conexão do dispositivo remoto for autenticada usando uma regra IPsec separada.
New-NetFirewallRule -DisplayName "Allow Authenticated Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -Authentication Required -Action Allow
O comando a seguir cria uma regra IPSec que requer uma primeira autenticação (de computador) e, em seguida, tenta uma segunda autenticação opcional (de usuário). A criação dessa regra protege e permite o tráfego por meio dos requisitos de regra de firewall para o programa mensageiro.
$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 exigindo criptografia e associação a um grupo
Para melhorar a segurança dos dispositivos em uma organização, você pode implantar o isolamento de domínio no qual os membros do domínio são restritos. Eles exigem autenticação ao se comunicarem entre si e rejeitam conexões de entrada não autenticadas. Para melhorar a segurança dos servidores com dados confidenciais, esses dados devem ser protegidos, permitindo o acesso apenas a um subconjunto de dispositivos dentro do domínio corporativo. O IPsec pode fornecer essa camada extra de proteção isolando o servidor. No isolamento do servidor, o acesso a dados confidenciais é restrito a usuários e dispositivos com necessidade comercial legítima, e os dados são criptografados adicionalmente para evitar espionagem.
Criar uma regra de firewall que exija associação de grupo e criptografia
Para implantar o isolamento do servidor, colocamos uma regra de firewall que restringe o tráfego a usuários ou dispositivos autorizados na regra IPsec que impõe a autenticação. A regra de firewall a seguir permite o tráfego Telnet de contas de usuário que são membros de um grupo personalizado chamado "Autorizado a acessar o servidor". Esse acesso também pode ser restrito com base no dispositivo, usuário ou ambos, especificando os parâmetros de restrição. Uma cadeia de caracteres SDDL (Security Descriptor Definition Language) é criada estendendo o SID (identificador de segurança) de um usuário ou grupo. Para obter mais informações sobre como localizar o SID de um grupo, consulte: Localizando o SID de uma conta de grupo. Restringir o acesso a um grupo permite que as administrações estendam o suporte à autenticação forte por meio do Firewall do Windows e/ou das políticas IPsec. O exemplo a seguir mostra como criar uma cadeia de caracteres 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)"
Usando o scriptlet anterior, você também pode obter a cadeia de caracteres 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 de caracteres SDDL, consulte Trabalhando com SIDs. O Telnet é um aplicativo que não fornece criptografia. Esse aplicativo pode enviar dados, como nomes e senhas, pela rede. Esses dados podem ser interceptados por usuários mal-intencionados. Se um administrador quiser permitir o uso do Telnet, mas proteger o tráfego, uma regra de firewall que exija criptografia IPsec pode ser criada. Essa regra de firewall é necessária para que o administrador possa ter certeza de que, quando esse aplicativo for usado, todo o tráfego enviado ou recebido por essa porta será criptografado. Se o IPsec não autorizar a conexão, nenhum tráfego será permitido desse aplicativo. Neste exemplo, permitimos apenas tráfego Telnet de entrada autenticado e criptografado de um grupo de usuários seguro especificado por meio 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 ponto de extremidade
O exemplo anterior mostrou a segurança de ponta a ponta para um aplicativo específico. Em situações em que a segurança do ponto de extremidade é necessária para muitos aplicativos, ter uma regra de firewall por aplicativo pode ser complicado e difícil de gerenciar. A autorização pode substituir a base por regra e ser feita na camada IPsec. Neste exemplo, definimos a configuração IPsec global para permitir apenas que o tráfego no modo de transporte venha de um grupo de usuários autorizado com o seguinte cmdlet. Consulte 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 (bypass autenticado)
O bypass autenticado permite que o tráfego de um dispositivo ou usuário confiável especificado substitua as regras de bloqueio de firewall. Essa substituição é útil quando um administrador deseja usar servidores de verificação para monitorar e atualizar dispositivos sem a necessidade de usar exceções no nível da porta. Para obter mais informações, consulte Como habilitar o bypass do firewall autenticado. Neste exemplo, presumimos 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 bloqueio, se o tráfego for autenticado como originário de um dispositivo ou conta de usuário que seja membro do dispositivo especificado ou grupo de segurança de usuário.
New-NetFirewallRule -DisplayName "Inbound Secure Bypass Rule" -Direction Inbound -Authentication Required -OverrideBlockRules $true -RemoteMachine $secureMachineGroup -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\domain_isolation