As the title says ive started running webmin. And i wanna know if its safe for me to reverse proxy (with 2fa) or should i just use tailscale or ssh to access it.
Why would you want to expose it to the web in the first place? In a homelab scenario, you’re the only one who needs access, so putting it behind a VPN comes at zero convenience or monetary cost.
My homelab stuff I like to be able to access from places that take all my free time (like work), making things accessible is a bit of a requirement for me.
Jamie is a cool guy. He’s also super smart. But he’s not infallible, and so I must secure this and only run it from the internal admin network. Because that’s best-practice.
I would never do something like that. It’s actually a sad story: I had a server that had to be exposed to the public, and not long ago, it was compromised by the latest PHP vulnerability. Fortunately, the damage wasn’t too severe. Since then, my policy has been to only expose services to the public that must be accessible to strangers, and I never expose administrative access points to the public internet. SSH access is restricted to key-based authentication, and the admin panel is accessible only from the internal network or via VPN. Two-factor authentication protects against password guessing, but it cannot prevent vulnerabilities that can be exploited before the login process even begins.
If you actually got pwned by the latest PHP vuln, you need to talk to the security researchers who are running all these honeypots and only managed to capture unsuccessful exploitation attempts.
An actual working exploit in the wild is real news
If you like being compromised then yes
Never in a million years would I do this
Webmin is still around‽
Yes, and it’s very useful. Cockpit, too.
I would never expose either of them to the internet.
I use cockpit, but via the client. They have a flatpak client that gives you cockpit’s features, connects over ssh (and reuses your ssh config), and doesn’t require anything to be installed on the host/server you are managing (besides ssh ofc).
This sounds very handy.
What’s it good for? I mean, beyond good ol SSH?
ssh is probably fine for 99% of things. I use ssh exclusively mostly
The features I load cockpit up for is:
- easier viewing of systemd/journalctl logs. You can click on services and see logs, search them, and so on.
- Partitioning a disk. Nothing too crazy, but I can format a disk, wipe them, via the GUI
- Networking configuration. If you are using networkmanager, cockpit will test the changes, attempt to connect, and then revert the changes if the connection fails (in like 15-30 seconds). This is legitimately insanely useful, I can change the ip address or something, connect via cockpit again, and only have the change stick if it’s actually good. (See also,
netplan tryfrom the netplan configuration framework.)
Cockpit also offers a GUI for managing virtual machines (via libvirt) or podman contaniers. So someone else might want that, although I don’t really use that. (virtual machines can be managed remotely via virt-manager over ssh by connecting to
qemu+ssh://user@remote-host/system, I manage podman via the terminal).
Is tail scale really that much more secure than reverse proxy and auth control?
Yes, it inherently is. Authentication/encryption happens as the very first thing at the network level, before anything resembling a service becomes accessible. This is fundamentally different than for example a web interface, which needs to present “the Web page” to allow the user to log in, which might involve multiple individual parts that can already have a 0-day.
As a more direct comparison: look into historic vulnerabilities between ipsec VPN and SSL VPN. The former is the older technology, the second is more “web like”. The number of serious CVEs for the latter over just some manufacturers (Cisco, fortinet, …) in one year probably beats the number for ipsec in is entire life time.
Going back to Tailscale (or netbird, …): it is one very secure layer which then secures everything. You can have 1 service or 20, same security. If you expose individual services, c you also expose every possible vulnerability of all of them, so all 20 services if that’s what you run.
Makes sense. Its unfortunate though that it presents a hurdle for end users. My users need to hit a webpage and acesss stuff, asking them to connect to a VPN client is too much.
It’s all a matter of what you consider reasonable risk. I also run some specific services exposed where it makes sense (they are designed to do this, think things like home assistant or next cloud or jellyfin), but would never put anything that is used to do server administration public facing (Webmin, Termix, proxmox, that sort of thing). If the purpose of the tool is to perform or allow elevated actions, I run it behind a VPN (yes for me that includes ssh).
There’s also a difference between being randomly port scanned and/or probed, or being actively and personally targeted for some reason. If the second is ever a reasonable threat, that changes what is acceptable dramatically as well.
All good thoughts, thank you
Tailscale and wire guard, it’s underlying vpn application, have a big stake in being secure. Webmin not as much more focused on providing features and being secure. There is much more surface areas for a web application over a simple vpn service. And self hosted you probably aren’t implementing intrusion monitoring as serious as tailscale web services would.
Tailscale is just wireguard with a central management console.
Ive been looking at headscale dont know if its better as im not well versed in vpn or tailscale or any of it but it seems better
Not necessarily. But it’s one service, compared to multiple, which could each have their own vulnerabilities. It’s about reduction of risk.
Considering the vulnerabilities that have been found just this past year, I sure wouldn’t. Use a VPN.
It is almost always a bad idea to place a management interface on the internet. No level of strong password and multifactor auth will protect against an unauthenticated RCE which every language will get, including Perl.
Absolutely stick it behind tailscale.OK, but if your threat landscape is someone burning 2 zero days (one tail scale, one webmin) you aren’t likely to be posting here for answers you will have security people on call.
Geofencing is always a good option for remote access, no point in allowing someone from Spain to login when you are in Germany.
@slazer2au I’m just pointing out that tailscale isn’t immune to security issues either. Maybe sticking webmin behind tailscale is the correct way to go, or maybe it’s better to set up a heavily-restricted reverse proxy and keep the webmin user(s) off of the OP’s private tailscale network.






