Cerrar
InicioCertificadosWindows Defender Firewall: Reglas de Seguridad de Conexión

Windows Defender Firewall: Reglas de Seguridad de Conexión

Estoy seguro que todos los administradores de redes Microsoft conocen el Firewall de Windows, pero son muchos los que le sacan todo el partido que se le puede sacar e incluso, algunos lo desactiva por defecto. Hoy me gustaría comentaros algo que os puede dar otra visión respecto al Firewall de Windows, como son las Reglas de Seguridad de Conexión (IPSec).

Es un pequeño artículo donde podemos ir un paso más allá que abrir o bloquear aplicaciones/puertos, lo que haremos será autenticar y cifrar el tráfico de red en función de las necesidades de nuestro entorno. Aquí os dejo, como casi siempre, un pequeño esquema para guiarnos por el artículo de hoy:

Como he comentado al principio, muchos  o casi todos los administradores de redes Microsoft conocen Windows Defender Firewall, pero son muy pocos los que confían en su eficacia y lo deshabilitan por defecto. Lo que quiero mostraros es como poder definir, establecer y aplicar ciertas medidas de seguridad las cuales podréis aplicar a vuestros equipos desplegándolas via GPO.

Voy a intentar no hacerlo muy extenso, por lo que me voy a centrar en mostrar como definir los aspectos básicos del firewall para que luego vosotros  podáis profundizar mas en sus configuraciones.

Como siempre, todos los cambios los haremos mediante Directivas de Grupo, lo que nos permitirá automatizar la aplicación de los cambios en los equipos de nuestro dominio. Lo primero que haremos será crear una GPO donde vamos establecer el estado del firewall a Activo, para que nadie pueda realizar cambios en su configuración.

El proceso es muy simple, creamos y editamos nuestra GPO y nos vamos a la sección de Computer – Windows Settings – Security Settings  y pulsamos con el botón secundario del ratón sobre Windows Defender Firewall with Avanced Security y nos vamos a sus propiedades. A continuación tenemos varias pestañas una por perfil de red de los equipos y los establecemos a On  y a Block (Default) en Inbound connections:

Por defecto, ahora estamos bloqueando todas las conexiones remotas en todos los perfiles de red,  por lo que desde la de red de dominio tampoco podrías conectarnos remotamente a los equipos, yo para ello habilito los siguientes servicios únicamente para el perfil de dominio, bloqueando siempre las conexiones para el resto de perfiles.

Sin entrar en más detalles (ya os lo había comentado al principio que trataré de ser breve), voy a mostraros como podemos bloquear o permitir conexiones entrantes (las salientes tienen el mismo proceso de configuración pero invirtiendo el destino de la conexión) hacia nuestro equipo. Para ello, desde la misma directiva de grupo, podemos acceder a la sección del Firewall y en Inbound Rules pulsamos con el botón secundario del ratón y pulsamos en New Rule

La primera opción es elegir si queremos manejar una regla de conexión para un programa:

A nivel de puerto (TCP/UDP):

Microsoft cuenta ya con reglas de servicios predefinidos por sino estamos acostumbrados a trabajar con entornos de red, para ello  nos ofrece el listado de servicios a los cuales aplicar diferentes medidas de seguridad:

O bien tenemos la opción de reglas personalizadas para que podamos ir ajustando la regla a nuestro antojo, en este caso elegimos Custom (personalizada) y pulsamos en siguiente:

Nos preguntará si lo que queremos definir es el tráfico de cualquier aplicación (All Programs) o de una aplicación en concreto, elegimos que cualquier aplicación que tenga comunicación de red y pulsamos en siguiente:

Ahora debemos elegir el protocolo en cuestión, en este caso será TCP

En este ejemplo vamos a bloquear las conexiones RDP  salientes, por lo que en en la sección de Remote Port elegimos Specific Ports y escribimos el número de puerto del RDP: 3389 y pulsamos en Siguiente:

Nota: Si la regla fuese de salida (Outbound Rules) el puerto RDP tenemos que ponerlo en la sección de Remote Port, porque sería al puerto al que nos vamos a conectar:

Ahora, podemos definir que esta regla de aplique a cualquier conexión o bien cuando nos conectemos a destinos IP concretos. Aquí en función de tus necesidades tendrás que ajustar o no estos valores, en mi caso quiere bloquear todas las conexiones RPD salientes.

Ahora debemos elegir que hacer con la conexión:

  • Permitirla: se permite sin más control
  • Permitirla si es segura: se permitirá siempre  y cuando se negocie la seguridad (autenticación y/o cifrando) y sea exitosa
  • Bloquearla: no permitir la conexión bajo ningún concepto

En mi caso, elijo bloquear la conexión y pulsamos en Siguiente:

Por último, un paso super importante, a que perfil de red se aplica esta regla .. en mi caso elijo a todos porque quiero bloquear cualquier conexión entrante vía RDP hacia los equipos a los cuales se aplique esta directiva y pulsamos en siguiente:

