Administración de Firewall de Windows con la línea de comandos

En este artículo se proporcionan ejemplos de cómo administrar Firewall de Windows con PowerShell y netsh.exe, que se pueden usar para automatizar la administración de Firewall de Windows.

Establecer valores predeterminados globales de perfil

Los valores predeterminados globales establecen el comportamiento del dispositivo por perfil. Firewall de Windows admite perfiles de dominio, privado y público.

Firewall de Windows quita el tráfico que no se corresponde con el tráfico no solicitado permitido o el tráfico que se envía en respuesta a una solicitud del dispositivo. Si ves que las reglas que creas no se aplican, es posible que tengas que habilitar Firewall de Windows. A continuación se muestra cómo habilitar Firewall de Windows en un dispositivo local:

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

Controlar el comportamiento del Firewall de Windows

La configuración predeterminada global se puede definir a través de la interfaz de la línea de comandos. Estas modificaciones también están disponibles a través de la consola de Firewall de Windows. Los siguientes scriptlets establecen las acciones entrantes y salientes predeterminadas, especifican las conexiones de red protegidas y permiten que las notificaciones se muestren al usuario cuando se bloquee la recepción de conexiones entrantes en un programa. Permite la respuesta de unidifusión al tráfico de red de difusión o multidifusión y especifica la configuración de registro para la solución de problemas.

Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow -NotifyOnListen True -AllowUnicastResponseToMulticast True -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

Deshabilitar firewall de Windows

Microsoft recomienda que no deshabilite Firewall de Windows porque pierde otras ventajas proporcionadas por el servicio, como la capacidad de usar reglas de seguridad de conexión de protocolo de Internet (IPsec), protección de red frente a ataques que emplean huellas digitales de red, protección del servicio de Windows y filtros de tiempo de arranque. La deshabilitación del Firewall de Windows también puede causar problemas, como:

  • El menú Inicio puede dejar de funcionar
  • Las aplicaciones modernas no se pueden instalar ni actualizar
  • Se produce un error en la activación de Windows a través del teléfono
  • Incompatibilidades de aplicaciones o sistemas operativos que dependen del Firewall de Windows

Microsoft recomienda deshabilitar Firewall de Windows solo al instalar un firewall que no sea de Microsoft y restablecer firewall de Windows a valores predeterminados cuando el software que no es de Microsoft está deshabilitado o quitado. Si se requiere deshabilitar Firewall de Windows, no lo deshabilite deteniendo el servicio Firewall de Windows (en el complemento Servicios , el nombre para mostrar es Firewall de Windows y el nombre del servicio es MpsSvc). Microsoft no admite la detención del servicio Firewall de Windows. El software de firewall que no es de Microsoft puede deshabilitar mediante programación solo las partes de Firewall de Windows que deben deshabilitarse por compatibilidad. No debe deshabilitar el firewall usted mismo para este propósito. El método adecuado para deshabilitar el Firewall de Windows es deshabilitar los perfiles de firewall de Windows y dejar el servicio en ejecución. Use el procedimiento siguiente para desactivar el firewall o deshabilitar la configuración de directiva de grupo Configuración del equipo|Plantillas administrativas|Red|Connections de red|Firewall de Windows|Dominio Prolfile|Firewall de Windows: proteja todas las conexiones de red. Para obtener más información, vea Guía de implementación de Firewall de Windows. En el ejemplo siguiente se deshabilita Firewall de Windows para todos los perfiles.

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

Implementación de reglas de firewall básicas

En esta sección se proporcionan ejemplos de scriptlet para crear, modificar y eliminar reglas de firewall.

Creación de reglas de firewall

Agregar una regla de firewall en Windows PowerShell tiene un aspecto muy similar al de Netsh, pero los parámetros y valores se especifican de forma diferente. Este es un ejemplo de cómo permitir que la aplicación Telnet escuche en la red. Esta regla de firewall se limita a la subred local mediante una palabra clave en lugar de una dirección IP. Al igual que en Netsh, la regla se crea en el dispositivo local y se hace efectiva inmediatamente.

New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow

En el scriptlet siguiente se muestra cómo agregar una regla de firewall básica que bloquea el tráfico saliente de una aplicación específica y un puerto local a un objeto de directiva de grupo (GPO) en Active Directory. En Windows PowerShell, el almacén de directivas se especifica como un parámetro dentro del cmdlet New-NetFirewall. En Netsh, primero debe especificar el GPO que deben modificar los comandos de una sesión de Netsh. Los comandos especificados se ejecutan en el contenido del GPO y la ejecución permanece en vigor hasta que finaliza la sesión de Netsh o hasta que se ejecuta otro comando set store. Aquí, domain.contoso.com es el nombre del Servicios de dominio de Active Directory (AD DS) y gpo_name es el nombre del GPO que desea modificar. Las comillas son necesarias si hay espacios en el nombre del 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

Almacenamiento en caché de GPO

Para reducir la carga en los controladores de dominio ocupados, Windows PowerShell permite cargar un GPO en la sesión local, realizar todos los cambios en esa sesión y, a continuación, guardarlo de nuevo de nuevo una vez. El comando siguiente realiza las mismas acciones que el ejemplo anterior (agregando una regla Telnet a un GPO), pero lo hacemos aplicando el almacenamiento en caché de GPO en PowerShell. No se admite el cambio del GPO al cargarlo en la sesión local y usar el parámetro -GPOSession en 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 no procesa por lotes los cambios individuales, carga y guarda todo el GPO a la vez. Por lo tanto, si otros administradores realizan otros cambios o en otra ventana de Windows PowerShell, guardar el GPO sobrescribe esos cambios.

Modificación de una regla de firewall existente

Cuando se crea una regla, Netsh y Windows PowerShell permiten cambiar las propiedades de regla y la influencia, pero la regla mantiene su identificador único (en Windows PowerShell, este identificador se especifica con el parámetro -Name). Por ejemplo, podría tener una regla Permitir web 80 que habilita el puerto TCP 80 para el tráfico entrante no solicitado. Puede cambiar la regla para que coincida con una dirección IP remota diferente de un servidor web cuyo tráfico se permitirá especificando el nombre legible y localizado de la regla.

Set-NetFirewallRule -DisplayName "Allow Web 80" -RemoteAddress 192.168.0.2

Netsh requiere que proporcione el nombre de la regla para que se cambie y no tenemos una forma alternativa de obtener la regla de firewall. En Windows PowerShell, puede consultar la regla mediante sus propiedades conocidas. Al ejecutar Get-NetFirewallRule, es posible que observe que no aparecen condiciones comunes como direcciones y puertos. Estas condiciones se representan en objetos independientes denominados Filtros. Como se muestra antes, puede establecer todas las condiciones en New-NetFirewallRule y Set-NetFirewallRule. Si desea consultar reglas de firewall basadas en estos campos (puertos, direcciones, seguridad, interfaces, servicios), tendrá que obtener los propios objetos de filtro. Puede cambiar el punto de conexión remoto de la regla Permitir web 80 (como se ha hecho anteriormente) mediante objetos de filtro. Con Windows PowerShell, se consulta por puerto mediante el filtro de puerto y, a continuación, suponiendo que existen otras reglas que afectan al puerto local, se compilan con más consultas hasta que se recupera la regla deseada. En el ejemplo siguiente, se supone que la consulta devuelve una sola regla de firewall, que luego se canaliza al Set-NetFirewallRule cmdlet utilizando la capacidad de 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

También puede consultar reglas con el carácter comodín. En el ejemplo siguiente se devuelve una matriz de reglas de firewall asociadas a un programa determinado. Los elementos de la matriz se pueden modificar en cmdlets posteriores Set-NetFirewallRule .

Get-NetFirewallApplicationFilter -Program "*svchost*" | Get-NetFirewallRule

Se pueden modificar simultáneamente varias reglas de un grupo cuando se especifica el nombre del grupo asociado en un comando Set. Puede agregar reglas de firewall a grupos de administración especificados para administrar varias reglas que comparten las mismas influencias. En el ejemplo siguiente, agregamos reglas de firewall Telnet entrantes y salientes al grupo Administración telnet. En Windows PowerShell, se especifica la pertenencia a grupos cuando se crean las reglas por primera vez, por lo que se vuelven a crear las reglas de ejemplo anteriores. No es posible agregar reglas a un grupo de reglas personalizado en 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"

Si el grupo no se especifica en el momento de la creación de la regla, la regla se puede agregar al grupo de reglas mediante la notación de puntos en Windows PowerShell. No se puede especificar el grupo mediante Set-NetFirewallRule , ya que el comando permite realizar consultas por grupo de reglas.

