Uncategorized

My homelab’s zero-trust edge: Cloudflare Access + Authentik + YubiKey + Cloudflared (PVE stays private via Tailscale)

Building a Zero-Trust Homelab: My Journey to Secure My Home Network

As someone who designs Zero-Trust security architectures for banks and agencies, I wanted to create a similar setup for my home network, also known as a homelab. I’ll take you through my journey of building a secure homelab using various freeware platforms, including Cloudflare Access, Authentik, YubiKey, and Cloudflared.

Goals and Motivation

I had several goals in mind when building my homelab. First, I wanted to achieve a “default-deny” approach, where every public request must prove identity before it can touch an app. I also wanted to use hardware-backed authentication, such as WebAuthn/YubiKey, to reduce phishing and credential stuffing risks. Additionally, I wanted to ensure that there are no open inbound ports and that everything uses an outbound tunnel or a private overlay.

Architecture Overview

My homelab architecture consists of several components. I use Cloudflare Access for identity and access management, Authentik as the OIDC provider, and YubiKey for WebAuthn authentication. I also use Cloudflared tunnels to route traffic from the internet to my internal services. For admin-only apps, I use Tailscale, a VPN solution that provides secure access to my internal network.

Edge and Tunnel

I use Cloudflare as my edge, which provides DNS, WAF, and Zero Trust Access. I also use Cloudflared Tunnel, which routes traffic from the internet to my internal services. This setup allows me to keep my inbound ports closed and ensures that only authorized traffic reaches my internal services.

Identity and Authentication

I use Authentik as my OIDC provider, which enforces WebAuthn/YubiKey authentication. This provides an additional layer of security and reduces the risk of phishing and credential stuffing. I also use Cloudflare Access, which uses Authentik as the IdP, to manage access to my internal services.

Public Apps and Admin-Only Apps

I have several public apps, such as Pi-hole, Immich, and Portainer, which are accessible through Cloudflare Access. These apps are published via Cloudflared tunnels, which ensures that only authorized traffic reaches them. For admin-only apps, such as Proxmox VE and Proxmox Backup, I use Tailscale, which provides secure access to my internal network.

Request Flows and Packet Routing

When a user requests access to a public app, the request flows through Cloudflare Edge, which evaluates the policy and challenges the user with OIDC. Authentik then prompts the user for WebAuthn/YubiKey authentication, which returns a token to Access. Access then injects the session and forwards the request through the Cloudflared tunnel to the internal service.

Edge Hardening and Security

I have implemented several security measures to harden my edge. I use segmentation, inter-VLAN policy, and WAN edge protection to prevent unauthorized access to my internal network. I also use IPS/IDS, DoS protections, and east-west noise reduction to prevent attacks and reduce noise.

Conclusion

Building a zero-trust homelab requires careful planning and implementation. By using Cloudflare Access, Authentik, YubiKey, and Cloudflared, I have created a secure homelab that meets my goals and provides a high level of security. I hope that my journey and architecture overview will help others build their own secure homelabs.

Budowanie Zerowego Zaufania w Domowym Laboratorium: Moja Podróż do Zabezpieczenia Mojej Sieci Domowej

Jako osoba, która projektuje architektury bezpieczeństwa Zero-Trust dla banków i agencji, chciałem stworzyć podobny zestaw dla mojej sieci domowej, czyli tzw. homelab. Przyjmę Was w swoją podróż budowy bezpiecznego homelabu z użyciem różnych platform oprogramowania dostępnego bezpłatnie, w tym Cloudflare Access, Authentik, YubiKey i Cloudflared.

Cele i Motywacja

Miałem kilka celów na uwadze, budując mój homelab. Po pierwsze, chciałem osiągnąć podejście “default-deny”, gdzie każdy publiczny request musi udowodnić tożsamość, zanim będzie mógł dotknąć aplikacji. Chciałem również użyć uwierzytelniania opartego na sprzęcie, takiego jak WebAuthn/YubiKey, aby zmniejszyć ryzyko phishingu i kradzieży poświadczeń. Ponadto chciałem zapewnić, że nie ma otwartych portów wejściowych i że wszystko używa tunelu lub prywatnej warstwy.

Przegląd Architektury

Moja architektura homelab składa się z kilku komponentów. Używam Cloudflare Access do zarządzania tożsamością i dostępem, Authentik jako dostawcy OIDC, oraz YubiKey do uwierzytelniania WebAuthn. Używam również tuneli Cloudflared, aby przekierowywać ruch z internetu do moich usług wewnętrznych. Dla aplikacji tylko dla administratorów używam Tailscale, rozwiązania VPN, które zapewnia bezpieczny dostęp do mojej sieci wewnętrznej.

Krawędź i Tunel

Używam Cloudflare jako mojej krawędzi, która zapewnia DNS, WAF i Zero Trust Access. Używam również tuneli Cloudflared, które przekierowują ruch z internetu do moich usług wewnętrznych. Ten zestaw pozwala mi trzymać porty wejściowe zamknięte i zapewnia, że tylko autoryzowany ruch dociera do moich usług wewnętrznych.

Tożsamość i Uwierzytelnianie

Używam Authentik jako mojego dostawcy OIDC, który wymusza uwierzytelnianie WebAuthn/YubiKey. Zapewnia to dodatkową warstwę bezpieczeństwa i zmniejsza ryzyko phishingu i kradzieży poświadczeń. Używam również Cloudflare Access, który używa Authentik jako IdP, do zarządzania dostępem do moich usług wewnętrznych.

Aplikacje Publiczne i Tylko dla Administratorów

Mam kilka aplikacji publicznych, takich jak Pi-hole, Immich i Portainer, które są dostępne przez Cloudflare Access. Te aplikacje są publikowane za pomocą tuneli Cloudflared, co zapewnia, że tylko autoryzowany ruch dociera do nich. Dla aplikacji tylko dla administratorów, takich jak Proxmox VE i Proxmox Backup, używam Tailscale, które zapewnia bezpieczny dostęp do mojej sieci wewnętrznej.

Przepływy Żądań i Przekierowywanie Pakietów

Gdy użytkownik żąda dostępu do aplikacji publicznej, żądanie przepływa przez krawędź Cloudflare, która ocenia zasady i wyzywa użytkownika do OIDC. Authentik następnie prosi użytkownika o uwierzytelnianie WebAuthn/YubiKey, które zwraca token do Access. Access następnie wstrzykuje sesję i przekierowuje żądanie przez tunel Cloudflared do usługi wewnętrznej.

Wzmocnienie Krawędzi i Bezpieczeństwo

Wdrożyłem kilka środków bezpieczeństwa, aby wzmocnić moją krawędź. Używam segmentacji, polityki między sieciami VLAN, oraz ochrony krawędzi WAN, aby zapobiec nieautoryzowanemu dostępowi do mojej sieci wewnętrznej. Używam również IPS/IDS, ochrony przed atakami DoS, oraz redukcji szumu wewnątrz, aby zapobiec atakom i zmniejszyć szum.

Podsumowanie

Budowanie homelabu z zerowym zaufaniem wymaga starannego planowania i wdrożenia. Używając Cloudflare Access, Authentik, YubiKey i Cloudflared, stworzyłem bezpieczny homelab, który spełnia moje cele i zapewnia wysoki poziom bezpieczeństwa. Mam nadzieję, że moja podróż i przegląd architektury pomoże innym zbudować własne bezpieczne homelaby.

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Appliance - Powered by TurnKey Linux