Virtualization Agent Install
Virtualization Agent installation
Purpose
Install an enforcement-capable Agent on a KVM/libvirt host. This unit may drop traffic. Do not install it as a drop engine on a shared hosting node; use the Hosting Agent there.
Audience
Hypervisor operators.
Edition
SHARED runtime. Enterprise systemd zwall-agent.service. Community: scripts/setup.sh Agent Only, or bin/agent -config ….
Status
SUPPORTED. Kernel minimum is not a single certified number. UID/GID filtering is not a customer contract. Edge mode is not a public certified product.
Prerequisites
- Manager ready and reachable
- Root on the KVM host
- eBPF objects
firewall.oandfirewall_egress.oplus checksum manifest - libvirt if you need VM inventory
- Pre-register/create completed (Enrollment)
Required permissions
Root to run the unit. Admin to enroll and assign rules.
Dependencies
XDP/TC. Example YAML ebpf.min_kernel_version: "5.8.0" with strict_kernel_version_check: true. Community README also mentions Linux 4.15+ (5.4+ recommended). This page does not pick one as certified.
Configuration
Unit zwall-agent.service:
Scroll sideways to see the full table. Use the arrow keys when focused.
| Item | Value |
|---|---|
| Description | Zwall Virtualization Security Agent |
| User | root |
| ExecStart | /opt/zcs/bin/zwall-agent --config /etc/zcs/agent.yml |
| Restart | on-failure, 10s |
| TimeoutStartSec / TimeoutStopSec | 60 / 30 |
| StateDirectory | zcs |
| BPF | ReadWritePaths=... /sys/fs/bpf |
| Capabilities | CAP_DAC_READ_SEARCH CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SYS_ADMIN CAP_SYS_RESOURCE |
| AmbientCapabilities | empty |
| KillSignal | SIGTERM |
Copy configs/agent.example.yml and set:
server.manager_url(examplehttps://manager.example.com:8443)server.verify_tls: trueagent.hostnameagent.protection_model: virtualizationunless you have a written exception — the examplehybridcan mislead (the hybrid example is for a different profile)agent.operating_mode: host(notedge)agent.vm_bridge_nameif you use the VM bridge discovery path (exampleviifbr0is not mandatory)ebpf.program_path/tc_program_pathebpf.verify_artifact_integrity: trueebpf.enable_uid_gid_filtering: falseuntil a stable customer contract is published (example enables it — do not treat as supported)virtualization.enabled: true,platform: kvm,libvirt.uri: qemu:///systemfor inventory
Do not enable allow_unsigned_artifacts except break-glass. Do not enable hosting.enabled on this unit.
Procedure
- Install Agent binary and eBPF objects (
firewall.o,firewall_egress.o) from the admitted release (Enterprise) orgo build+ebpf/make(Community). - Write
/etc/zcs/agent.yml(Enterprise example path) or the Community path you actually use. Do not copy the stale/etc/zwall/agent.ymlstring if you see it in messages. - Enroll (Agent enrollment) —
AGENT_TOKENonce, YAML token empty. systemctl enable --now zwall-agent- Confirm the Agent is root: non-hosting Agent fatals otherwise.
Community Agent-only path: scripts/setup.sh Agent Only mode, or run the built bin/agent -config ....
zwallctl start / stop print not implemented. Use systemd.
Verification
See Virtualization verification.
- Agent appears in
GET /api/v1/agents/ console GET /api/v1/virtualization/vmsand/interfacesreturn inventory after libvirt discovery- XDP/TC attach:
GET /api/v1/dashboard/ebpf-health(Enterprise admin) - A test rule in testing mode does not drop; an explicit block on this node does after testing mode is disabled when intended
- Assigning the same rule to a Hosting Agent returns 409 — that is correct
Expected result
Root Virtualization Agent online, programs attached, policy assignable. Packet drops only from this profile’s maps, not from Hosting observe.
Failure modes
Scroll sideways to see the full table. Use the arrow keys when focused.
| Symptom | Action |
|---|---|
| Exits immediately | journal; kernel preflight; not root |
| No VMs | enable virtualization; libvirt URI |
| Attach fail | XDP/TC; controlled generic |
| 409 on rules | you targeted Hosting |
| UID/GID errors | disable filtering |
Troubleshooting
Virtualization troubleshooting, eBPF, Enforcement.
Security considerations
Keep TLS verify and artifact integrity on. Do not mix this unit onto a customer-shared hosting node.
Limitations
Unresolved: kernel matrix, UID/GID contract, hybrid example, edge mode, remote start/stop, stale path string.
Related documentation
- Enforcement
- XDP/TC
- KVM/libvirt
- Configuration
- Hosting install (do not mix)