Veljko Radan

Språk: SVEnglish

Projekt

Hemmalabbet

En liten infrastruktur hemma, byggd och dokumenterad som om den vore på riktigt. Här testar jag tekniken innan den kommer i närheten av produktion.

Labbet är inte en hylla med blinkande servrar. Det är nätet hemma, som används varje dag, och det är byggt med samma krav som jag ställer på jobbet: segmentering, minsta möjliga exponering, backup som går att återställa och dokumentation som en annan person kan följa. Allt är beskrivet i en inventering med riskregister, färdplan, journal och revisionshistorik.

Två skisser nedan. Den första visar hur nätet hemma är uppdelat, den andra hur saker nås från internet. Siffrorna i bilderna hör ihop med listan under varje bild. Adresser, modeller, versioner och portar är medvetet utelämnade.

Nätet hemma

Skiss över hemnätet. Internet överst, under det operatörens box och brandväggen. Från brandväggen går huvudnätets trafik ut via en VPN-tjänst, medan nätet Clear går direkt ut. Under brandväggen delar en switch upp nätet i huvudnätet (dator, mobiler, hemserver och en Proxmox-värd med virtuella servrar), Clear (TV, IoT, gäster, spärrat mot huvudnätet), Hantering (switchens admin) och ett planerat serversegment.
Klicka på bilden för full storlek.
  1. Brandväggen sitter mellan internet och allt annat. All trafik passerar den, även mellan näten hemma, och den bestämmer vad som får gå vart. Operatörens box kopplar bara vidare. Brandväggen är också hemmets egen DNS-server. Den kontrollerar att svaren är äkta (DNSSEC), skickar frågorna vidare krypterade (DNS over TLS) så att operatören inte ser vilka sidor som slås upp, och blockerar kända reklam- och spårningsdomäner i huvudnätet.
  2. VPN som standard. Trafiken ut från huvudnätet går genom en krypterad tunnel till en VPN-tjänst. Det finns två tunnlar, och faller den ena tar den andra över automatiskt. Det som måste gå utanför VPN styrs med regler, inte genom att skyddet stängs av.
  3. VLAN – flera nät på samma kablar. Switchen delar upp hemmet i virtuella nät, VLAN. De delar samma fysiska utrustning men kan inte prata med varandra direkt. Allt mellan dem måste gå via brandväggen, och där finns en regel för varje sak som är tillåten. Wi-Fi sänder ut två av näten: huvudnätet och Clear.
  4. Huvudnätet är där vardagsenheterna och servrarna finns: dator, mobiler, en hemserver med tjänster i Docker (foton, film, inloggning) och en Proxmox-värd. Proxmox kör virtuella servrar, där nya saker kan provas utan att röra det som redan fungerar.
  5. Clear är för TV, IoT-prylar och gäster. Där går trafiken direkt ut på internet, och inget därifrån når huvudnätet.
  6. Hantering är ett eget litet nät för switchens administration. Det nås bara från huvudnätet.
  7. Serversegment är nästa steg. Servrarna ska flytta från huvudnätet till ett eget segment, så att en server som tas över inte står bredvid vardagsenheterna.

Utifrån

Skiss över hur saker nås från internet. Besökare kommer bara till Cloudflare, där den här sidan ligger. Sidan byggs på en extern server och laddas upp till Cloudflare. Samma server kör ett privat aktieverktyg som nås genom en tunnel som servern själv öppnar ut till Cloudflare, bakom inloggning via Cloudflare Access. Jag administrerar servern med SSH, bara med nyckel och med fail2ban. Servern tar krypterad backup till Google Drive varje natt. Hemmet har ingen väg in.
Klicka på bilden för full storlek.
  1. Besökare når bara Cloudflare. Den här sidan är statisk och ligger hos Cloudflare, som också sköter domänen. Ingen server hemma eller hos mig tar emot besöken.
  2. Sidan byggs på en hyrd server utanför huset och laddas upp till Cloudflare när något ändras.
  3. Tunneln. På samma server kör jag ett eget aktieverktyg, bara för mig själv. Det vanliga sättet att göra en tjänst nåbar är att öppna en port, så att vem som helst kan knacka på. Här är det tvärtom: programmet cloudflared på servern ringer själv upp Cloudflare och håller en krypterad tunnel öppen. Framför tunneln står Cloudflare Access och kräver inloggning, så alla utom jag stoppas redan hos Cloudflare och kommer aldrig fram till servern.
  4. Administration med SSH, bara med nyckel – ett medvetet val. SSH skulle också kunna gå genom tunneln, så att servern inte har en enda öppen port. Men det kräver inloggning via Cloudflare, och på datorer bakom en företagsproxy med zero trust fungerar det inte smidigt, särskilt inte filöverföring. Därför är porten öppen, men den tar bara emot nycklar, aldrig lösenord, och den som försöker gissa sig in bannas automatiskt av fail2ban. Det är en avvägning mellan bekvämlighet och exponering som jag har gjort med öppna ögon.
  5. Backup varje natt. Den krypteras innan den lämnar servern och läggs i Google Drive. Återställningen är provad.
  6. Hemmet har ingen väg in. Det finns inga öppna portar mot hemnätet, och ingen tunnel in. Allt hemma administreras hemifrån.

