This release includes 3 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+9 more
Affected surfaces
Summary
AI summaryUpdates β¨ Highlights, π§ Also in 3.0, and π§ SMTP intelligence across a mixed release.
Full changelog
Knock-Knock 3.0.0
3.0 turns Knock-Knock from a fixed multi-protocol honeypot into an extensible platform.
Every protocol is now a self-contained, declarative module, and ships a batch of intel and
deployment upgrades on top of it.
β¨ Highlights
- π§© Protocol extensibility framework β add a honeypot protocol as a single self-contained
module (protocols/*.py), no more hand-editing the monitor, web app, DB layer, and dashboard. - π‘ 8 β 13 protocols β all originals back-ported onto the framework, plus 5 new protocols
spanning IoT messaging, industrial control, and infrastructure (MQTT, Node-RED, Modbus, S7, SNMP),
proof the framework reaches well beyond the classic login-service honeypots. - π³ One-line Docker on Linux β host networking is the new default: no port list to keep in
sync withENABLED_PROTOCOLS, and self-redaction configures itself. Setup is one.envline. - π‘οΈ IP blocklist as a first-class threat feed β a
/blocklistconsumer guide, hourly feeds,
and download analytics. - π§ SMTP body capture + self-redaction β full message bodies, deduplicated and scrubbed of
your server's own identity (even inside base64/MIME).
π§© The extensibility framework (the heart of 3.0)
Adding a protocol used to mean touching the monitor, the web app, the storage layer, and the
dashboard. Now a protocol declares everything about itself β ports, capture, storage, and display β
through one ProtocolDefinition, and the framework wires up the rest (protocol_api.py,
protocols/registry.py). See docs/HOW_TO_ADD_A_PROTOCOL.md.
- All 8 built-in protocols (SSH, Telnet, FTP, RDP, SMB, SIP, HTTP, SMTP) run on the framework β
proof it carries the originals, not just new work. - 5 new industrial/IoT/OT protocols β MQTT, Node-RED, Modbus, S7, SNMP β built on the
framework, showing it extends cleanly to new domains. Enable any of them viaENABLED_PROTOCOLS. - User-overridable per-protocol display β choose which feed/detail fields show and which layout
a protocol uses, for built-ins and anything you add.
π³ Drop-dead-simple Docker on Linux
Bridge mode used to require editing docker-compose.override.yml to publish every honeypot port
(kept in sync with ENABLED_PROTOCOLS) and hand-setting REDACT_SELF_IPS/DEFAULT_HOSTNAME.
The new docker-compose.host.yml β active by default via a single COMPOSE_FILE= line in .env β
removes all of it: honeypots bind host ports directly (no port list to maintain) and
self-redaction discovers the host's own identity automatically. Setup is one line. It's also the
reliable choice for UDP/SIP, where bridge NAT can mask the real attacker source IP. Bridge
networking stays as the portable fallback for Docker Desktop / macOS / Windows.
π‘οΈ IP blocklist, promoted to a first-class feed
The public blocklist has existed since v1; 3.0 surfaces it properly, via a dedicated /blocklist
consumer guide (CSF / CrowdSec / ipset / nftables / pfSense recipes), hourly regeneration, 365-day
and 30-day feeds, and download analytics.
π§ SMTP intelligence
- Body capture, dedup & self-redaction β bodies captured in full (up to 64 KB), stored
deduplicated (smtp_body_intel, one row per distinct body), with your own IP/host/domain removed
even when hidden inside base64 / quoted-printable / MIME parts. The live feed shows a decoded preview. - Opt-in header capture (
SMTP_SAVE_HEADERS=true) β a DB-only analysis corpus for future
campaign/header intel; off by default.
π§ Also in 3.0
- HTTP exploit classifier grown to ~250 named signatures with a regression suite.
- Per-knock detail view β right-click / long-press any live-feed entry for the full record.
- "Internet Background Radiation" explainer
- Shared per-IP throttling across all protocols; hardened, CI-tested Docker image.
β¬οΈ Upgrading
3.0 has a one-time database migration (SMTP body storage). Run updatedb.py before restarting β
it backs up the DB first and is idempotent. Full steps in INSTALL.md β Upgrading from 1.x or 2.x.
- Systemd:
git pullβpip install -r requirements.txtβ
python extras/db-migrations/updatedb.pyβ./restart.sh. - Docker:
git pullβdocker compose pullβ runupdatedb.pyin the new image
(docker compose run --rm --no-deps honeypot-monitor python extras/db-migrations/updatedb.py) β
docker compose up -d. β οΈ Agit pullalone won't update a Docker install β the app is baked
into the image, so you must pull the new image. - New Docker default is host networking (Linux). Existing bridge installs keep working unchanged
(their.envhas noCOMPOSE_FILEline); to switch, addCOMPOSE_FILE=docker-compose.host.yml
and ensure real sshd is off port 22.
Full changelog: CHANGELOG.md Β· Compare: v2.0.1...v3.0.0
Breaking Changes
- Database schema migration required for SMTP body storage (run updatedb.py before upgrade).
- Default Docker networking changes to host mode on Linux; bridge mode remains optional.
- Protocol implementation now requires a declarative module (`ProtocolDefinition`) instead of handβediting monitor, web app, DB layer, and dashboard.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About djkurlander/knock-knock
All releases βBeta — feedback welcome: [email protected]