Configuración del proxy inverso Webmin en Ubuntu 22.04 Server

Si tienes instalado Webmin en un servidor de producción, es posible que necesites realizar la configuración del proxy inverso con Apache con el objetivo de poder utilizar tu nombre de dominio para acceder a la interfaz de Webmin sin utilizar, por ejemplo, el puerto (10000). Esto también te permite obtener e instalar un certificado Let’s Encrypt TLS válido para Webmin.

Proxy inverso es un tipo de servidor proxy que recupera recursos en nombre de un cliente desde uno o más servidores.

Fuente: https://es.wikipedia.org/wiki/Proxy_inverso

Si no sabes como instalar Webmin te recomiendo que leas el post anterior sobre cómo instalar Webmin en Ubuntu 22.04 Server.

Frontend Webmin
Frontend Webmin

Cómo configurar el proxy inverso en un servidor Apache

Para configurar el proxy inverso en Apache tienes que seguir las siguientes instrucciones.

Si no tienes instalado el servidor web Apache, puedes hacerlo con:

sudo apt install apache2


Para usar Apache como proxy inverso, debes habilitar los módulos proxy, proxy_http y rewrite.

sudo a2enmod proxy proxy_http rewrite

Una vez habilitados los módulos anteriores tienes que crear un Virtual host para Webmin.

sudo nano /etc/apache2/sites-available/webmin.conf


Añade el siguiente wp-content/uploads al fichero que has creado. Donde tienes que reemplazar webmin.tu-dominio.com por el nombre del dominio real. No olvides crear un registro DNS A.

<VirtualHost *:80>
    ServerName webmin.your-domain.com

    ProxyPass / http://127.0.0.1:10000/
    ProxyPassReverse / http://127.0.0.1:10000/
</VirtualHost>


Guarda (Ctrl+O) y cierra el archivo (Ctrl+X), y habilita el Virtual Host creado.

sudo a2ensite webmin.conf


Recarga Apache para que los cambios tengan efectos.

sudo systemctl reload apache2

Ahora puedes acceder a Webmin de forma remota tecleando la URL del tu dominio (webmin.tu-dominio.com) en la barra de direcciones del navegador.

Habilitar HTTPS

Para encriptar el tráfico HTTP cuando visitas la interfaz web de Webmin, puedes habilitar HTTPS instalando un certificado TLS gratuito emitido por Let’s Encrypt.

Ejecuta el siguiente comando para instalar el cliente Let’s Encrypt (certbot) en Ubuntu.

sudo apt install certbot


En Apache necesitas instalar el complemento Certbot Apache.

sudo apt install python3-certbot-apache


A continuación, ejecuta el siguiente comando para obtener e instalar el certificado TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email tu-mail@mail.com -d webmin.tu-dominio.com

Donde:

–apache: Utiliza en plugin de Apache.
–agree-tos: Aceptas los términos de servicio.
–redirect: Forzar HTTPS mediante redirección 301.
–hsts: Agrega el encabezado Strict-Transport-Security a cada respuesta HTTP. Obliga al navegador a usar siempre TLS para el dominio.
–staple-ocsp: Habilita OCSP Stapling.

Una vez se ha obtenido el certificado e instalado automáticamente, podrás acceder a la interfaz web de Webmin a través de una conexión HTTPS segura.

Añadir referentes de confianza ( Trusted Referrers )

Debido a que Webmin se ejecuta en modo HTTP y tienes habilitado el HTTPS en Apache, Webmin pensará que https://webmin.tu-dominio.com está fuera del servidor de Webmin. Por lo tanto, tienes que agregar referentes de confianza (Trusted Referrers).

Para ello, edita el fichero config de Webmin.

sudo nano /etc/webmin/config


Añade la siguiente línea al final.

referers=webmin.tu-dominio.com


Guarda (Ctrl + O) y cierra (Crtl + X) el fichero. Y reinicia Webmin.

sudo systemctl restart webmin


Deshabilita el modo HTTPS en Webmin

Ahora que has finalizado la conexión TLS en Apache, tienes que deshabilitar el modo HTTPS en el servidor web integrado de Webmin. Para ello, edita el archivo de configuración de Webmin.

sudo nano /etc/webmin/miniserv.conf


Busca la siguiente línea.

ssl=1

Cambia la línea «ssl=1» el modo HTTPS de Webmin a deshabilitado

ssl=0

Además, puedes añadir la siguiente línea en este archivo para que el servidor web incorporado solo permita el acceso desde localhost. Los visitantes que utilicen el esquema http://public-ip:10000 no tendrán permitido el acceso.

allow=127.0.0.1

Guarda (Ctrl + O) y cierra (Crtl + X) el fichero. Y reinicia Webmin.

sudo systemctl restart webmin

Solución de problemas

Si te aparece algún error, puedes consultar el registro de errores de Webmin (/var/webmin/miniserv.error). El cual te puede dar alguna pista a la hora de solucionar el problema.

Conclusión

Después de realizar todos los pasos podrás acceder a tu Webmin desde tu propio dominio. Además, habrás añadido un puntito más de seguridad.

Espero que este tutorial te haya ayudado a configurar el proxy inverso para Webmin en Apache Webmin.

Nos vemos en el siguiente post, ciao!!