Brandväggen som kod

Brandväggens konfiguration exporteras, ändras i en kopia, granskas som en diff och läses tillbaka. Varje ändring går att backa.

Verktygslådan

Det här används, vad det gör i labbet och var dokumentationen finns. Det mesta har jag lärt mig från tillverkarnas egen dokumentation, och det är dit länkarna går.

Nät och brandvägg

  • OPNsense

    Brandvägg och router.

    Router-on-a-stick med VLAN-trunk, regler per segment, policyroutning och failover-grupper. Konfigurationen ändras som exporterad XML, granskas som diff och läses tillbaka.

    Dokumentation – OPNsense
  • Zyxel

    Hanterad PoE-switch.

    Taggade och otaggade VLAN per port, separat hanterings-VLAN, SSH avstängt och SNMP bara läsbart.

    Dokumentation – Zyxel
  • UniFi

    Trådlös accesspunkt.

    Två SSID:er på olika VLAN, så att gäster och enheter som inte ska komma åt något hamnar i ett eget segment.

    Dokumentation – UniFi
  • WireGuard

    Krypterade tunnlar.

    Två utgående tunnlar från brandväggen, i en failover-grupp som växlar automatiskt om den första går ner.

    Dokumentation – WireGuard
  • VPN

    Utgång till internet.

    Klienttrafiken går ut genom en kommersiell VPN-tjänst som standard. Tjänster som blockerar VPN, som strömning, styrs förbi med alias och regler i stället för att skyddet stängs av.

DNS och skydd

Virtualisering och tjänster

Extern server och publicering

  • VPS

    Extern server i molnet.

    Det som ska nås utifrån bor här, så att hemnätet aldrig behöver öppnas. Molnbrandvägg framför.

  • Debian

    Operativsystem för VPS:en.

    Minimal installation, tjänster som systemd-enheter med larm vid fel.

    Dokumentation – Debian
  • Cloudflare Tunnel

    Publicering utan öppna portar.

    En utgående tunnel till Cloudflare publicerar webbtjänster, utan att servern tar emot inkommande webbtrafik.

    Dokumentation – Cloudflare Tunnel
  • Caddy

    Webbserver.

    Lokal webbserver bakom tunneln.

    Dokumentation – Caddy
  • fail2ban

    Skydd mot inloggningsförsök.

    Aggressivt läge med ökande bannlysningstid. Kontrollerat mot loggarna: i stort sett alla misslyckade försök fångas.

    Dokumentation – fail2ban

Backup och hemligheter

  • restic

    Krypterad backup.

    Nattliga, deduplicerade ögonblicksbilder med 30 dagars historik och veckovis kontroll av att data går att läsa. Återställning provad, inte antagen.

    Dokumentation – restic
  • rclone

    Molnlagring.

    Backend för restic och nattlig kopiering av fotobiblioteket, med verifiering av att alla filer har kommit fram.

    Dokumentation – rclone
  • Google Drive

    Mål utanför huset.

    Krypterade repositorier och fotokopian. Ett byte till billigare lagring är planerat.

    Dokumentation – Google Drive
  • Bitwarden

    Lösenordshanterare.

    Nycklar och lösenord för återställning ligger här, så att backupen går att läsa även om servern är borta.

    Dokumentation – Bitwarden

Arbetssätt

  • Claude Code

    AI-kodagent.

    Arbetar i terminalen med behörighetsregler, granskningslogg och skydd mot prompt injection. Läser inventeringen vid varje sessionsstart och skriver journal.

    Dokumentation – Claude Code
  • Git + Markdown

    Dokumentation som kod.

    Inventering, riskregister, färdplan, journal och revisionshistorik i textfiler.

    Dokumentation – Git + Markdown

AI-agenten är en del av hotmodellen

Mycket av arbetet i labbet gör jag tillsammans med en AI-kodagent som arbetar i terminalen på den externa servern. Eftersom den har tillgång till ett skal har labbet granskats mot prompt injection och dataläckage, och åtgärderna är genomförda: uttryckliga behörighetsregler, ingen åtkomst till hemligheter den inte behöver och en granskningslogg över körda kommandon. Mer om arbetssättet i AI-agenter i drift.

Varför

Det mesta jag kan om segmentering, backup och härdning har jag lärt mig genom att göra det. Labbet låter mig prova en idé, se den gå sönder och förstå varför, utan att en fabrik står still. Det håller också en vana vid liv som jag tycker är viktigast av allt i drift: att skriva ner vad man gjorde, så att det går att göra om.