Riskanalys aktuella inställningar

  • LXC container körs som privilegierad
  • lxc.cgroup2.devices.allow: c 226:* rwm
  • lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir

⚠️ Säkerhetskonsekvens (viktigt)

Din CT 102 är i praktiken:

❗ En VM utan hypervisor-skydd.

Om den blir komprometterad → kan hosten komprometteras.

Det är ibland motiverat (GPU passthrough, hårdvarunära AI, specialdrivrutiner), men det är bra att vara medveten om.

👉 Det är inte privilege-nivån som gör skillnaden — det är vilka namespaces / mounts / cgroups som är aktiva.

Det här händer oftast när containern har:

  • full /proc och /sys mountade (rw eller utan filtrering)
  • lxc.apparmor.profile avstängt eller satt till unconfined
  • lxc.mount.auto = proc:rw sys:rw
  • saknar korrekt cgroup-begränsning
  • körs med nesting=1 och får host-namespaces

🟢 Säker nivå att sikta på

InställningVärde
privilegedja (om GPU behövs)
apparmordefault
deviceswhitelist
nestingoff
extra mountsinga
resurslimitja

⚠️Viktigt

Privileged + GPU + Docker = hög risk.

Men privileged + inga extra mounts + devices begränsade + AppArmor = rimligt säker kompromiss.

✅ Sammanfattning

Ja — du kan göra CT 102 betydligt säkrare utan att slå av privileged:

  1. Begränsa devices (viktigast)
  2. Slå på AppArmor igen
  3. Stäng nesting
  4. Ta bort onödiga mounts
  5. Sätt resursgränser

🧩 6. Varför just LLM-containern?

Vanliga orsaker:

  • GPU passthrough kräver privileged
  • /dev/dri är mountad manuellt
  • Någon guide rekommenderade unconfined för AI
  • Du skapade den tidigt innan standard ändrade

LXC setup och härdning av system

🔐 

2. Hårdning – steg för steg

Steg 1 — Begränsa devices (största vinsten)

Tillåt bara nödvändiga devices, istället för alla:

pct stop 102
pct set 102 --lxc.cgroup2.devices.allow "c 226:* rwm" # GPU (/dev/dri)
pct set 102 --lxc.cgroup2.devices.allow "c 195:* rwm" # NVIDIA om tillämpligt
pct set 102 --lxc.cgroup2.devices.allow "c 1:3 rwm" # /dev/null
pct set 102 --lxc.cgroup2.devices.allow "c 1:5 rwm" # /dev/zero
pct set 102 --lxc.cgroup2.devices.allow "c 1:7 rwm" # /dev/full
pct set 102 --lxc.cgroup2.devices.allow "c 5:0 rwm" # /dev/tty
pct start 102

(Anpassa efter vad den faktiskt behöver)


Steg 2 — Lås AppArmor istället för unconfined


Steg 3 — Stäng nesting om ej nödvändigt


Steg 4 — Ta bort onödiga mounts


Steg 5 — Begränsa resurser

Grafikkort

root@LLM:/home# sudo lshw -C display
*-display UNCLAIMED
description: VGA compatible controller
product: Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0
bus info: pci@0000:01:00.0
version: e7
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi vga_controller cap_list
configuration: latency=0
resources: iomemory:400-3ff iomemory:420-41f memory:4000000000-41ffffffff memory:4200000000-42001fffff ioport:3000(size=256) memory:98800000-9883ffff memory:98840000-9885ffff


*-display
description: VGA compatible controller
product: Arrow Lake-P [Intel Graphics]
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
logical name: fb0
version: 03
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=i915 latency=0 resolution=720,480
resources: iomemory:620-61f iomemory:420-41f irq:249 memory