$rule = Get-NetFirewallRule -DisplayName "Allow Inbound Telnet"
$rule.Group = "Telnet Management"
$rule | Set-NetFirewallRule

Con la ayuda del Set comando , si se especifica el nombre del grupo de reglas, la pertenencia al grupo no se modifica, sino que todas las reglas del grupo reciben las mismas modificaciones indicadas por los parámetros especificados. El siguiente scriptlet habilita todas las reglas de un grupo predefinido que contiene la administración remota que influye en las reglas de firewall.

Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True

También hay un cmdlet independiente Enable-NetFirewallRule para habilitar reglas por grupo o por otras propiedades de la regla.

Enable-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Verbose

Eliminación de una regla de firewall

Los objetos rule se pueden deshabilitar para que ya no estén activos. En Windows PowerShell, el cmdlet Disable-NetFirewallRule dejará la regla en el sistema, pero la colocará en un estado deshabilitado para que la regla ya no se aplique y afecte al tráfico. Enable-NetFirewallRule puede volver a habilitar una regla de firewall deshabilitada. Este cmdlet es diferente de Remove-NetFirewallRule, que quita permanentemente la definición de regla del dispositivo. El siguiente cmdlet elimina la regla de firewall existente especificada del almacén de directivas local.

Remove-NetFirewallRule -DisplayName "Allow Web 80"

Al igual que con otros cmdlets, también puede consultar las reglas que se van a quitar. Aquí, todas las reglas de firewall de bloqueo se eliminan del dispositivo.

Remove-NetFirewallRule -Action Block

Es posible que sea más seguro consultar las reglas con el comando Get y guardarlo en una variable, observar las reglas que se verán afectadas y, a continuación, canalizarlas al comando Remove , tal como hicimos para los comandos Set . En el ejemplo siguiente se muestra cómo puede ver todas las reglas de firewall de bloqueo y, a continuación, eliminar las cuatro primeras reglas.

$x = Get-NetFirewallRule -Action Block
$x
$x[0-3] | Remove-NetFirewallRule

Administrar de forma remota

La administración remota mediante WinRM está habilitada de forma predeterminada. Los cmdlets que admiten el parámetro CimSession usan WinRM y se pueden administrar de forma remota de forma predeterminada. En el ejemplo siguiente se devuelven todas las reglas de firewall del almacén persistente en un dispositivo denominado RemoteDevice.

Get-NetFirewallRule -CimSession RemoteDevice

Podemos realizar cualquier modificación o ver reglas en dispositivos remotos mediante el parámetro -CimSession . Aquí se quita una regla de firewall específica de un dispositivo remoto.

$RemoteSession = New-CimSession -ComputerName RemoteDevice
Remove-NetFirewallRule -DisplayName "AllowWeb80" -CimSession $RemoteSession -Confirm

Implementación de la configuración básica de reglas de IPsec

Una directiva de seguridad de protocolo de Internet (IPsec) consta de reglas que determinan el comportamiento de IPsec. IPsec admite la autenticación del mismo nivel de red, la autenticación de origen de datos, la integridad de los datos, la confidencialidad de los datos (cifrado) y la protección de reproducción. Windows PowerShell puede crear directivas IPsec eficaces y complejas, como en Netsh y la consola de Firewall de Windows. Sin embargo, dado que Windows PowerShell se basa en objetos en lugar de en token de cadena, la configuración en Windows PowerShell ofrece mayor control y flexibilidad. En Netsh, la autenticación y los conjuntos criptográficos se especificaron como una lista de tokens separados por comas en un formato específico. En Windows PowerShell, en lugar de usar la configuración predeterminada, primero crea los objetos de propuesta criptográfica o autenticación deseados y los agrupa en listas en el orden que prefiera. A continuación, cree una o varias reglas de IPsec que hagan referencia a estos conjuntos. La ventaja de este modelo es que el acceso mediante programación a la información de las reglas es mucho más fácil. Consulte las secciones siguientes para ver ejemplos de aclaración. modelo de objetos para crear una sola regla ipsec.

Creación de reglas de IPsec