Establecemos un nombre a la directiva y pulsamos en Finalizar para completar el proceso:

Ahora ya tenemos nuestra directiva de bloqueo de RDP desde cualquier perfil de red, como vemos es muy sencillo.

Como habéis visto, habilitar y permitir  o denegar conexiones de red a nivel de aplicación y/o puertos específicos es muy sencillo e intuitivo, creo que sobra comentar como podemos hacer otras miles de reglas porque se sobreentiende (sino es así, dejar vuestro comentario en este artículo). Pero hasta aquí, solo hemos permitido o denegado sin autenticación, como únicos filtros tenemos el perfil de red y las ubicaciones de las conexiones.

Con esto ya tenemos muchas cosas ganadas, pero si queremos darle un plus de seguridad a nuestro entorno vamos a querer aplicar una serie de mediadas que garanticen las conexiones siempre y cuando estén autenticadas (y cifradas), para ello vamos utilizar IPSec desde nuestro Firewall. Con ello, vamos a poder autenticar y cifrar el tráfico de red y sino es así, las conexiones no se establecerán.

Para lograr esto, necesitamos:

Me voy a centrar únicamente en la GPO que configurará el Firewall, puesto que la GPO que despliega los certificados ya os he dejado un enlace a un artículo de MSFT y en este blog tenéis varios artículos hablando sobre ello

Dicho esto, lo primero que haré será configurar los parámetros para definir la regla por defecto para IPSec. Para esto, debemos crear y editar una nueva GPO y acceder a las propiedades del Firewall:

Nos vamos a la sección de IPSec Settings y pulsamos en Customize

Ahora definiremos los valores del intercambio de claves:

La protección de datos (modo rápido)

 

Y los métodos de autenticación, eligiendo un certificado de equipo firmado por la CA interna que seleccionemos (nuestra CA Privada), Kerberos y además, como autenticación secundaria será por usuario (la necesitaremos si queremos aplicar seguridad a nivel de usuario)

Estas configuraciones deben hacer con cierto cuidado, porque nos todas las versiones de Windows tienen el mismos soporte para las diferentes configuraciones, revisad este documento donde se explicar con más nivel de detalle: Securing End-to-End IPsec connections by using IKEv2

Estos son los valores por defecto que ya trae el sistema:

Default key exchange settings (main mode):

Key exchange algorithm: DH Group 2
Data integrity algorithm: SHA-1
Primary data encryption algorithm: AES-CBC 128
Secondary data encryption algorithm: 3DES
Key lifetime: 480 minutes/0 sessions

Default data integrity settings (quick mode):

Primary protocol: Encapsulating Security Payload (ESP)
Secondary protocol: Authentication Header (AH)
Data integrity algorithm: SHA-1
Key lifetime: 60 minutes/100,000 KB

Default data encryption settings (quick mode):

Primary protocol: ESP
Secondary protocol: ESP
Data integrity algorithm: SHA-1
Primary data encryption algorithm: AES-CBC 128
Secondary data encryption algorithm: 3DES
Key lifetime: 60 minutes/100,000 KB

Se ve claramente que está pensando en entornos heredados, pero tener cuidado con ajustar a niveles muy altos los diferentes protocolos porque tenemos que ser compatibles y tener un rendimiento razonable para que no se vaya penalizado el acceso a los diferentes servicios.

Una vez definidas las configuraciones globales a nivel de IPSec en el Firewall, pasaremos a configurar dos reglas de seguridad:

  • Para equipos: reglas de conexiones hacia hosts remotos
  • Para servidores: reglas de conexión donde ellos son los terminados del servicio o quienes tienen los servicios a los cuales nos vamos a conectar.

Yo ya tengo algunas reglas configuradas vía GPO (se ve el naming convention que tienen aplicado), pero veamos como podemos configurar algunas reglas de conexión de seguridad. Esto lo haremos desde la edición del Firewall desde la GPO, pulsamos con el botón secundario del ratón encima de la sección Connection Security Rules y pulsamos en New Rule…

Ya tenemos algunas opciones por defecto que nos pueden ayudar a definir reglas de conexión segura, pero vamos a ver como crear una regla personalizada, para ello seleccionamos Custom y pulsamos en Next (siguiente):

Lo mismo que en las reglas de entrada y salida de filtrado podemos definir cuando queremos aplicar estas reglas:

  • Endpoint1: local o remoto en función del punto de vista a quien se aplique la regla (tráfico de red)
  • Endpoint2: local o remoto en función del punto de vista a quien se aplique la regla (tráfico de red)

Ahora debemos especificar si queremos solicitar o requerir autenticación, en primera instancia es bueno que hasta que las GPO que vayamos configurando no se apliquen a todos los equipos, elijamos la primera opción que es la de Request Autheticacion For Inboud and Outbound Connections. Básicamente no forzar la autenticación, solicitarla y si se completa entonces se intentará. Esta configuración inicial nos vendrá bien aplicarla a los equipos que originan las conexiones, casi siempre hablamos de los equipos de clientes (usuarios y/o administardores):

