0

FrontalWeb Apache sobre Ubuntu Server 20.04 LTS

Hola a tod@s.

En este post vamos a ver como montar un FrontalWeb con Apache (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 Apache, para ello ejecutamos el comando apt-get install apache2:

  • Una vez finalizada la instalación, con el comando apache2ctl –v podemos ver la versión de apache que hemos instalado:

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

Apache → Este perfil solo abre el puerto 80 (tráfico web normal sin cifrar)

Apache Full → Abre tanto el puerto 80 (tráfico web normal sin cifrar) como el puerto 443 (tráfico cifrado TLS / SSL)

Apache Secure → Este perfil solo abre el puerto 443 (tráfico cifrado TLS / SSL)

FUENTE: https://ubunlog.com/servidor-web-apache-instalacion-conceptos-basicos-ubuntu-20-04/

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

  • Para verificar que el servidor Apache está funcionando, accedemos a la URL de nuestro servidor, http://frontalweb.ragasys.net:

  • Con el comando systemctl status apache2 podemos ver el estado del servicio del servidor Apache, que como podemos ver está activo y ejecutándose:

  • Una vez que hemos instalado nuestro servidor de apache, vamos a habilitar los siguientes módulos:
  • a2enmod ssl
  • a2enmod proxy
  • a2enmod proxy_http
  • a2enmod proxy_balancer
  • a2enmod lbmethod_byrequests
  • a2enmod rewrite

  • Ahora vamos a exportar los certificados wildcard que nos creamos anteriormente en nuestra entidad emisora de certificados y los vamos a presentar en el formato adecuado:

  • Primero vamos a separar el fichero .pfx para obtener el certificado público por un lado .cer, y la clave privada por otro .key, , para ello vamos a introducir los comandos:
  • openssl pkcs12 -in wildcard_ragasys_eu.pfx -clcerts -nokeys -out wildcard_ragasys_eu.cer   
  • openssl pkcs12 -in wildcard_ragasys_eu.pfx -nocerts -nodes -out wildcard_ragasys_eu.key

  • También copiamos la cadena de certificados cambiándola de nombre, cp wildcard_ragasys_eu_ca-bundle.p7b cadenaragasyseu.crt:

  • Ahora movemos los certificados que hemos generado, junto con la cadena de la CA al directorio /etc/ssl/certficados ya que este directorio será el que usaremos en los ficheros de los VirtualHost:

  • Una vez terminado el tema de los certificados, nos vamos a crear nuestro primer VirtualHost, en la ruta /etc/apache2/sites-available, y ejecutando nano nextcloud.ragasys.eu.conf, este primer VirtualHost será un servidor de Nextcloud que tenemos en nuestra infraestructura, con este fichero, todo el tráfico http y https que llegue a la URL de dominio púbico indicada, se va a redirigir al servidor interno de nextcloud, siempre a través de conexión cifrada https, para eso hemos generado los certificados:

  • Nos creamos también el directorio para los logs de este sitio:

  • Habilitamos nuestro primer VirtualHost con el comando a2ensite nextcloud.ragasys.eu.conf:

  • Como podemos ver ya tenemos habilitado nuestro primer site, también hemos deshabilitado el site por defecto a2dissite 000-default.conf:

  • Ahora reiniciamos el servicio de apache2, systemctl restart apache2 y verificamos que el servicio está corriendo con systemctl status apache2:

  • Con esto ya tendríamos configurado nuestro primer website en nuestro servidor de FrontalWeb.
  • Ahora en nuestro Firewall, que en mi caso es un Fortigate, nos debemos de crear las reglas necesarias para publicar el puerto 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.midomino.com 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.midomino.com
  • Aquí vemos que ya podemos acceder a nuestro servidor de Nextcloud desde el exterior, a través del FrontalWeb, con los certificados que hemos configurado:

  • Aquí os muestro otro ejemplo del servicio Apache Guacamole publicado a través del FrontalWeb:

  • Aquí vemos que ya podemos acceder a nuestro servidor de Apache Guacamole desde el exterior, a través del FrontalWeb, con los certificados que hemos configurado:

Saludos y espero que os resulte de ayuda 😉

Jose Ramon Ramos Gata

Técnico Superior STI

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.