Firewall Windows, abriendo puertos

Objetivos

 

  • ¿Que es un Firewall? COnceptos básicos
  • Porqué necesitamos un Firewall.
  • Abriendo puertos en Windows para acceder a servidores externos.
  •  

    Material requerido.

     

     personal computer Un PC con Windows, claro!!

     

    ¿Por qué necesitamos un firewall?

     

    Windows incluye, de serie, un Firewall activo que te impedirá acceder a tu Mosquitto desde fuera de tu PC, lo que le convertiría en un servidor muy pobre, por lo que necesitamos abrir el puerto 1880 en el Firewall y permitir acceso general. Pero quizás convenga empezar hablando de lo que es un Firewall y lo que no, porque es una palabra que se repite mucho en las pelis, pero no hay mucha gente que haya tocado uno y por eso, como siempre, conviene empezar por el principio, para que puedas entender lo que vamos a hacer a continuación.

    Las redes TCPIP se desarrollaron para que pudiera conectarse cualquier nodo con otro cualquiera de la red y en particular para que los paquetes TCPIP pudieran enrutarse sin demasiadas restricciones (Para saltar una red a otra). Cuando tiempo después, en los años 90, la industria buscaba un protocolo que permitiera lanzar internet, el TCPIP venció rápidamente a todos los demás contendientes porque era un protocolo diseñado para eso (Aunque aún no existía Internet)

    Este es buen momento para hablar de algunos conceptos básicos, no demasiado bien comprendidos, que son imprescindible para entender las comunicaciones TCPIP y como no, los Firewall

  • Paquetes: TCP, el protocolo de transporte rompe todos los mensajes originales, en paquetes numerados de pequeño tamaño (512, 1024 Kb), que deben ser recombinados en destino para conseguir recomponer el mensaje original (Una película de video, por poner un ejemplo que puede ocupar varios Gb)
  • Cada fichero original puede ser partido en cientos o miles de paquetes que son enviados a la red de transporte, y la red decido por donde se envía cada paquete en función de la situación instantánea de la red. Por eso los paquetes tienen que ser ordenados apilados en destino para reconstruir el mensaje original y reclamar cualquier paquete que no haya llegado, para reconstruir el fichero original. ¿Complicado? Ni te imaginas, pero funciona de muerte.
  • La dirección TCPIP: es un numero único y exclusivo que identifica de modo univoco un nodo de la red. No puede haber dos iguales en ningun caso.
  • Pero al igual que en las comunidades de vecinos, la misma dirección es aplicable a todos los vecinos, por lo que se necesita un numero de puerta para identificar a cada vecino en particular. En un nodo TCPIP pueden convivir varios servicios en puertos diferentes. El puerto es mas o menos como el numero de timbre de tu portero automático. La misma dirección, pero cada vecino (Servidor) escucha solamente su propio timbre.
  • Cada paquete incluye cabeceras describiendo la dirección IP de quien envía, La dirección IP a donde va, a que puerto se refiere y cuantos paquetes (Numerados) componen el mensaje o fichero original. (Además de otras cosas relativas al enrutamiento que haya sufrido)
  •  

    Bien, una vez descrito lo de arriba, ya podemos decir que la mayor ventaja del TCPIP, que era escalable y que conectaba sin restricciones dos nodos cualesquiera de la red mundial, se convirtió en su mayor debilidad, porque el mundo está lleno de hijos de mala madre dispuestos a colarse en tu equipo, para hacer cualquier disparate, como robarte, secuestrar tus datos, etc., etc. y TCPIP les brinda un camino ideal para ello.

    Por eso, era necesario disponer de procedimientos que limitasen el acceso a nuestros equipos, a todas esas ratas inmundas que tanto abundan por la red (Son pocos, pero muy activos) y los Firewalls son una de esas armas defensivas. Un Firewall básicamente, es un sistema de control de acceso a través de una puerta (Electrónica) de acuerdo a unas ciertas reglas, que permitan o impidan cruzar a paquetes TCPIP no autorizados.

    Diagrama de bloques

    Normalmente, en las empresas es un equipo intermedio por el que pasan a su través, todos los paquetes entrantes y salientes de Internet, y decide sobre la marcha si permite o deniega el tránsito de esos paquetes de forma transparente para los usuarios. Para esto aplica un conjunto de reglas definido por el administrador del sistema, a todos y cada uno de los paquetes en tránsito, decidiendo si permite el paso o les cierra la puerta.

    Un Firewall decide si permite el paso en función básicamente de la información de transporte de cada paquete, como IP de origen, IP destino, Puerto TCPIP, etc., pero no puede decidir en función del contenido del paquete, en contra de la opinión generalizada. Por ejemplo, un Firewall puro no puede bloquear un paquete porque contenga virus, no dispone de esa capacidad, (Aunque nada nos impide instalar un antivirus tras el FW y antes de llegar a la red general)

    Por eso, cuando veamos las reglas que vamos a aplicar, hablaremos de direcciones y redes TCPIP o subredes, así como definiremos reglas de entrada (Quien puede venir de fuera) y reglas de salida (A quien permito que salga de mi red interior para ir a donde. Los malos no solo están fuera)

    Un caso particular pero muy habitual cuando se monta un FireWall, es montar además una red desmilitarizada o DMZ, de modo que montamos dos redes distintas, una interior con nuestros usuarios y servidores sensibles, y otra red diferente más expuesta, pero con los servidores de acceso público como la página web de la firma o los servidores de correo.

    Tipica red corporativa

    De este modo podemos especificar reglas distintas para cada una de ellas y niveles diferentes de seguridad. Típicamente, cuando montamos un servidor TCPIP (HTTP Web, SMTP mail, FTP, o broker MQTT) necesito definir un puerto de acceso para llegar al server y por eso tendremos que autorizar a nuestro FW mediante reglas de entrada, quien puede llegar al servidor, y también si permitimos que nuestro servidor contacte con algún nodo en el exterior (Reglas de salida).

  • Recuerda que en un mismo servidor físico puedo montar múltiples servidores, o servicios, a condición de que cada uno esté en un puerto diferente (Recuerda la idea de los timbres distintos para cada vecino de un mismo edificio).  [/fancy-ul] [/three-fourth]
  •  

    En el caso de Windows (O Linux) , y gracias a la potencia de los últimos procesadores, tenemos una combinación curiosa de servidor y de estación de trabajo, con lo que el propio FW está integrado en el sistema operativo de nuestro equipo. A pesar de que el modelo conceptual que hemos expuesto más arriba es distinto del caso de una estación con FW incorporado, las capacidades y las reglas que vamos a implementar son las mismas.

    Vamos pues a ver, como podemos administrar nuestro Firewall local en Windows y vamos a abrir el puerto 1883, que es el puerto TCPIP que nuestro Broker MQTT utiliza por defecto. Para ello escribe en la ventana inferior de búsqueda: “Firewall”

  • No es infrecuente en servidores expuestos, cambiar el puerto por el que se accede al servicio, en un intento de despistar al enemigo, pero para eso los malos inventaron el «Port Scanning», para buscar puertos no estándar en tu servidor. Pero al menos necesitan tiempo para escanear cada uno de los 64.000 puertos disponibles por nodo.  [/fancy-ul] [/three-fourth]
  •  

     

    Abriendo un puerto en el Firewall Windows

     

    Vamos pues a ver, como podemos administrar nuestro Firewall local en Windows y vamos a necesitar abrir el puerto 1883, que es el puerto TCPIP que nuestro Broker MQTT utiliza por defecto. Para ello, lo más cómodo para abrir la configuración del Firewall Windows es que vayas a la ventana de búsquedas, junto al botón de inicio de Windows y escribas “firewall”

    Ventana de busqueda

    Pincha en la primera opción: Firewall de Windows defender y llegarás a esta pantalla, pincha en configuración avanzada:

    Accediendo al firewall interno

    Te aparecerá esto, donde podremos administrar las reglas de paso:

    Configuracion del firewall

    Queremos permitir a los clientes del MQTT, que vendrán por el puerto 1883, acceder a nuestro broker Mosquitto por lo que tenemos que crear una regla de entrada que se lo permita. Pincha por tanto en reglas de entrada (Inbound rules) y luego a la derecha en nueva regla:

    Firewall windows

    Vale, nos preguntará por la naturaleza de la regla de entrada. En nuestro caso será puerto ya que queremos permitir a los que busquen el MQTT en la 1883:

    Configurando windows Firewall

    Pulsa el botón de Siguiente y elige que nuestra regla se aplica al protocolo TCP y al puerto 1883. Pulsa Siguiente:

    Config windows firewall

    Llegamos a otra pantalla donde permitiremos esta conexión:

    Configurando firewall windows

    Ahora nos pregunta si deseamos permitir el paso a nuestra red doméstica, o subred corporativa o a todo quisqui venga de donde venga. Si deseas que se puedan conectar desde internet, tienes que activar la casilla de público (Esto tiene un cierto peligro y además tendrás que abrir un puerto en tu router de acceso: Port Forwarding). Si te basta con los de tu red puedes negar el acceso publico desmarcando esa casilla:

    Firewall windows

    Y por último nos pide un nombre descriptivo para identificar la regla:

    Panel de windows firewall

    ¡Accede al contenido!

    Dando a intro habrás acabado y ya verás en las reglas de entrada a MQTT:

    Ventana windows firewall

    ¡¡Pero aún no has acabado!!. Con esta regla permitimos que los nodos publiquen en Mosquitto, ya que el firewall les permitirá entrar. Pero Mosquitto deberá contactar en el exterior con los suscriptores y para eso tienes que autorizar una regla de salida, que está debajo de las reglas de entrada en la pantalla superior

    No vamos a repetir el proceso aquí porque es exactamente igual que la regla de entrada y lo puedes hacer tú mismo. Pero al finalizar podrás conectar a tu broker MQTT desde el exterior o desde otro PC. Puedes hacer la prueba con el MQTT Explorer, por ejemplo.

     

    Configurando la variable Path

     

    La variable de sistema path contiene las ubicaciones de programas ejecutables, donde buscará los comandos que no encuentre en el directorio actual, de una sesión PowerShell o CMD. Por eso es buena política incluir el directorio de instalación de Mosquitto en el path para que podamos ejecutar comandos MQTT desde cualquier directorio en un momento dado.

    Aunque esto no es estrictamente necesario, nos evitará tener que ir al directorio de Mosquitto cuando queramos ejecutar cualquier comando y es una práctica que conviene seguir. Para eso, de nuevo, escribimos path en la ventana de búsqueda de Windows:

    buscando path

    Te saldrá el panel de abajo, a la izquierda. Elije la primera opción, Editar las Variables de entorno del sistema, y luego busca en la parte de variables del sistema el botón editar:

    Buscando path

    Cuando lo pinches veras:

    configurando path

    Pincha el botón de Nuevo (Nuevo ruta que vamos a añadir) y si has hecho la instalación por efecto tendrás a mosquitto en:

     “C:\Program Files\mosquitto”

    tienes que escribir esa ruta en la línea en blanco que aparece y dar a aceptar, con lo que verás que ahora ya está incluido el camino de Mosquitto en tu path de sistema.

     

    Por último, a lo largo de estos tutoriales vamos a ir configurando varios programas en la Raspberry Pi y Windows, tales como MQTT Broker (Listo) pero también otros programas que iremos viendo como Influx DB, Telegraf, Grafana y Nodered. Varios de ellos van a necesitar que abramos puertos en el firewall de Windows y quizás también, configurar variables de entorno para trabajar con ellos.

  • No te asustes por el numero de programas que probablemente aun te resulten desconocidos. Iremos paso a paso y viendo por qué los necesitamos y como instalarlos y configurarlos, así que tranqui
  •  

    En Linux / Raspberry, los paquetes de instalación nos harán buena parte del trabajo, pero por defecto el Firewall de Linux, iptables, no viene activo por defecto por lo que podemos ahorrarnos esa parte del trabajo. Pero si utilizas Windows para acceder a los servidores que tienes en Raspberry o en Windows necesitaras abrir puertos. Lo mismo te ocurrirá si vas a poner los servidores en Raspberry y permites el acceso desde internet. Tendrás que configurar iptables (Probablemente con ufw) para evitar que te la líen.

     

    IMAGEN DE MARCA

    Deja una respuesta