# Beveiliging ## Overzicht Neotask is ontworpen met een beveiligings-eerst-architectuur. De Gateway wordt standaard gebonden aan localhost, alle gevoelige gegevens zijn versleuteld in rust, en agentuitvoering kan worden gesandboxed in geïsoleerde containers. ## Netwerkbeveiliging ### Loopback als standaard De Gateway luistert alleen op `127.0.0.1` (localhost) tenzij u de bindingsmodus expliciet wijzigt. Standaard geen externe netwerktoegang. ### Authenticatie Alle WebSocket-verbindingen vereisen authenticatie: - **Token-authenticatie**, Bearer-token (UUID of aangepaste reeks) - **Wachtwoordauthenticatie**, Bcrypt-gehashd wachtwoord - **Vertrouwde proxy**, Vooraf-geauthenticeerde headers van reverse proxies - **Lokaal vertrouwen**, Loopback-verbindingen zijn impliciet vertrouwd ### Beveiliging voor externe toegang Voor externe toegang is de aanbevolen aanpak **Tailscale VPN** of **SSH-tunneling**, stel de Gateway nooit rechtstreeks bloot aan internet. ## Apparaatkoppeling ### Hoe koppeling werkt Elke client die verbinding maakt met de Gateway moet worden gekoppeld: 1. Apparaat presenteert zijn identiteit (vingerafdruk + publieke sleutel) 2. Gateway stuurt een koppelingsuitdaging (nonce) 3. Apparaat ondertekent de nonce met zijn privésleutel 4. U keurt het apparaat goed via de UI 5. Gateway geeft een apparaattoken uit voor toekomstige verbindingen ### Vertrouwensmodel - **Lokale apparaten** (loopback) worden automatisch goedgekeurd voor het gemak - **Niet-lokale apparaten** vereisen expliciete goedkeuring - Apparaattokens worden lokaal opgeslagen en hergebruikt bij opnieuw verbinden - Apparaten kunnen op elk moment worden ingetrokken ## Versleuteling ### Gegevens in rust - **AES-256-GCM**, Alle tokens, geheimen en API-sleutels zijn versleuteld in rust - **Machine-afgeleide sleutels**, Versleutelingssleutels afgeleid via scrypt van apparaatidentiteit - **Geen opslag in leesbare tekst**, Tokens worden nooit in leesbare tekst opgeslagen ### Gegevens in transit - **TLS**, HTTPS voor API-communicatie - **WSS**, WebSocket Secure voor Gateway-verbindingen (bij gebruik van Tailscale Serve of reverse proxy) - **HMAC-ondertekening**, Verzoekintegriteit met nonce en tijdstempel ## Sandboxing ### Docker-gebaseerde isolatie Agentopdrachtuitvoering kan worden gesandboxed in Docker-containers: - **Per-agent-profielen**, Elke agent kan zijn eigen sandboxconfiguratie hebben - **Resourcelimieten**, Configureerbare CPU-, geheugen- en time-outlimieten - **Netwerkisolatie**, Containers kunnen van het netwerk worden geïsoleerd - **Bestandssysteemsafbakening**, Agents benaderen alleen hun werkruimte - **Aangepaste images**, Gebruik voorgemaakte images met specifieke geïnstalleerde tools ### Sandboxbereiken | Bereik | Beschrijving | |-------|-------------| | **Per-sessie** | Nieuwe container voor elke sessie | | **Per-agent** | Aanhoudende container per agent | | **Gedeeld** | Gedeelde container over agents | ### Werkruimtetoegang Gesandboxede agents hebben toegang tot hun werkruimtemap (gekoppeld aan de container), maar hebben geen toegang tot het hostbestandssysteem buiten hun werkruimte. ## Uitvoeringsgoedkeuringen Beheer welke opdrachten agents kunnen uitvoeren op nodes en de Gateway-host: ### Modi | Modus | Beschrijving | |------|-------------| | **Toegestane lijst** | Alleen vooraf goedgekeurde opdrachten worden uitgevoerd | | **Vraag** | Onbekende opdrachten vragen om gebruikersgoedkeuring | | **Volledig** | Geen beperkingen (gebruik met voorzichtigheid) | ### Per-node-configuratie Elke node (macOS, headless host) heeft zijn eigen uitvoeringsgoedkeuringsconfiguratie, lokaal opgeslagen. U kunt specifieke binaries toestaan (bijv. `/usr/bin/docker`, `/usr/local/bin/terraform`) terwijl u al het andere blokkeert. ## Verhoogde modus Sommige bewerkingen vereisen uitvoering rechtstreeks op de Gateway-host (niet in een sandbox). Verhoogde modus is: - Beveiligd door expliciete toestemming in agentconfiguratie - Alleen beschikbaar op de Gateway-host - Standaard uitgeschakeld - Auditeerbaar via logboekregistratie ## Beveiligingsaudit De ingebouwde beveiligingsaudit controleert: - Configuratiebestandsrechten (moeten 600 zijn) - Sessiebestandsrechten - Node.js-versie (beveiligingspatches) - Detectie van geheimen in leesbare tekst - Validatie van plug-in-toegestane lijst - Open netwerkinterface-audit - Volledigheid van authenticatieconfiguratie De audit kan automatisch veel problemen oplossen wanneer toestemming wordt gegeven. ## Beste praktijken 1. **Houd de Gateway op loopback**, Gebruik Tailscale of SSH voor externe toegang 2. **Schakel sandboxing in**, Voer agentopdrachen uit in Docker-containers 3. **Gebruik uitvoerings-toegestane lijsten**, Beperk welke opdrachten agents op nodes kunnen uitvoeren 4. **Stel authenticatietokens in**, Configureer altijd token-authenticatie, zelfs voor loopback 5. **Controleer agentrechten**, Gebruik minimale toolprofielen waar mogelijk 6. **Houd Neotask bijgewerkt**, Updates bevatten beveiligingspatches 7. **Regelmatig auditeren**, Voer beveiligingsaudits uit om verkeerde configuraties te detecteren 8. **Beperk het laden van plugins**, Installeer alleen vertrouwde plugins