El siguiente cmdlet crea una regla básica de modo de transporte IPsec en un objeto directiva de grupo. Una regla IPsec es fácil de crear; todo lo que se requiere es el nombre para mostrar y las propiedades restantes usan valores predeterminados. El tráfico entrante se autentica y la integridad se comprueba mediante el modo rápido predeterminado y la configuración del modo principal. Esta configuración predeterminada se puede encontrar en la consola en Personalizar valores predeterminados de IPsec.

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -PolicyStore domain.contoso.com\gpo_name

Adición de métodos de autenticación personalizados a una regla IPsec

Si desea crear un conjunto personalizado de propuestas de modo rápido que incluya AH y ESP en un objeto de regla IPsec, cree los objetos asociados por separado y vincule sus asociaciones. Para obtener más información sobre los métodos de autenticación, consulte Elección del protocolo IPsec. A continuación, puede usar las directivas de modo rápido personalizadas recién creadas al crear reglas de IPsec. El objeto de conjunto de criptografía está vinculado a un objeto de regla IPsec. crypto set object. En este ejemplo, se basa en la regla IPsec creada anteriormente especificando un conjunto de cifrado de modo rápido personalizado. La regla IPsec final requiere que el método de criptografía especificado autentique el tráfico saliente.

$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

Reglas de transporte de IPsec IKEv2

Es posible que una red corporativa necesite proteger las comunicaciones con otra agencia. Sin embargo, detecta que la agencia ejecuta sistemas operativos que no son de Windows y requiere el uso del estándar Internet Key Exchange Versión 2 (IKEv2). Puede aplicar funcionalidades IKEv2 en Windows Server 2012 especificando IKEv2 como módulo clave en una regla IPsec. Esta especificación de funcionalidad solo se puede realizar mediante la autenticación de certificados de equipo y no se puede usar con la autenticación de fase 2.

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -Phase1AuthSet MyCertAuthSet -KeyModule IKEv2 -RemoteAddress $nonWindowsGateway

Para obtener más información sobre IKEv2, incluidos los escenarios, consulte Protección de IPsec de un extremo a otro Connections mediante IKEv2.

Copia de una regla IPsec de una directiva a otra

Las reglas de firewall e IPsec con las mismas propiedades de regla se pueden duplicar para simplificar la tarea de volver a crearlas en distintos almacenes de directivas. Para copiar la regla creada anteriormente de un almacén de directivas a otro, los objetos asociados también se deben copiar por separado. No es necesario copiar los filtros de firewall asociados. Puede consultar las reglas que se van a copiar de la misma manera que otros cmdlets. Copiar reglas individuales es una tarea que no es posible a través de la interfaz de Netsh. A continuación se muestra cómo puede hacerlo con 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

Control de errores de Windows PowerShell

Para controlar los errores en los scripts de Windows PowerShell, puede usar el parámetro -ErrorAction. Este parámetro es especialmente útil con los cmdlets Remove . Si desea quitar una regla determinada, observará que se produce un error si no se encuentra la regla. Cuando se quitan las reglas, si la regla aún no está allí, es aceptable omitir ese error. En este caso, puede hacer lo siguiente para suprimir los errores de "regla no encontrada" durante la operación de eliminación.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98" -ErrorAction SilentlyContinue

El uso de caracteres comodín también puede suprimir errores, pero podrían coincidir con las reglas que no tenía previsto quitar. Estos caracteres comodín pueden ser un acceso directo útil, pero solo se deben usar si sabe que no hay reglas adicionales que se eliminarán accidentalmente. Por lo tanto, el siguiente cmdlet también quitará la regla, suprimiendo los errores "no encontrados".

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*"

Cuando se usan caracteres comodín, si desea comprobar el conjunto de reglas coincidentes, puede usar el parámetro -WhatIf .

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -WhatIf

Si solo desea eliminar algunas de las reglas coincidentes, puede usar el parámetro -Confirm para obtener un mensaje de confirmación regla por regla.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Confirm

También puede realizar toda la operación, mostrando el nombre de cada regla a medida que se realiza la operación.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Verbose

Monitor

Los siguientes comandos de Windows PowerShell son útiles en el ciclo de actualización de una fase de implementación. Para permitir ver todas las reglas de IPsec en un almacén determinado, puede usar los siguientes comandos. En Netsh, este comando no muestra reglas donde profile=domain,public o profile=domain,private. Solo muestra las reglas que tienen el dominio de entrada única que se incluye en la regla. En los siguientes ejemplos de comandos se mostrarán las reglas de IPsec en todos los perfiles.

