# Nexus Lockdown Mode

**Status:** POC 1 — Shell-level policy only  
**Sidst opdateret:** 2026-06-04  
**Relateret:** [SECURITY_MODEL.md](./SECURITY_MODEL.md), [AUDIT_LOGGING.md](./AUDIT_LOGGING.md)

---

## 1. Vision

Ninja Nexus er **systemet**. Windows er skjult infrastruktur — en runtime-platform brugeren aldrig skal opleve direkte.

| Perspektiv | Beskrivelse |
|------------|-------------|
| **Bruger** | Ser og bruger kun Ninja Nexus: login, desktop, dock, launcher, godkendte apps og Nexus-indstillinger |
| **Windows** | Skjult lag: filsystem, processer, registry, kontrolpanel og systemværktøjer er utilgængelige for almindelige brugere |
| **Administrator** | Styrer app-katalog, politikker og lockdown via Nexus — ikke via Windows UI |

**Designprincip:** Brugeren må aldrig se Windows desktop, Explorer, CMD, PowerShell, Registry eller Windows-indstillinger. Alt sker gennem Nexus-grænsefladen.

---

## 2. Brugerbegrænsninger

Almindelige brugere må **IKKE** kunne:

| Kategori | Blokeret adgang |
|----------|-----------------|
| Desktop | Se Windows desktop |
| Filsystem | Se `C:\` eller andre drev; browse direkte i filsystemet |
| Værktøjer | Explorer, Registry Editor, Task Manager, Control Panel, Windows Settings |
| Shell | PowerShell, CMD, pwsh |
| Software | Installere software uden administrator-godkendelse |
| System | Ændre Windows-indstillinger |
| Store | Tilgå Microsoft Store |
| Nexus | Lukke Nexus Shell uden tilladelse |

I **POC 1** håndhæves dette kun via `LockdownService` i Nexus Shell (app-launch policy). Windows selv er **ikke** låst endnu — se [Fremtidige faser](#8-fremtidige-faser-poc-23--ikke-implementeret).

---

## 3. Tilladt brugeroplevelse

Brugeren må kun se og bruge:

- Nexus Login
- Nexus Desktop
- Nexus Top Status Bar
- Nexus Bottom Dock
- Nexus Launcher
- Nexus Apps (fra godkendt katalog)
- Nexus Documents (fase 2+)
- Nexus Settings (låst statusvisning i POC)
- Nexus Support (fase 2+)
- Apps godkendt af administrator (`allowedApps` i lockdown-config)

---

## 4. Developer Escape Mode

Kun **Master Developer** må åbne underliggende Windows.

### Aktivering

| Metode | Beskrivelse |
|--------|-------------|
| Key chord | `Ctrl + Shift + Alt + N` |
| Config | `developerConsoleEnabled: true` i `lockdown.poc.json` |

### Flow

```
Bruger trykker Ctrl+Shift+Alt+N
        │
        ▼
Nexus Developer Console åbnes
        │
        ▼
Master login (username + password)
        │  (TOTP MFA — fase 2+)
        ▼
Audit log event
        │
        ▼
Tidsbegrænset unlock session (30 min POC)
        │
        ▼
Master Developer vælger handling
```

### Handlinger efter godkendelse

| Handling | POC 1 | Produktion |
|----------|-------|------------|
| Open Windows Desktop | Disabled | Tilladt (tidsbegrænset) |
| Open Explorer | Disabled | Tilladt |
| Open PowerShell | Disabled | Tilladt |
| Open CMD | Disabled | Tilladt |
| Open Registry Editor | Disabled | Tilladt |
| Open Device Manager | Disabled | Tilladt |
| Restart Nexus Shell | Disabled | Tilladt |
| Repair Nexus | Disabled | Tilladt |
| Exit Developer Mode | Ja | Ja |

**POC-begrænsning:** Alle Windows-escape-handlinger viser *"Disabled in POC for safety"* og logger forsøget. Ingen Windows-processer startes.

### Master Developer-krav

- Kun brugere i `developer.poc.json` → `masterUsernames` (POC: `admin@nexus.local`)
- Password verificeres via Nexus Identity API
- Rate limit efter 5 fejlede forsøg (15 min lockout)
- Session udløber efter 30 minutter
- Alle forsøg og handlinger logges til audit preview

---

## 5. Recovery Mode

Nødflow hvis Nexus Shell crasher eller lockdown fejler:

### 5.1 Safe boot procedure

1. Genstart enheden
2. Ved opstart: vælg **Safe Mode** (Shift + Genstart → Troubleshoot → Advanced → Startup Settings)
3. I Safe Mode kører standard Windows shell — Nexus Shell er ikke aktiv

### 5.2 Master Developer recovery

1. Log ind som Master Developer (lokal Windows-konto reserveret til recovery — **fase 2+**)
2. Kør recovery-script med `--dry-run` først (se `scripts/` — **fase 2+**)
3. Verificer Nexus-config og Identity-tilstand

### 5.3 Restore Explorer shell

Hvis Winlogon shell er erstattet (fase 3):

```powershell
# PLAN ONLY — kør IKKE automatisk i POC
# scripts/recovery/restore-explorer-shell.ps1 -DryRun
```

Registry-nøgle (dokumentation):

```
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
  Shell = explorer.exe
