Nivel Următor: Cum am implementat un portal de servicii "Zero Trust" cu Cloudflare Access


Când am adăugat un buton “Login” pe site-ul domotice.ro, am dat peste o problemă conceptuală fundamentală: unde anume se face logarea?

Site-ul meu este static. E construit cu Astro și servit ca un set de fișiere HTML de pe un CDN global. Un site static nu poate gestiona utilizatori sau parole. Butonul “Login” nu era pentru a te loga pe blog, ci pentru a accesa serviciile private din spatele lui: Home Assistant, Nextcloud, Vaultwarden și altele.

Problema era cum să gestionez acest acces într-un mod securizat și profesional.

Problema: “Securizat” înseamnă mai mult decât “Ascuns”

Până acum, foloseam Cloudflare Tunnel. Acesta este un pas uriaș în securitate: îmi ascunde adresa IP de acasă și criptează traficul. Dar nu este o soluție completă.

Dacă cineva (un bot, un atacator) ar descoperi subdomeniul meu home.domotice.ro, ar ajunge direct la pagina de login a Home Assistant. De acolo, ar putea încerca atacuri de tip “brute-force” sau să exploateze o vulnerabilitate (0-day) în Home Assistant. Tunelul era ca o ușă solidă, dar neîncuiată.

Aveam nevoie de un “paznic” care să stea în fața ușii.

Soluția: Cloudflare Access (Modelul “Zero Trust”)

Aici intervine magia suitei Cloudflare Zero Trust. Dacă Tunelul este pasajul secret către serverul meu, Cloudflare Access este paznicul care stă la intrarea în pasaj și cere o parolă.

Este o schimbare de mentalitate:

  • Modelul Vechi: Oricine ajunge la ușa ta (serverul tău) poate încerca să o deschidă.
  • Modelul “Zero Trust”: Nimeni nu are voie nici măcar să se apropie de ușa ta, decât dacă se autentifică mai întâi la un punct de control extern (Cloudflare).

Acest model oprește traficul malițios înainte ca acesta să ajungă măcar la serverul meu Raspberry Pi.

Beneficiul “Magic”: Single Sign-On (SSO)

Cel mai mare avantaj? Nu trebuie să mă loghez de 5 ori.

Înainte, ar fi trebuit să introduc parola pentru Home Assistant, apoi parola pentru Nextcloud, apoi parola pentru Vaultwarden. Era obositor și fiecare serviciu avea propriul său sistem de autentificare.

Cu Cloudflare Access, am configurat un singur sistem de autentificare (un cod de unică folosință trimis pe e-mailul meu). Când mă loghez o dată, Cloudflare îmi dă un “bilet” (un cookie securizat) care este valabil pentru toate subdomeniile mele (home.*, cloud.*, parole.*) pentru 24 de ore.

Mă loghez o singură dată dimineața și am acces la tot.

Implementarea (Pe Scurt)

Procesul a avut două părți majore:

1. Backend-ul (Cloudflare)

În panoul Zero Trust, am configurat “Applications” pentru fiecare serviciu pe care voiam să-l protejez:

  • Aplicație: Home Assistant
  • Subdomeniu: home.domotice.ro
  • Politică: Allow (Permite) -> Emails -> adresa-mea-de-email@exemplu.com

Am repetat acest proces pentru cloud.domotice.ro, parole.domotice.ro și celelalte. Acum, toate sunt “încuiate”.

2. Frontend-ul (Astro)

Pe site-ul static, am creat o pagină nouă: /portal.

Această pagină este publică, dar acționează ca un panou de control centralizat. Este pur și simplu o listă de “carduri” frumos stilizate, fiecare conținând un link către unul dintre serviciile mele protejate.

Am actualizat apoi butonul “Login / Sign In” din header pentru a-l transforma în “Portal Servicii” și l-am direcționat către noua pagină /portal.

Rezultatul: Un Flux de Lucru Profesional

Acum, fluxul de acces este incredibil de curat și securizat:

  1. Apas pe “Portal Servicii” pe domotice.ro.
  2. Sunt dus la pagina publică /portal.
  3. Apas pe cardul “Home Assistant”.
  4. Cloudflare mă interceptează și îmi cere e-mailul.
  5. Primesc un cod, îl introduc și sunt logat. Ajung la interfața Home Assistant.
  6. Mă întorc la pagina /portal.
  7. Apas pe cardul “Nextcloud”.
  8. Sunt dus direct la Nextcloud, fără nicio altă parolă.

Acesta este modul în care companiile mari își securizează infrastructura internă, implementat acum pentru un simplu server Raspberry Pi.