Is it safe to open ports 80 and 443 in my home network?
Hi all, I'm running a small website off of a raspberry pi in my house. I have opened ports 80 and 443 and connected my IP to a domain. I'm pretty confident in my security for my raspberry pi (no password ssh, fail2ban, nginx. Shoutout networkchuck.). However, I am wondering if by exposing my ports to the raspberry pi, I am also exposing those same ports to other devices in my home network, for example, my PC. I'm just a bit unsure if port forwarding to an internal IP would also expose other internal IP's or if it only goes to the pi. If you are able to answer or have any other comments about my setup, I would appreciate your comment. Thanks!
I did this for some time. But now I don't want any ports open at home.
That's why I have a rented VPS that runs Traefik (a reverse proxy). This VPS has a VPN connection to my home net and is behind Cloudflare DNS. This is how I can safely expose services (even in my home net) to the Internet without forwarding any ports.
Of course those services need to have some kind of authentication.
If you've set up a VPN to your home net then why not run that VPN from the devices you use to access the reverse proxy? With wireguard at least this is quite easy.
That way you don't have to expose anything you just run a VPN with the reverse proxy in it.
Internet <---> Reverse Proxy (on VPS) <---> OpenVPN Server (on VPS) <---> VPN Client (home router) <---> local stuff...
I don't understand what you mean? Generally I don't like to require a VPN to access stuff. My use case is, when I'm away I'd like to be able to access things from e.g. a public device, a friends laptop, etc. That's why I'm not using a VPN to access things.
The VPN site-to-site connection is mainly responsible to make network shares available on my Nextcloud instance and provide access to other (local) services via the reverse proxy
Currently I'm rethinking the VPN, but I don't think I can ditch it in favor if e.g. Cloudflare Access tunnels (too unflexible, limited compatibility, or too much hassle to keep everything configured correctly).
Also, I don't use VPN to authorize requests. I use Authelia to authorize users with Free-IPA as directory in the backend.
I know, this might be overkill for my "simple" use cases, but I like to play around with these kind of enterprise-adjacent solutions.
I suppose it depends on what you want to do. I'm currently only hosting stuff for my own purposes so it is fine if I can just access it from devices I trust.
My setup is more like
Wireguard (on Phone/Laptop/etc) <--> Wireguard (on RaspberryPi) <--> Reverse Proxy (on RaspberryPi) <--> local stuff (mostly in docker on RaspberryPi)
The advantage is that the only service accessible from outside is Wireguard, so even if some service running behind the reverse proxy is insecure I'm still the only one with access.
Obviously one of the disadvantages is that I can't access it (easily) from some random device, but I can access it from my phone and in an emergency I do have keys that I can use to install wireguard somewhere else, but I would require admin rights to some device to do so.
Ah yes. I've been there. But since I've onboarded my family onto my domain and they use a few of the services I needed a low but still secure barrier of entry. Hence the more "public" approach.
If this was "top security" I'd need to change jobs, haha! I just hope it doesn't fall apart and nobody breaches it too easily.
Currently there are probably a lot of attac vectors available, that I'm not even aware of. I just have to hope, that my stuff won't become interesting for a bad actor.
Nothing to see here, move along. I have a few locks, not worth it... :D
I've been considering doing the same thing, but i'm not sure there's much actual benefit over feeling like there's more separation, because if someone accesses the vps, they get direct access into your server at home. What's your opinion?
Yes, definitely. If someone breaches the VPS, I've lost. That's why it's rather locked down using strict firewall rules, pubkey auth, fail2ban, etc.
No matter what you expose to the Internet, you're accepting a risk.
If I had to start over, I'd probably set up some form of cloud infrastructure with maybe Cloudflare for access control and security or whatever.
My system started when I didn't have a lot of funds. So everything is kind of cobbled together.
The VPS is/was for hosting a few game servers and now I'm too lazy to migrate away, haha.
At least everything is based on configs that I keep in Git repositories. But I digress (again).
Yeah, same. I have a small server that runs Wireguard and I only expose services on any device on the local Wireguard interface. That way I can safely access stuff in my home net from anywhere.