Show-NetIPsecRule -PolicyStore ActiveStore

Puede supervisar las asociaciones de seguridad del modo principal para obtener información como qué elementos del mismo nivel están conectados actualmente al dispositivo y qué conjunto de protección se usa para formar las asociaciones de seguridad. Use el siguiente cmdlet para ver las reglas de modo principal existentes y sus asociaciones de seguridad:

Get-NetIPsecMainModeSA

Búsqueda del GPO de origen de una regla

Para ver las propiedades de una regla o grupo de reglas determinados, consulte la regla. Cuando una consulta devuelve campos especificados como NotConfigured, puede determinar de qué almacén de directivas se origina una regla. Para los objetos que proceden de un GPO (el parámetro -PolicyStoreSourceType se especifica como GroupPolicy en el comando Show ), si se pasa -TracePolicyStore , se encuentra el nombre del GPO y se devuelve en el campo PolicyStoreSource .

Get-NetIPsecRule -DisplayName "Require Inbound Authentication" -TracePolicyStore

Es importante tener en cuenta que los orígenes revelados no contienen un nombre de dominio.

Implementación de una directiva básica de aislamiento de dominio

IPsec se puede usar para aislar miembros de dominio de miembros que no son de dominio. El aislamiento de dominio usa la autenticación IPsec para requerir que los dispositivos unidos a un dominio establezcan positivamente las identidades de los dispositivos de comunicación para mejorar la seguridad de una organización. Se pueden usar una o varias características de IPsec para proteger el tráfico con un objeto de regla IPsec. Para implementar el aislamiento de dominio en la red, los dispositivos del dominio reciben reglas IPsec que bloquean el tráfico de red entrante no solicitado que no está protegido por IPsec. Aquí creamos una regla IPsec que requiere autenticación por parte de los miembros del dominio. Mediante esta autenticación, puede aislar los dispositivos unidos a un dominio de los dispositivos que no están unidos a un dominio. En los ejemplos siguientes, la autenticación Kerberos es necesaria para el tráfico entrante y se solicita para el tráfico saliente.

$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

Configuración del modo de túnel IPsec

El siguiente comando crea un túnel IPsec que enruta el tráfico desde una red privada (192.168.0.0/16) a través de una interfaz en el dispositivo local (1.1.1.1) conectada a una red pública a un segundo dispositivo a través de su interfaz pública (2.2.2.2) a otra red privada (192.157.0.0/16). Todo el tráfico a través del túnel se comprueba para la integridad mediante ESP/SHA1, y se cifra mediante 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

Implementación de reglas de firewall seguras con IPsec

En situaciones en las que solo se puede permitir el tráfico seguro a través del Firewall de Windows, se necesita una combinación de reglas de IPsec y firewall configuradas manualmente. Las reglas de firewall determinan el nivel de seguridad de los paquetes permitidos y las reglas IPsec subyacentes protegen el tráfico. Los escenarios se pueden realizar en Windows PowerShell y en Netsh, con muchas similitudes en la implementación.

Creación de una regla de firewall segura (permitir si es seguro)

La configuración de la regla de firewalls para permitir las conexiones si son seguras requiere que el tráfico correspondiente se autentique y proteja la integridad y, a continuación, se cifre opcionalmente mediante IPsec. En el ejemplo siguiente se crea una regla de firewall que requiere que se autentique el tráfico. El comando permite el tráfico de red Telnet entrante solo si la conexión desde el dispositivo remoto se autentica mediante una regla IPsec independiente.

New-NetFirewallRule -DisplayName "Allow Authenticated Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -Authentication Required -Action Allow

El siguiente comando crea una regla IPsec que requiere una primera autenticación (equipo) y, a continuación, intenta una segunda autenticación opcional (usuario). La creación de esta regla protege y permite el tráfico a través de los requisitos de regla de firewall para el 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

Aislar un servidor mediante el cifrado y la pertenencia a grupos

Para mejorar la seguridad de los dispositivos de una organización, puede implementar el aislamiento de dominio en el que los miembros del dominio están restringidos. Requieren autenticación cuando se comunican entre sí y rechazan las conexiones entrantes no autenticadas. Para mejorar la seguridad de los servidores con datos confidenciales, estos datos deben protegerse al permitir el acceso solo a un subconjunto de dispositivos dentro del dominio empresarial. IPsec puede proporcionar esta capa adicional de protección mediante el aislamiento del servidor. En el aislamiento del servidor, el acceso a datos confidenciales está restringido a los usuarios y dispositivos con necesidades empresariales legítimas, y los datos se cifran adicionalmente para evitar la interceptación.

