Cómo gestionar los puertos SQL en tu servidor Windows

Juan Ignacio Oller Aznar

Descubre cómo gestionar los puertos SQL en tu servidor Windows para poder desplegar un SGBD SQL Server de manera segura.

 

En ocasiones, podemos necesitar desplegar Sistemas Gestores de Bases de Datos (SGBD) de muy diversa índole, en función del proyecto en el que estemos involucrados. De todos estos SGBD, Microsoft SQL Server es uno de los más ampliamente usados, por su sencillez de uso, buen rendimiento y por contar con el respaldo de Microsoft, que siempre debería darnos garantías de contar con un producto bien acabado y un soporte eficiente.

 

A lo largo del presente tutorial, revisaremos los puertos que pueden usarse en una implementación de SQL Server, así como el proceso de configuración, tanto en la parte del sistema operativo, como en la parte de la infraestructura de Jotelulu.

 

NOTA:Las configuraciones aquí expuestas se han realizado sobre un Windows Server 2022 con un SQL Server 2019, pero no deberían tener demasiadas diferencias con versiones previas de Windows Server 2016 o Windows Server 2019.

 

La primera parte a desarrollar es un listado de puertos usados por Microsoft SQL Server según la función que vaya a tener la base de datos montada.

 

 

¿Cómo gestionar los puertos SQL Server en tu servidor Windows?

 

 

Pre-requisitos o pre-configuración

 

Para completar de forma satisfactoria este tutorial y poder gestionar los puertos sql en tu servidor Windows se necesitará:

  • Tener un Servidor con Windows Server.
  • Tener un SQL Server instalado en el servidor.
 

Paso 0. SQL Puertos: Listados de puertos según propósito

 

A continuación, vamos a exponer algunos de los puertos que podemos necesitar abrir, siempre en función del rol que se vaya a explotar en este servidor de Base de Datos SQL Server.

 

Puertos utilizados por el motor de base de datos

Los puertos más típicos usados por SQL Server y el servicio del motor de base de datos asociados a la base de datos son: 1433, 1434, 4022, 135, de tipo TCP y el 1434 UDP. A continuación, explicamos para qué sirve cada uno de ellos:

  • Puerto 1433/TCP: Instancia predeterminada ejecutada sobre TCP.
  • Puerto 1434/TCP: Puerto usado para la conexión de administración.
  • Puerto 4022/TCP: Broker de servicio de SQL Server.
  • Puerto 135/TCP: Usado por el depurador de Transact-SQL.
  • Puerto 1434/UDP: Usado por el servicio de explorador de SQL Server. Escucha conexiones entrantes.
  • Puerto 80/TCP: Instancia vía HTTP.
  • Puerto 443/TCP: Instancia vía HTTPS.
  • Puerto 5022/TCP: Usado por la duplicación de base de datos (Database Mirroring). Se suele coger este o el 7022/TCP.
  • Puerto 7022/TCP: Usado por la duplicación de base de datos (Database Mirroring). Se suele coger este o el 5022/TCP.
  • Puerto 21/TCP: Usado por la replicación mediante FTP.
  • Puerto 445/TCP: Usado por los fileshares.
  • Puerto 137/UDP: Usado por los fileshares.
  • Puerto 138/UDP: Usado por los fileshares.
 

Algunos puertos no es necesario abrirlos, a menos que se esté usando la funcionalidad asociada. Por ejemplo, no será necesario que abramos 5022/TCP o 7022/TCP si no duplicamos entre bases de datos.

 

También habrá que tener en cuenta la posibilidad de creación de conexiones a través de puertos dinámicos.

 

Puertos utilizados por Analysis Services

Los puertos más típicos usados por SQL Server y el servicio de análisis de datos (Analysis Services)

  • Puerto 2383/TCP: Usado por Analysis Services para la instancia predeterminada.
  • Puerto 2382/TCP: Usado por el servicio de navegador de SQL Server.
  • Puerto 80/TCP: Usado cuando se configura Analysis Services a través de IIS/HTTP.
  • Puerto 443/TCP: Usado cuando se configura Analysis Services a través de IIS/HTTPS.

 

Puertos utilizados por Reporting Services

Los puertos más típicos usados por SQL Server y el servicio de Reporting Services:

  • Puerto 80/TCP: Usado por los servicios web de Reporting Services.
  • Puerto 443/TCP: Usado por los servicios web seguros de Reporting Services.

 

Puertos utilizados por Integration Services

Los puertos más típicos usados por SQL Server y el servicio de Integration Services:

  • Puerto 135/TCP: Usado por Remote Procedure Calls.

 

Otros puertos y servicios de SQL Server:

 

Por último, vamos a ver el listado de los puertos usados por otros servicios y propósitos dentro de SQL Server.

  • Puerto 135/TCP: Usado por WMI (Windows Management Instrumentation) y MS DTC (Microsoft Distributed Transaction Coordinator).
  • Puerto 1432/UDP: Usado por el botón de exploración en Management Studio para conectarse al servicio de explorador de SQL Server.
  • Puerto 500/UDP: Usado por el tráfico IPSec.
  • Puerto 4500/UDP: Usado por el tráfico IPSec.
 

