Maskinrummet

Døren

Ingen kommer ind på et tillidsfuldt ansigt.

Et gammelt net er bygget som en borg: en voldgrav udenom, en vindebro ind, og er man først inde, stoler alle på en. Zero Trust har ingen inderside. Hver eneste forespørgsel skal vise, hvem den er, hver gang, ved den dør den vil ind ad. wi24rd.com har én dør, der er låst på den måde: administrationen på /admin/. Den står midt på siden, og du må gerne banke på.

Borgen og døren

Borgen

Firewall og VPN rundt om det hele. Indenfor er man betroet, og det er netop problemet: én stjålet VPN-adgang eller én inficeret bærbar, og angriberen går frit fra rum til rum. Jo større borgen bliver, jo flere vinduer står på klem.

Døren

Zero Trust kontrollerer ved hver enkelt dør, tæt på det, der skal beskyttes. Hvem er du, er din adgang stadig gyldig, og må netop du komme ind netop her? Svaret gælder kun denne forespørgsel. Næste gang spørges der igen. Cloudflare kalder det never trust, always verify.

Bank på

Døren fører til sitets administration. Du kommer ikke ind. Det er hele pointen.

Bank på døren (administrationen, kræver login via Cloudflare Access)

Kun for vedligeholderen · låst med Cloudflare Access

Det sker der, når du banker på

  1. Kanten. Din forespørgsel rammer Cloudflares datacenter tættest på dig. Før site-Workeren overhovedet vågner, kigger Cloudflare Access på den.
  2. Billetten. Access leder efter en gyldig adgangsbillet: et signeret JWT i cookien CF_Authorization. Har du ingen, sendes du videre til sitets login-side hos Cloudflare. Sitets kode ser dig aldrig.
  3. Hvem er du? Login sker med en metode, Access stoler på, og politikken siger præcis, hvem der må komme ind: kun sitets vedligeholder. Det er ligegyldigt, hvor du sidder, eller hvilket net du er på.
  4. Den anden lås. Slipper man igennem Access, tjekker sitets egen kode billetten en gang til: signaturen mod Cloudflares offentlige nøgler, hvem billetten er udstedt til og af, om den er udløbet, og om e-mailen står på listen over administratorer. Skulle Access-reglen en dag mangle, eller en preview-adresse stå uden den, er døren stadig låst.
  5. Sporet. Access logger hvert login. Sitet tæller kun, hvor mange gange døren blev prøvet, og hvad der skete, aldrig hvem.

Døren i tal

Talt hver time fra Cloudflares GraphQL Analytics API: forespørgsler på /admin/ og den statuskode, kanten svarede med. Ingen IP-adresser, ingen navne – og kun ugesummer, så siden ikke røber, hvornår vedligeholderen går ind.

Resten af Zero Trust-familien

Access er den del, wi24rd.com bruger. Cloudflare Zero Trust (Cloudflare One) har flere, og der findes en gratis plan til små teams.

I brug her

Access

Sætter login og politik foran en webside eller et program, uden VPN. Det er låsen på sitets dør.

Forbind

Tunnel

Forbinder en server bag en firewall til Cloudflare udefra og ind, uden åbne porte. Serveren har ingen offentlig adresse at angribe.

Filtrér

Gateway

Filtrerer de ansattes DNS- og webtrafik ud mod nettet, fx mod phishing og malware, uanset hvor de sidder.

Enheden

Cloudflare One Client

Programmet på computeren (tidligere WARP). Sender trafikken gennem Cloudflare og fortæller, om enheden er opdateret og krypteret, så politikken kan kræve det.

Isolér

Browser Isolation

Åbner risikable sider i en browser hos Cloudflare og viser kun resultatet. Skadelig kode når aldrig computeren.

Data

CASB og DLP

Overblik over SaaS-programmer og regler for, hvilke data der ikke må forlade huset.

Sådan låser man selv en dør

  1. Åbn Zero Trust i Cloudflare-dashboardet, og opret en organisation. Vælg den gratis plan, hvis den rækker.
  2. Under Access controls → Applications vælges Add an application → Self-hosted, og adressen sættes til fx wi24rd.com/admin.
  3. Tilføj en Allow-politik, der kun omfatter din egen e-mail, og vælg en login-metode (fx engangskode pr. e-mail eller GitHub). En applikation uden politik afviser alle.
  4. Lad din egen kode tjekke billetten igen, så en manglende regel ikke åbner døren:
// Anden lås: sitets egen kode tjekker Access-billetten igen (forkortet)
const token = request.headers.get('cf-access-jwt-assertion');         // eller cookien CF_Authorization
const [hoved, krop, sig] = token.split('.');
const noegler = await fetch(`https://${TEAM}/cdn-cgi/access/certs`);  // Cloudflares offentlige nøgler
// 1. signaturen skal passe til en af nøglerne (RS256)
// 2. aud skal være sitets Access-applikation, iss sitets team
// 3. billetten må ikke være udløbet (exp)
// 4. e-mailen skal stå på listen over administratorer (ADMIN_EMAILS)
if (!gyldig) return new Response('Kun for sitets vedligeholder.', { status: 403 });

Det samme tjek findes i den åbne motor: tingsvad.dk-projektet på GitHub. Rå tal som JSON: /api/maskine/doeren.

Familien: Værnet·Crawlerne·Hastigheden·Danmark lige nu·Arkivskabet·Døren·Infrastrukturkortet·Revisionen·Tilbage til maskinrummet

Har du en god idé?

Ønsker til nye funktioner, fejlrapporter og spørgsmål er velkomne. Hver henvendelse får et personligt svar.