```

### 5.4 Disable lockdown

1. Sæt `lockdownMode: false` i `lockdown.poc.json` (Shell POC)
2. Eller kør `scripts/recovery/disable-lockdown.ps1 -DryRun` (fase 2+)

### 5.5 Repair config

- Gendan `config/lockdown.poc.json` og `config/developer.poc.json` fra backup
- Verificer `Assets/apps.manifest.json`

### 5.6 Rollback Nexus version

1. Stop Nexus Shell
2. Gendan tidligere build fra `%ProgramFiles%\NinjaNexus\` backup (fase 2+)
3. Genstart og verificer login

---

## 6. Security rules

| Regel | Beskrivelse | POC 1 |
|-------|-------------|-------|
| Audit alle unlocks | Developer Console session og handlinger logges | Ja (in-memory + Debug) |
| Audit alle forsøg | Fejlede login og blokerede app-starts logges | Ja |
| Rate limit | Fejlede Developer Console-logins begrænses | Ja (5 forsøg / 15 min) |
| Emergency account | Kun Master Developer som lokal nødkonto | Planlagt fase 2 |
| Ingen almindelig admin | Almindelige brugere må ikke være Windows local admin | Planlagt fase 3 |
| Nexus først | Nexus skal starte før bruger får adgang | Planlagt fase 3 (Winlogon) |
| Offline grace | Offline adgang kun til Nexus — ikke Windows | Planlagt fase 2 |
| Ingen internet-afhængighed | Lockdown må ikke kræve netværk for at holde Windows væk | Ja (lokal config) |

---

## 7. POC 1 — Implementeret i Shell

### Config

| Fil | Formål |
|-----|--------|
| `source/nexus-shell/NexusShell/config/lockdown.poc.json` | Lockdown policy (allowed/blocked apps) |
| `source/nexus-shell/NexusShell/config/developer.poc.json` | Master Developer POC-indstillinger |

### Services

| Service | Ansvar |
|---------|--------|
| `LockdownService` | Læser config, evaluerer app-launch, logger blokerede forsøg |
| `AppLaunchService` | Alle app-starts går gennem `LockdownService` |
| `DeveloperConsoleService` | Master auth, rate limit, session, audit |

### UI

| Komponent | Beskrivelse |
|-----------|-------------|
| Developer Console | `Ctrl+Shift+Alt+N` — master login + disabled escape-knapper |
| Nexus Settings | Viser lockdown status, allowed/blocked counts |

### Blokeringsbesked

> Denne funktion er låst af Ninja Nexus.

---

## 8. Fremtidige faser (POC 2/3 — IKKE implementeret)

Følgende må **aldrig** køres automatisk på udviklingsmaskiner i POC 1. Alt skal ligge bag scripts med `-DryRun` og safety checks.

| Fase | Handling | Risiko |
|------|----------|--------|
| POC 2 | Group Policy — disable Task Manager, Control Panel | Medium |
| POC 2 | AppLocker / WDAC whitelist | Medium |
| POC 2 | Bloker Windows-tastaturgenveje (Win+R, Win+X) | Medium |
| POC 3 | Winlogon `Shell` replacement → NexusShell.exe | **Høj** |
| POC 3 | Skjul Explorer ved opstart | **Høj** |
| POC 3 | Dedicated recovery-partition / USB | Medium |
| POC 3 | Lokal bruger-hardening (fjern admin fra almindelige brugere) | **Høj** |

### Planlagte scripts (stub — oprettes i fase 2+)

```
scripts/lockdown/
  apply-gpo-lockdown.ps1      -DryRun -WhatIf
  disable-task-manager.ps1    -DryRun
  set-winlogon-shell.ps1      -DryRun   # KRÆVER eksplicit -Force og recovery-plan
scripts/recovery/
  restore-explorer-shell.ps1  -DryRun
  disable-lockdown.ps1        -DryRun
  emergency-unlock.ps1        -DryRun
```

**Winlogon shell replacement** kræver:

1. Verificeret recovery USB eller Safe Mode-procedure
2. Master Developer testet recovery
3. Signeret Nexus Shell binary
4. Rollback-script testet på VM — aldrig først på dev-maskine

---

## 9. Test (POC 1)

```powershell
# Terminal 1
cd source/nexus-identity/NexusIdentity.Api
dotnet run

# Terminal 2
cd source/nexus-shell/NexusShell
dotnet run -- --overlay
```

| Test | Forventet resultat |
|------|-------------------|
| Login | Virker med `user@nexus.local` |
| Notepad / Calculator | Starter (allowed) |
| Paint | Blokeres (ikke i allowedApps) |
| File Explorer / CMD / PowerShell via launcher | Blokeres med Nexus-besked |
| Ctrl+Shift+Alt+N | Åbner Developer Console |
| Master login (`admin@nexus.local`) | Godkendes via Identity |
| Windows escape-knapper | Disabled in POC for safety |
| Indstillinger (dock / top bar) | Viser lockdown status |
| Windows desktop direkte | Stadig tilgængelig udenfor Shell (forventet i POC 1) |

---

## 10. Kendte risici (POC 1)

| Risiko | Beskrivelse | Mitigation |
|--------|-------------|------------|
| Shell-only lockdown | Bruger kan stadig Alt+Tab til Explorer, Win-tast, etc. | POC 2/3 platform-lockdown |
| Config tampering | Lokal JSON kan redigeres af admin-bruger | Signeret config + Agent (fase 2) |
| In-memory audit | Audit log forsvinder ved genstart | Persistent audit service (fase 2) |
| Overlay mode | `--overlay` lader Windows være synlig bag Shell | Kun til udvikling; produktion = full shell |
| Developer chord | Key chord kan opdages | Skjult aktivering + MFA (fase 2) |

---

## Referencer

- Shell README: [source/nexus-shell/README.md](../source/nexus-shell/README.md)
- Lockdown config: [lockdown.poc.json](../source/nexus-shell/NexusShell/config/lockdown.poc.json)
- Developer config: [developer.poc.json](../source/nexus-shell/NexusShell/config/developer.poc.json)
