1

FrontalWeb Nginx sobre Ubuntu Server 20.04 LTS

Hola a tod@s.

En este post vamos a ver como montar un FrontalWeb con Nginx (Reverse Proxy) sobre una máquina Ubuntu Server 20.04, con esta implementación le vamos a dar un punto más de seguridad a nuestra infraestructura perimetral, ya que sólo vamos a exponer directamente a Internet un único servidor, sólo va a ser necesario abrir un puerto en nuestro Firewall, ya que a través del Frontalweb vamos a poder alcanzar a los demás servidores, los certificados digitales los vamos a instalar y administrar en un solo servidor, a través del Frontalweb que se va a encargar de cifrar todos los contenidos.

  • Lo primero que vamos a realizar será la instalación de Nginx, para ello ejecutamos el comando apt-get install nginx:

  • Ahora vamos a añadir dos ficheros de host virtual, uno será un servidor Guacamole y el otro un servidor de Nextcloud, para ello accedemos a la ruta /etc/nginx/sites-available y editamos estos dos ficheros:

  • Ahora vamos a crear los enlaces simbólicos desde /etc/nginx/sites-available a /etc/nginx/sites-enabled y eliminamos el enlace simbólico al fichero default que se incluye en la configuración por defecto:

  • Reiniciamos el servicio de nginx systemctl restart nginx y verificamos el estado systemctl status nginx:

  • Con el comando ufw app list podemos ver los perfiles de aplicación que se pueden usar para habilitar o deshabilitar el acceso a Nginx a través del firewall de Ubuntu:

  • En nuestro caso vamos a permitir el acceso a los dos puertos (80 y 443), ufw allow ‘Nginx Full’:

  • Ahora vamos a habilitar HTTPS con Lets Encrypt y Certbot para ello, instalamos en primer lugar certbot con el comando apt-get install certbot:

  • Ejecutamos apt-get install python3-certbot-nginx para instalar la herramienta:

  • Una vez instalada utilizamos la herramienta, para ello ejecutamos el comando certbot –nginx nos hará una serie de preguntas, listará los sitios webs detectados y procederemos a activarlos, en este ejemplo hemos activado los dos sitios webs al mismo tiempo 1,2 aunque también podemos hacerlo por separado, primero el sitio web 1 y luego el 2:

  • Seleccionamos la opción 2 para redirigir todo el tráfico HTTP (puerto 80) por HTTPS (puerto 443):

  • Los paquetes de certbot vienen con una tarea programada (cron), que renueva los certificados automáticamente antes de que caduquen, con el comando certbot renew –dry-run podemos probar la renovación automática de los certificados, y para renovar los certificados manualmente lo haremos con el comando certbot renew
  • Si accedemos a /etc/nginx/sites-available y editamos los dos ficheros de Virtual host, podemos ver que se han modificado para hacer la redirección:

  • Reiniciamos el servicio de nginx systemctl restart nginx y verificamos el estado systemctl status nginx:

  • Con esto ya tendríamos configurado nuestros websites en el servidor que estamos utilizando como FrontalWeb.
  • Ahora en nuestro Firewall, que en mi caso es un Fortigate, nos debemos de crear las reglas necesarias para publicar el puerto 80 y 443 apuntando al servidor FrontalWeb que va a ser el único que vamos a exponer en el perímetro, en este post de este mismo blog podemos ver como hacerlo, primero realizamos un NAT estático y luego nos creamos la regla de acceso a los puertos HTTP y HTTPS para el NAT estático creado:

  • En nuestro DNS interno debemos de crearnos una zona de búsqueda directa, en mi caso, ragasys.eu, que es el dominio externo que hemos comprado a nuestro proveedor de DNS y que utilizaremos para publicar nuestros servicios, esto lo hacemos en nuestra infraestructura interna, para que los usuarios que accedan desde la red interna no salgan al exterior, en esta zona de búsqueda directa nos creamos estos registros Tipo A y CNAME:

  • En nuestro DNS externo, el que tengamos contratado con nuestro proveedor de DNS, debemos de hacer algo parecido, es decir, debemos de crearnos un subdominio del tipo www.ragasys.eu con un registro tipo A apuntando a nuestra IP púbica, y nos crearemos subdominios por cada servicio que queramos publicar con un registro del tipo CNAME apuntando a www.ragasys.eu
  • Aquí vemos que ya podemos acceder a nuestro servidor de Guacamole desde el exterior, a través del FrontalWeb, con los certificados que hemos configurado:

 

Saludos y espero que os sea de ayuda 😉

Jose Ramon Ramos Gata

Técnico Superior STI

Un comentario

  1. Saludos. Estoy intentando llevar esto a Debian, quisiera saber como quedaría los virtual host para nextcloud, openfire, roundcube, etc. Gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.