Documentation

Overview

What SecureGuard is, what it is made of, and the order to read this in.

SecureGuard is a next-generation firewall and unified threat management appliance. It runs on FreeBSD with pf as the packet filter, and its distinguishing property is that the whole system is described by a single canonical configuration document which every daemon's native config is rendered from.

What it is made of

The appliance does not reimplement routing, IKE, DHCP, DNS or intrusion detection. It orchestrates components that are already good at those jobs, and owns the model above them.

FunctionComponentConfigured by
Packet filter, NAT, statepf (FreeBSD base)rendered pf.conf
Connection-state syncpfsync (base)rendered rc.conf
Dynamic routingFRR (OSPF, BGP)rendered frr.conf
IPSec / IKEstrongSwanrendered ipsec.conf
WireGuardwireguard-toolsrendered interface config
DHCPKearendered kea-dhcp4 JSON
DNS resolverUnboundrendered unbound.conf
IDS / IPSSuricatarendered suricata.yaml + thresholds
Web proxy / filteringSquid, ClamAVrendered proxy + ICAP config
Shaping and throttlingdummynet (base)rendered QoS pipes
Remote-access VPNOpenVPN, mpd5rendered client-VPN config
Monitoringnet-snmprendered snmpd.conf

SecureGuard's own daemons are the control plane: configd owns the canonical document and the commit pipeline, apid exposes the management API the console talks to, flowd collects flow telemetry, and aid scores it and enforces the graduated response. had is the HA state machine — tested and shipping on Business+. mgmtd is the outbound agent for the free Orchestrator download, not a Business+ license feature. Status lines match HA and central management.

The one idea worth understanding first

Everything you do in the console is an edit to one document. Nothing is written directly to a daemon. On commit, the document is validated for referential integrity, each renderer turns it into that daemon's native text as a pure function, and only then does an applier write files and reload services — atomically.

That is why several things you would expect to be separate features are not: a preview is a render with no apply; a backup is a copy of a revision; an export for review is a revision, because a revision is readable JSON; a rollback is a revision id; and HA config sync is sending those revisions between two nodes.

Read this next: Architecture & commits explains the pipeline, the confirmed-commit window and the revision store.

Where to start