Creación de una regla de firewall que requiera pertenencia a grupos y cifrado

Para implementar el aislamiento de servidor, aplicamos una regla de firewall que restringe el tráfico a los usuarios o dispositivos autorizados en la regla IPsec que exige la autenticación. La siguiente regla de firewall permite el tráfico telnet desde cuentas de usuario que son miembros de un grupo personalizado denominado "Autorizado para acceder al servidor". Además, este acceso se puede restringir en función del dispositivo, el usuario o ambos especificando los parámetros de restricción. Se crea una cadena de lenguaje de definición de descriptor de seguridad (SDDL) ampliando el identificador de seguridad (SID) de un usuario o grupo. Para obtener más información sobre cómo buscar el SID de un grupo, consulte Búsqueda del SID de una cuenta de grupo. La restricción del acceso a un grupo permite a las administraciones ampliar la compatibilidad con la autenticación segura a través del Firewall de Windows o las directivas de IPsec. En el ejemplo siguiente se muestra cómo crear una cadena SDDL que representa grupos de seguridad.

$user = new-object System.Security.Principal.NTAccount ("corp.contoso.com\Administrators")
$SIDofSecureUserGroup = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value
$secureUserGroup = "D:(A;;CC;;;$SIDofSecureUserGroup)"

Con el scriptlet anterior, también puede obtener la cadena SDDL para un grupo de equipos seguros, como se muestra aquí:

$secureMachineGroup = "D:(A;;CC;;;$SIDofSecureMachineGroup)"

Para obtener más información sobre cómo crear grupos de seguridad o cómo determinar la cadena SDDL, vea Trabajar con SID. Telnet es una aplicación que no proporciona cifrado. Esta aplicación puede enviar datos, como nombres y contraseñas, a través de la red. Los usuarios malintencionados pueden interceptar estos datos. Si un administrador desea permitir el uso de Telnet, pero proteger el tráfico, se puede crear una regla de firewall que requiera cifrado IPsec. Esta regla de firewall es necesaria para que el administrador pueda estar seguro de que, cuando se usa esta aplicación, todo el tráfico enviado o recibido por este puerto está cifrado. Si IPsec no puede autorizar la conexión, no se permite ningún tráfico desde esta aplicación. En este ejemplo, solo se permite el tráfico Telnet entrante autenticado y cifrado desde un grupo de usuarios seguro especificado mediante la creación de la siguiente regla 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

Aplicación de seguridad de puntos de conexión

En el ejemplo anterior se mostró la seguridad de un extremo a otro para una aplicación determinada. En situaciones en las que se requiere seguridad de punto de conexión para muchas aplicaciones, tener una regla de firewall por aplicación puede ser complicado y difícil de administrar. La autorización puede invalidar la base por regla y realizarse en la capa IPsec. En este ejemplo, establecemos la configuración global de IPsec para permitir que solo el tráfico del modo de transporte proceda de un grupo de usuarios autorizados con el siguiente cmdlet. Consulte los ejemplos anteriores para trabajar con grupos de seguridad.

Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup

Creación de reglas de firewall que permitan el tráfico de red protegido por IPsec (omisión autenticada)

La omisión autenticada permite que el tráfico de un dispositivo o usuario de confianza especificado invalide las reglas de bloque de firewall. Esta invalidación resulta útil cuando un administrador quiere usar servidores de examen para supervisar y actualizar dispositivos sin necesidad de usar excepciones de nivel de puerto. Para obtener más información, consulte Habilitación de la omisión de firewall autenticada. En este ejemplo, se supone que existe una regla de firewall de bloqueo. Este ejemplo permite que cualquier tráfico de red en cualquier puerto de cualquier dirección IP invalide la regla de bloque, si el tráfico se autentica como originado desde un dispositivo o una cuenta de usuario que es miembro del dispositivo o grupo de seguridad de usuario especificado.

New-NetFirewallRule -DisplayName "Inbound Secure Bypass Rule" -Direction Inbound -Authentication Required -OverrideBlockRules $true -RemoteMachine $secureMachineGroup -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\domain_isolation