# Säkerhet ## Översikt Neotask är utformat med en säkerhetsfokuserad arkitektur. Gateway binder till localhost som standard, alla känsliga data krypteras i vila och agentexekvering kan sandlådes i isolerade containrar. ## Nätverkssäkerhet ### Loopback som standard Gateway lyssnar bara på `127.0.0.1` (localhost) om du inte uttryckligen ändrar bindningsläget. Ingen extern nätverksexponering som standard. ### Autentisering Alla WebSocket-anslutningar kräver autentisering: - **Tokenautentisering**, Bearer-token (UUID eller anpassad sträng) - **Lösenordsautentisering**, Bcrypt-hashat lösenord - **Betrodd proxy**, Förautentiserade headers från omvända proxyer - **Lokal tillit**, Loopback-anslutningar är implicit betrodda ### Fjärråtkomstsäkerhet För fjärråtkomst är den rekommenderade metoden **Tailscale VPN** eller **SSH-tunneling**, exponera aldrig Gateway direkt mot internet. ## Enhetsparkoppling ### Hur parkoppling fungerar Varje klient som ansluter till Gateway måste parkopplas: 1. Enheten presenterar sin identitet (fingeravtryck + offentlig nyckel) 2. Gateway utfärdar en parkopplingsutmaning (nonce) 3. Enheten signerar nonce med sin privata nyckel 4. Du godkänner enheten via användargränssnittet 5. Gateway utfärdar en enhetstoken för framtida anslutningar ### Förtroendemodell - **Lokala enheter** (loopback) godkänns automatiskt för bekvämlighet - **Icke-lokala enheter** kräver uttryckligt godkännande - Enhetstokens lagras lokalt och återanvänds vid återanslutning - Enheter kan återkallas när som helst ## Kryptering ### Data i vila - **AES-256-GCM**, Alla tokens, hemligheter och API-nycklar krypteras i vila - **Maskinbaserade nycklar**, Krypteringsnycklar härledda via scrypt från enhetsidentitet - **Ingen klartext-lagring**, Tokens lagras aldrig i klartext ### Data under överföring - **TLS**, HTTPS för API-kommunikation - **WSS**, WebSocket Secure för Gateway-anslutningar (när Tailscale Serve eller omvänd proxy används) - **HMAC-signering**, Förfrågningsintegritet med nonce och tidsstämpel ## Sandlådning ### Docker-baserad isolering Agentkommandoexekvering kan sandlådes i Docker-containrar: - **Per-agent-profiler**, Varje agent kan ha sin egen sandlådekonfiguration - **Resursgränser**, Konfigurerbara CPU-, minnes- och tidsgränser - **Nätverksisolering**, Containrar kan nätverksisoleras - **Filsystembegränsning**, Agenter kommer bara åt sin arbetsyta - **Anpassade avbildningar**, Använd förbyggda avbildningar med specifika verktyg installerade ### Sandlådomfång | Omfång | Beskrivning | |-------|-------------| | **Per session** | Ny container för varje session | | **Per agent** | Beständig container per agent | | **Delad** | Delad container mellan agenter | ### Arbetsyteåtkomst Sandlådeagenter kan komma åt sin arbetsytekatalog (monterad i containern) men kan inte komma åt värdfilsystemet utanför sin arbetsyta. ## Exekveringsgodkännanden Kontrollera vilka kommandon agenter kan köra på noder och Gateway-värden: ### Lägen | Läge | Beskrivning | |------|-------------| | **Tillåtningslista** | Enbart förgodkända kommandon körs | | **Fråga** | Okända kommandon uppmanar användaren att godkänna | | **Fullständig** | Inga begränsningar (använd med försiktighet) | ### Per-nod-konfiguration Varje nod (macOS, headless-värd) har sin egen exekveringsgodkännandekonfiguration, lagrad lokalt. Du kan tillåta specifika binärer (t.ex. `/usr/bin/docker`, `/usr/local/bin/terraform`) samtidigt som du blockerar allt annat. ## Förhöjt läge Vissa operationer kräver att de körs på Gateway-värden direkt (inte i en sandlåda). Förhöjt läge är: - Begränsat av uttrycklig behörighet i agentkonfigurationen - Bara tillgängligt på Gateway-värden - Inaktiverat som standard - Granskningsbart via loggning ## Säkerhetsgranskning Den inbyggda säkerhetsgranskningen kontrollerar: - Konfigurationsfilbehörigheter (ska vara 600) - Sessionsfilbehörigheter - Node.js-version (säkerhetspatchar) - Klartextdetektering av hemligheter - Validering av plug-in-tillåtningslista - Revision av öppna nätverksgränssnitt - Fullständighet i autentiseringskonfiguration Granskningen kan automatiskt åtgärda många problem när den ges tillstånd. ## Bästa praxis 1. **Håll Gateway på loopback**, Använd Tailscale eller SSH för fjärråtkomst 2. **Aktivera sandlådning**, Kör agentkommandon i Docker-containrar 3. **Använd exekveringstillåtningslistor**, Begränsa vilka kommandon agenter kan köra på noder 4. **Ange autentiseringstokens**, Konfigurera alltid tokenautentisering, även för loopback 5. **Granska agentbehörigheter**, Använd minimala verktygsprofiler där det är möjligt 6. **Håll Neotask uppdaterat**, Uppdateringar inkluderar säkerhetspatchar 7. **Granska regelbundet**, Kör säkerhetsgranskningar för att hitta felkonfigurationer 8. **Begränsa plug-inladdning**, Installera bara betrodda plugins