How cella's three-layer security model works together to isolate and protect containers.
cella combines three independent security mechanisms. Each layer catches different types of threats:
┌──────────────────────────────────────────┐ │ Layer 3: Egress Control │ │ (nftables + domain allowlist + DNS) │ ├──────────────────────────────────────────┤ │ Layer 2: AppArmor │ │ (filesystem + capability restrictions) │ ├──────────────────────────────────────────┤ │ Layer 1: Seccomp │ │ (syscall filtering at kernel level) │ └──────────────────────────────────────────┘
Seccomp operates at the kernel level, filtering system calls before they execute. This is the deepest layer of defense.
Example threat blocked: A compromised process trying to ptrace another process, or mount a filesystem to escalate privileges.
AppArmor restricts what files, network operations, and capabilities a container can access, based on a profile loaded into the kernel.
Example threat blocked: A container trying to read /etc/shadow on the host filesystem.
cella's transparent proxy + nftables provides network-level control:
Example threat blocked: A compromised container trying to exfiltrate data to an unknown external server.
| Attack | Seccomp | AppArmor | Egress |
|---|---|---|---|
| Privilege escalation via ptrace | ✅ Blocked | — | — |
| Read host /etc/passwd | — | ✅ Blocked | — |
| Data exfiltration to attacker.com | — | — | ✅ Blocked |
| Load kernel module | ✅ Blocked | ✅ Blocked | — |
| DNS tunneling | — | — | ✅ DNS Monitor |
Press P in cella to see all three layers in a single view. The Policy panel shows per-container:
raw.lxc seccomp paths