
Esporre servizi amministrativi come Webmin direttamente su Internet può rappresentare un rischio significativo per la sicurezza, soprattutto se si utilizzano porte non standard o certificati auto-firmati.
Una soluzione più sicura ed elegante consiste nel posizionare Webmin dietro un reverse proxy, delegando a quest’ultimo la gestione dei certificati SSL, dei filtri di accesso e dell’instradamento delle richieste.
In questo articolo vedremo come utilizzare Nginx Proxy Manager, un’interfaccia intuitiva e potente basata su Nginx, per pubblicare Webmin in modo sicuro e facilmente gestibile. Passeremo dalla configurazione di base alla gestione dei redirect, fino alle best practice per proteggere correttamente l’interfaccia di amministrazione. Al termine, avrai una configurazione pulita, performante e soprattutto più sicura rispetto all’esposizione diretta della porta 10000.
PREREQUISITI
DNS DEL SERVER: server-01.test.lab
DNS DI WEBMIN: webmin.test.lab
DNS Record webmin.test.lab che punta all’IP del Reverse Proxy Nginx
CERTIFICATO: accertarsi che su Nginx sia presente il certificato da associare all’Host
CONFIGURAZIONE DA FARE SU WEBMIN
Modificare il file /etc/webmin/config con il comando:
|
0 |
sudo nano /etc/webmin/config
|
Aggiungere al fondo del file la seguente riga:
|
0 |
referers=webmin.test.lab
|
Salvare e chiudere il file di configurazione
Modificare il file /etc/webmin/miniserv.conf con il comando:
|
0 |
sudo nano /etc/webmin/miniserv.conf
|
Aggiungere e/o modificare le seguenti righe:
|
0
1
2
|
ssl=1
redirect_host=webmin.test.lab
|
Salvare e chiudere il file di configurazione
Per applicare le impostazioni riavviare webmin con il comando:
|
0 |
sudo service webmin restart
|
Per verificare che sia tutto OK eseguire il comando:
|
0 |
sudo journalctl -u webmin -xe
|
Se è tutto OK dovremmo visualizzare un output simile al seguente:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
A stop job for unit webmin.service has finished.
░░
░░ The job identifier is 76316 and the job result is done.
Nov 16 19:32:38 server-01 systemd[1]: webmin.service: Consumed 53.576s CPU time, 128.2M memory peak, 0B mem>
░░ Subject: Resources consumed by unit runtime
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ The unit webmin.service completed and consumed the indicated resources.
Nov 16 19:32:38 server-01 systemd[1]: Starting webmin.service - Webmin server daemon...
░░ Subject: A start job for unit webmin.service has begun execution
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit webmin.service has begun execution.
░░
░░ The job identifier is 76316.
Nov 16 19:32:38 server-01 perl[300384]: pam_unix(webmin:auth): authentication failure; logname= uid=0 euid=>
Nov 16 19:32:39 server-01 webmin[300384]: Webmin starting
Nov 16 19:32:40 server-01 systemd[1]: Started webmin.service - Webmin server daemon.
░░ Subject: A start job for unit webmin.service has finished successfully
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit webmin.service has finished successfully.
░░
░░ The job identifier is 76316.
Nov 16 19:33:09 server-01 webmin[300672]: Logout by root from 192.168.100.218
Nov 16 19:33:16 server-01 perl[300690]: pam_unix(webmin:session): session opened for user root(uid=0) by (u>
Nov 16 19:33:16 server-01 webmin[300690]: Successful login as root from 10.10.0.10
|
CONFIGURAZIONE DA FARE SU NGINX PROXY MANAGER
Accedere all’interfaccia web di Nginx Proxy Manager
Cliccare su Hosts quindi Proxy Hosts
Cliccare su Add Proxy Hosts
Inserire i seguenti paramentri:
Domain Names: webmin.test.lab
Scheme: https
Forward Hostname / IP: server-01.test.lab
Forward Port: 10000
Block Common Exploits: Abilitare
Cliccare su SSL
Inserire i seguenti paramentri:
SSL Certificate: Selezionare il certificato desiderato
Force SSL: abilitare
HTTP/2 Support: abilitare
HSTS Enable: abilitare
Cliccare su Save per salvare la configurazione
TEST DI FUNZIONAMENTO
A questo punto da un qualsiasi browser è possibile richiamare il link:
https://webmin.test.lab
Dovremmo poter raggiungere il server webmin in HTTPS con il certificato valido
CONSIDERAZIONI FINALI
Esporre Webmin tramite un reverse proxy come Nginx Proxy Manager permette di ottenere un livello di sicurezza e flessibilità nettamente superiore rispetto alla pubblicazione diretta del servizio.
Grazie alla gestione centralizzata dei certificati SSL, alle access list, alle opzioni avanzate di Nginx e alla protezione dagli exploit più comuni, il pannello di amministrazione diventa molto più difficile da individuare e attaccare.
Inoltre, l’astrazione offerta dal reverse proxy semplifica la gestione dell’infrastruttura: puoi modificare domini, certificati e instradamento delle richieste senza toccare la configurazione interna di Webmin.
Questo approccio risulta particolarmente utile quando si gestiscono più servizi, ognuno con proprie porte e protocolli, ma tutti raggiungibili in modo uniforme attraverso HTTPS.
Come regola generale, l’esposizione di strumenti di gestione deve essere sempre accompagnata da un’attenta valutazione dei rischi.
L’implementazione di un reverse proxy è un ottimo punto di partenza, ma vale la pena considerare anche ulteriori misure come l’autenticazione a due fattori, il blocco dell’accesso da IP non autorizzati e l’uso di una VPN per gli amministratori.
Con una configurazione ben curata e mantenuta nel tempo, Webmin può essere utilizzato in sicurezza anche da remoto, senza rinunciare alla comodità di un accesso semplificato e sempre protetto.

0 commenti