NOTA: Algunos de estos puertos pueden ser modificados y cambiados por otros puertos con el fin de evitar escaneos de puertos y otras técnicas similares usadas por los atacantes.

 

NOTA:Para obtener información detallada sobre los puertos usados por los distintos servicios de Microsoft SQL Server se puede acceder a la documentación de Microsoft.

Paso 1. SQL Puertos: Configuración de los puertos en el Firewall de Windows

 

Lo primero que debemos tener en cuenta es la apertura de puertos en el Firewall de Windows, y por supuesto, debemos de pensar que el deshabilitar el firewall de Windows no es una solución válida a menos que se esté en un entorno de laboratorio, ya que debemos intentar tener las infraestructuras de servidores lo más seguras posibles.

 

Como siempre cuando trabajamos en informática, podemos hacer las tareas de distintas maneras, y el firewall de Windows no es la excepción, pudiéndose optar, por ejemplo, por hacerlo desde el GUI (entorno gráfico) o desde la línea de comandos mediante PowerShell.

 

En este caso vamos a optar por hacerlo desde el entorno gráfico por ser la forma más sencilla para los que no han hecho nunca esta tarea, dejando para un punto posterior la apertura de puertos del firewall mediante comandos de PowerShell.

 

Para empezar a trabajar deberemos acceder a la consola de administración, pudiendo acceder de distintas maneras, pero en este caso lo haremos mediante la barra de búsquedas de Windows. Se debe hacer clic sobre la barra de búsquedas y escribir “Firewall” (1), haciendo clic en “Firewall de Windows Defender” (2).

Lanzamos el Firewall de Windows Defender desde la barra de búsquedas

Lanzamos el Firewall de Windows Defender desde la barra de búsquedas

Esto hace que se muestre la ventana de “Firewall de Windows Defender”, donde se deberá ir a la parte lateral izquierda haciendo clic en “Configuración avanzada” (3).

Lanzamos la configuración avanzada del firewall de Windows Defender

Lanzamos la configuración avanzada del firewall de Windows Defender

Una vez dentro de la consola de “Windows Defender Firewall con seguridad avanzada” nos interesa tocar las reglas de entrada, ya que son los puertos que estarán bloqueados. Para ello debemos ir a la parte lateral izquierda, y en la parte superior hacer clic en “Reglas de entrada” (4) y una vez dentro de esta sección se debe ir a “Acciones > Reglas de entrada” en el lateral derecho y hacer clic en “Nueva regla” (5).

Creamos una nueva regla dentro de las reglas de entrada del firewall de Windows

Creamos una nueva regla dentro de las reglas de entrada del firewall de Windows

Se debe seleccionar “Puerto” (6) como nueva regla a crear y a continuación se debe hacer clic en “Siguiente” (7).

Seleccionamos el tipo de regla puerto para la nueva regla que estamos creando

Seleccionamos el tipo de regla puerto para la nueva regla que estamos creando

En la sección de “Protocolos y puertos” debemos seleccionar el tipo de puerto (8), eligiendo si es de tipo TCP o UDP, algo que viene definido por el propio puerto y que podremos ver en las especificaciones del mismo cuando leamos los requisitos de lo que queremos abrir.

 

A continuación, se debe seleccionar si se quiere abrir todos los puertos de este tipo de protocolo, cosa que está completamente desaconsejada, recomendando en nuestro caso seleccionar la opción “Puertos locales específicos” (9), poniendo a continuación el número o los números de puertos a abrir (10).

 

NOTA: Si se quiere abrir más de un puerto, se deberán escribir separados por comas “,”, a menos que sean puertos seguidos, en cuyo caso, se podrán poner el puerto de inicio y el de finalización, separados por “-“. Ejemplos: Para abrir los puertos 80 y 443 podremos escribir “80,443” y si queremos abrir los puertos 80 a 90, deberemos escribir 80-90.

 

Una vez hecho esto deberemos hacer clic en “Siguiente” (11).

Seleccionamos el tipo de protocolo y el número de puerto que queremos abrir

Seleccionamos el tipo de protocolo y el número de puerto que queremos abrir

En la sección de “Acción” se debe hacer clic en “Permitir la conexión” (12) para que las conexiones a través de este puerto sean posibles. Tras esto se debe hacer clic en “Siguiente” (13).

Seleccionamos la opción de permitir la conexión a través del puerto configurado

Seleccionamos la opción de permitir la conexión a través del puerto configurado

En este punto se debe seleccionar cuándo entra en funcionamiento la regla (14) que estamos creando, más allá de cuando sea de entrada, o sea, desde que orígenes se permitirá la conexión.

 

Existen tres perfiles de red a seleccionar, quedando a discreción del lector cuales dejar activos:

  • Dominio: Para equipos conectados a domínios corporativos.
  • Privado: Para equipos conectados a redes privadas tanto empresariales o domésticas.
  • Público: Para equipos conectados a redes públicas.

 

