FireFighter — L7 WAF & Next-Gen Ingress
Enterprise security appliance featuring the Coraza WAF engine, OWASP CRS protection, real-time IP reputation scoring, and high-speed NFTables kernel packet drops.
3-Tier Distributed Architecture
Incoming HTTPS requests flow through the Layer 7 Coraza WAF proxy (`gateway`). Threat metrics stream to `detector` for IP reputation scoring, which commands `firewalld` to enforce kernel-level NFTables drops.
Enterprise Security Capabilities
FireFighter Suite Components
A modular set of Go binaries working together to deliver end-to-end web defense and ingress routing.
gateway (ffwaf)
TLS-terminating reverse proxy with SNI, Coraza WAF engine, rate limiting, mTLS, and ACME auto-certs.
ffsvc
Central management service exposing gRPC/REST APIs, SQLite persistence, embedded NATS, and SSE event streaming.
detector (ffdetect)
Unified threat detector and analyzer with IP reputation scoring, threat intel feed sync, and malicious UA matching.
firewalld
NFTables firewall daemon syncing ffsvc bans into Linux kernel sets for wire-speed packet filtering.
loglistener
High-throughput web server log streaming daemon listening on Unix domain sockets.
firefighter-ingress
Native Kubernetes Ingress Controller mapping K8s Ingress and Custom Resources into FireFighter WAF instances.
FireFighter vs. Traditional Firewall & Cloud WAF
Combining the deep application context of a Layer 7 WAF with the wire-speed packet rejection of a Layer 3/4 kernel firewall.
| Capability | FireFighter | Cloud WAF | Layer 3/4 Firewall |
|---|---|---|---|
| Layer 7 Inspection (WAF) | Coraza Engine (OWASP CRS) | ||
| Kernel-Level Packet Drop (Layer 3/4) | NFTables Kernel Sync | ||
| Real-Time IP Reputation Scoring | Automated (bbolt Engine) | Paid add-on | |
| Kubernetes Native Ingress Controller | firefighter-ingress CRD | Requires ingress bridge | |
| On-Premises & Air-Gapped Deployment | |||
| HTTP/3 & QUIC Support | |||
| Zero Third-Party Data Exfiltration |
Declarative Configuration & Management
Configure vhosts, WAF rules, and rate limits via TOML config files or manage live bans using the ffctl CLI.
[general]
database = "firefighter_svc.db"
log_level = "info"
[service]
grpc_listen_address = ":50051"
nft_managed_table_name = "firefighter_svc_rules"
nft_ip_set_name = "ff_svc_ip_blacklist"
default_rule_ttl = "24h"
[waf]
engine_enabled = true
paranoia_level = 2
owasp_crs_path = "/etc/firefighter/coraza-crs"
[[vhosts]]
domain = "app.example.com"
upstream = "http://localhost:8080"
rate_limit_rps = 100
mtls_required = false