Otro punto importante a definir, los métodos de autenticación. En mi caso dejaré Default, porque si os acordáis en la GPO habíamos definido los parámetros de Autenticación y Cifrado por defecto para los equipos.

Pero, si queremos aplicar nuevos conjuntos parámetros de autenticación y cifrado, pues simplemente podemos hacerlo eligiendo la opción Advanced y especificar los diferentes métodos de autenticación:

Una vez que hayamos establecido los métodos de autenticación, podemos definir si se aplica a todo el tráfico o solo a conexiones/servicios específicos (RDP, SMB, Remote Admin, etc..)

Aquí configuramos el puerto remoto para el RDP, por lo que esta regla se aplicará cuando los equipos que reciban esta GPO intenten conectarse remotamente vía RDP:

El perfil sobre el que vamos a definir esta regla:

En mi caso, solo quiero que autentique la conexión en conexiones de dominio:

Ahora especificamos un nombre a nuestra regla de conexión segura, aquí cada uno con su naming convention:

Nota: si la regla se aplicase desde punto de vista del host que recibe la conexión, el puerto se especificaría en el Endpoint1:

Una vez que se apliquen las GPO, si abrimos la consola local del Firewall (wf.msc), veremos las reglas y que no podemos deshabilitarlas o eliminarlas:

Si podemos ver sus parámetros, pero no editarlos:

En esta regla, he configurado la autenticación cuando nos conectemos vía RDP a equipos de una subred (Endpoint2) concreta:

Y si vemos las opciones del Firewall, vemos que también tenemos aplicada nuestra GPO donde habíamos establecido diferentes opciones:

Y aquí vemos las definiciones de IPSec:

Por “último”, tenemos una sección de supervisión, donde veremos las diferentes reglas de IPSec activas cuando se den las condiciones en base a las reglas establecidas. Mientras no iniciemos alguna conexión que coincida con alguna de las regla definidas no veremos nada:

Como hemos visto, la regla definida es para las conexiones RDP con la siguiente configuración:

  • Clientes: solicitan autenticación
  • Servidor: requiere autenticación (ver la siguiente captura)

Pero aquí os voy a mostrar como el cliente no tiene la conexión de seguridad aplicada y si la tiene el servidor, por lo que responde a PING sin problema pero la conexión RDP no se establece (recordar que en esta prueba el puesto cliente no tiene la GPO aplicada pero el servidor si y requiriendo autenticación).

Y si lanzamos una conexión SMB más de lo mismo, conecta sin problemas pero el RDP sigue sin funcionar y en la sección de supervisión no vemos nada en la negociación de IPSec. Además, si tiramos de Netstat para ver la conexión, vemos que no recibimos el ACK, solo tenemos un SYN_SENT pero no llega a cambiarse a ESTABLISHED para las conexiones RDP:

Si bien, ahora aplicamos la GPO a los puestos clientes y lanzamos nuevamente la conexión RDP, vemos que ya tenemos tráfico de red, nos solicita las credenciales de acceso y vemos que ya tenemos negociación de IPSec:

Y podemos ver las opciones de Main Mode:

Y Quick Mode:

Aquí os muestro diferentes reglas en más conexiones, incluso iniciando conexiones TELNET al puerto del servicio (RDP, Oracledb, etc…) simplemente para ver la conexión si se establece o no:

Conexión RDP: vemos las negociaciones IPSec y a nivel de conexión (netstat) la vemos ESTABLISHED:

Y aquí vemos conexiones al puerto de conexión de Oracle DB:

Contando siempre que, los servidores tiene reglas requiriendo autenticación y los clientes solicitándola, pero lo suyo es forzarlo en ambos extremos. Aunque, esta configuración debéis hacerlo cuando estéis 100% de que os funciona todo como esperáis.

Sé que en este artículo he tocado algunas cosas muy por encima, pero si las toco en profundidad se haría muuyyy largo. Aquí os dejo un resumen global:

  • Objetivo: definir reglas de seguridad para utilizar autenticación y cifrado para las conexiones de los equipos unidos al dominio
  • Requisitos:
    • Una entidad certificadora privada (pero podríamos utilizar Kerberos sin más)
    • GPO: definir varias GPO para aplicar diferentes reglas de entrada y salida en el firewall local de nuestros equipos. Además, aplicar diferentes reglas de conexión segura para tráficos específicos o completos.

En el siguiente artículo sobre el Firewall de Windows os hablaré de las conexiones autenticadas para usuarios o grupos del ADDS, lo que nos permitirá establecer conexiones o no en función de si estás autenticado a nivel de equipo y la sesión de usuario.

Insisto, sé que ha sido un artículo a muy alto nivel en cuanto a detalle, si alguien tiene dudas al respecto de esta configuración, por favor, dejar vuestros comentarios!!

Microsoft Azure: VPN
Microsoft Azure File
NO HAY COMENTARIOS

DEJA UN COMENTARIO

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This