Una vez hecho esto, se deberá hacer clic en “Siguiente” (15).

Seleccionamos a que ámbitos de red se le aplicará la regla que hemos creado

Seleccionamos a que ámbitos de red se le aplicará la regla que hemos creado

El último paso de la creación de reglas es asignar un nombre (16) y una descripción (17). Esto nos servirá para identificar las reglas y tenerlas bien ordenadas, sobre todo en el caso de entornos en los que se tienen que abrir muchos puertos.

 

Una vez cumplimentado se deberá hacer clic en “Finalizar” (18).

Damos nombre y descripción a la nueva regla para su fácil identificación entre el resto de reglas

Damos nombre y descripción a la nueva regla para su fácil identificación entre el resto de reglas

Finalmente, se deberá comprobar que la nueva regla está en la lista de reglas del firewall (19).

Comprobamos que la nueva regla está disponible dentro del firewall

Comprobamos que la nueva regla está disponible dentro del firewall

Esta operativa se tendrá que repetir para los puertos que se quiera asignar, a menos que se hayan creado masivamente en una sola regla, tal como se ha descrito en la nota un poco más arriba.

 

Por añadir un punto adicional para aquellos que prefieran hacer estas gestiones desde línea de comandos, comentaremos como podemos abrir los puertos con PowerShell.

 

El proceso es sencillo y basta con saber el puerto que se quiere abrir, si es de entrada o salida (normalmente entrada) y si es un puerto UDP o TCP.

 

Con estos datos podremos lanzar el comando de PowerShell con la siguiente estructura:

New-NetFirewallRule -DisplayName "NAME" -Direction Inbound -LocalPort PORT -Protocol PROTOCOL -Action Allow

 

Donde:

  • DisplayName "NAME": Es una etiqueta indicativa para identificar la regla entre el resto de reglas del firwall. No es obligatoria, pero si que es una buena práctica para identificar las reglas a posteriori.
  • Direction Inbound: La dirección en la que se aplica la regla. En este caso se aplica al trafico entrante por lo que es “Inbound”.
  • LocalPort PORT: Se debe poner el número de puerto filtrado, sustituyendo PORT por dicho número.
  • Protocol PROTOCOL: Para especificar si se trata de um puerto TCP o UDP.
  • Action Allow: Acción que debe tomar el firewall, en este caso debe permitir el acceso por lo que será “Allow”.
 
Creamos una nueva regla de entrada para los servicios de SQL Server en el firewall de Jotelulu

Creamos una nueva regla de entrada para los servicios de SQL Server en el firewall de Jotelulu

En la nueva ventana, se deben configurar los siguientes datos de conexión:

  • Seleccionar red: (21) Se deberá seleccionar la red a través de la que se realizará la conexión. Por lo general será la que viene configurada.
  • IP o Network: (22) La IP o red desde la que se puede hacer la conexión. Por defecto está como “Cualquier IP” pero se recomienda limitarlo, poniendo la IP o rango de IP de la empresa del cliente, ya que estas conexiones no se van a realizar desde ningún otro lugar, y así minimizamos la superficie de ataque.
  • Protocolo y Puerto público: (23) Es el puerto que queremos que se use para conectar, está compuesto de Protocolo (TCP o UDP) en este caso TCP y el número de puerto.
  • Public IP: (24) La IP pública del servidor a la que se conectará a través de esta regla.
  • Private (IP): (25) La IP privada del servidor a la que se conectará a través de esta regla.
  • Puerto privado: (26) Es el puerto que queremos que se use para conectar, en la pata interna, en este caso solo se necesita el número de puerto.
 

Una vez configurado todo, se tendrá que hacer clic en “Continuar” (27) para que se cree la regla.

Configuramos las opciones de la regla de entrada del firewall de Jotelulu para los puertos de SQL Server

Configuramos las opciones de la regla de entrada del firewall de Jotelulu para los puertos de SQL Server

Repetimos este proceso hasta añadir todas las reglas de firewall que necesitemos, y por último, comprobamos que todas las reglas se han dado de alta correctamente.

 

Conclusiones de cómo gestionar los puertos SQL en tu servidor Windows

 

Asegurar la infraestructura de nuestra organización tiene que ser una de las premisas básicas con las que pensamos nuestra infraestructura. De esta manera, conseguimos evitar la exposición de nuestros SGBD a Internet o a partes no seguras de nuestra red y por tanto cualquier intento de acceso indebido desde la red es generalmente una buena práctica.

 

Este tutorial describe el proceso para gestionar los puertos SQL en tu servidor Windows logrando de esta manera un aseguramiento de los servidores que corren este servicio.

 

Esperamos haberte ayudado con este tutorial y con los listados de puertos que exponemos en el Paso 0. Si aun así te quedaran dudas o quisieras comentar algún aspecto técnico puedes escribirnos a plataforma@jotelulu.com o contactar con el número de teléfono 91 133 37 10, estaremos encantados de ayudarte.

 

Gracias.

Categorías: Servidores

ServidoresBases de datosSQL ServerPuertos