🔐 Securing Your Digital Sanctuary, Trust None, Protect Everything. - lucadibello/zerotrust-your-home
This is a decent writeup on applying "Zero Tust" principles to a home lab using mostly open source tools. I'm not the author, but thought it was worth sharing.
ZeroTrust is a specific type of network security where every network device has its access to other devices validated and controlled, not a statement on the trustworthiness of vendors.
Instead of every device on a LAN seeing every other device, or even every device on a VLAN seeing other devices on a VLAN, each device can only connect with the other devices it needs to work, and those connections need to be encrypted. These connectioms are all monitored, logged and alerted on to make sure the system is working as intended.
You do need to trust or validate the tooling that does the above, regardless of what you're using.
I've been researching zero-trust for my homelab recently and I'm considering OpenZiti instead of Cloudflare since I think it can all be self-hosted. The BrowZer from OpenZiti is especially interesting to me. The fact that I'm behind CGNAT is a hurdle though.
Yeah, I practice some ZeroTrust principles w/o using any of the above. I use Docker networks to associate services and their data and restrict them from accessing services/data they don't need. I use HAProxy at the edge to route requests to specific nodes in my network, and all of that operates over my own WireGuard VPN. I'm working on creating VLANs for my network to further segment things, so I can dictate which devices can access which resources. For continuous monitoring and alerting, any separate device connected to my VPN would work (haven't yet configured that); I personally don't bother because my SO/kids will tell me if something they use goes down, and knowing a few minutes earlier wouldn't matter.
You really don't need AWS, Cloudflare, or Telegram for any of this. That said, it is interesting to read through when crafting your own solution, if only to check which parts you have and what parts you may have forgotten.
The document is filled with so much meaningless fluff that it's annoying to read and was probably written by chatgpt and the cover image is AI generated: I don't think there's anything useful here.
this is a very bad article. It talks about "zero trust" but then suggests you to use corporate software, the cloud, sketchy russian apps to monitor your traffic at home. Also, I am not spending 2 hours a day going through my logs, nor I want a VM/container with 8GB of ram wasting 40% of my GPU on grafana.
When done correctly, the banner is actually a consent banner. It's a legal thing, not necessarily trying to discourage criminals. It's informing users that all use will be monitored and it implies their consent to the technology policies of the organization. It's more for regular users than criminals.
When it's just "unauthorized access is prohibited", though, especially on a single-user server? Not really any point. But since this article was based on compliance guidelines that aren't all relevant to the homelab, I can see how it got warped into the empty "you no hack" banner.
Here's a relevant excerpt from a US DoJ doc on Searching and Seizing Computers and Obtaining Electronic Evidence in Criminal Investigations
Network banners are electronic messages that provide notice of legal rights to users of computer networks. From a legal standpoint, banners have four primary functions. First, banners may eliminate any Fourth Amendment “reasonable expectation of privacy” that users might otherwise retain in their use of the network. Second, banners may generate consent to real-time monitoring under Title III. Third, banners may generate consent to the retrieval of stored files and records pursuant to the SCA. Fourth, in the case of a non-government network, banners may establish the network owner’s common authority to consent to a law enforcement search.
I, too, don’t love the use of AWS/Cloudflare, while I get that you can simply replace AWS S3 with something else for backups, this server setup is innately based on using Cloudflare.
I have a somewhat sophisticated setup as well that doesn't use Cloudflare (aside from domain and DNS hosting) or AWS (I use a simple Hetzner VPS). I'm considering using Backblaze for backups, and everything else is self-hosted.
One of my main goals is that every responsibility should be modular and have a compatible drop-in replacement. I'm very interested to read what others with a similar perspective have done.
I've done wire guard, and tor service to obfuscate the network, and crowdsec for a good external firewall, and linkerd gateway to actual services (and keycloak for sso).
Besides adding gotelaport for more fine grained access, idk what else you could do, but even then idk if its still competitive as someone else's network taking your ddos loads lol
I'd say anyone wanting to go this deep into a home monitoring setup will likely go with what works best for them instead of reading and following the entirety of this guide... I'm one of those people...
Wrote my own log parsing software to put into a database, display and alert through grafana, which is alerting through a homemade webhook that sends a notification to ntfy based on severity... And I also use uptime Kuma like mentioned, but my notifications channel is ntfy. No cloudflare for my internal services, only wireguard to connect home and use everything. And definitely no telegram.
Plenty of other stuff setup, but my security alerts and monitoring rely heavily on the syslog/grafana server which helps me monitor everything.
I don't meet all of the items here (my homelab setup is still a WIP), but here's basically what I have:
Cloudflare manages my domain and DNS, but nothing else; I only use them because they're cheaper than my last registrar (Namecheap)
VPS at Hetzner acts as my edge - HAProxy forwards packets based on SNI over my WireGuard VPN to the relevant device on my network
I use Caddy on each device to handle TLS, and all services are inside docker with zero directly exposed ports
each service only has access to the files and other containers it needs to accomplish the task
my router is configured w/ static DNS, so all requests to services go to my domain name over TLS, but they don't hit the WAN if I'm on my LAN
I don't have continuous monitoring and alerting, mostly because the only people using my network are me, my SO, and my kids. I am planning on adding some alerting though, and I especially need to configure SMART reporting (had it configured at one time). So when I do that, I'll add some dashboards for my various other services as well.
Some things I plan to add:
backup and restore - I plan to use Backblaze, my main hurdle is that I don't want to backup my large media files (movies and whatnot), and I haven't put in the work to configure a service to handle backups; this is a top priority for me
VLANs to separate devices - I want one network w/o internet access for my IP cameras, one for devices that need access to specific external sites (e.g. my smart TV, or a separate media device once I switch to a dumb TV), one for privileged services (e.g. my NAS, which will talk to multiple VLANs), and one for guests
continuous monitoring and alerting - each device would report to a service on my VPS (or maybe a separate VPS)
home automation system - my focus has been on replacing external services, and I don't use an automation system yet, so I haven't gotten to this; but I'm planning on using HomeAssistant as I roll out my other home monitoring stuff
So I'm probably halfway to what the OP has laid out. I don't do this type of thing at work, and I don't share anything outside my network, so I'm in no hurry. However, I do need to handle backups and SMART monitoring on my NAS ASAP, since those are the last glaring gaps in my setup.
Nice write-up. I'd take this as a blueprint. Anyone can swap 3rd-party services to their like (e.g. headscale, xmpp bot on that vps, backblaze s3, etc.) and extend upon (e.g. oidc providers, mailboxes, arr suite, etc.)