Skip to content

Commit ec7afa4

Browse files
committed
chore: update changelog for upcoming v0.5.0 features and add roadmap document; remove unused hero assets
1 parent 757646a commit ec7afa4

File tree

5 files changed

+371
-316
lines changed

5 files changed

+371
-316
lines changed

CHANGELOG.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,98 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
135135

136136
---
137137

138+
## [0.5.0] — Unreleased — Observability & Continuous Compliance
139+
140+
### Planned
141+
142+
#### P0 — Must Ship
143+
- `hardbox watch` — daemon mode; runs audit on a configurable interval, writes JSON results to disk, detects regressions, exits non-zero when score drops
144+
- Webhook / alerting — generic HTTP webhooks and built-in Slack adapter; fires on regression or new `critical` / `high` finding; configurable per-severity rules in `config.yaml`
145+
- Fleet overview in `hardbox serve` — when fleet audit JSON reports are present, the dashboard aggregates scores per host, highlights regressions across runs, and shows a per-host compliance timeline
146+
147+
#### P1 — Should Ship
148+
- Profile inheritance — `extends: <profile>` key in YAML profiles; inherits all settings from the base profile and overrides only declared keys; eliminates duplication across similar profiles
149+
- Trend history — `hardbox serve` renders a compliance score sparkline over time using all JSON reports found in the reports directory
150+
151+
#### P2 — Nice to Have
152+
- SARIF export — `--format sarif` output for integration with GitHub Advanced Security code scanning and third-party SIEMs; findings map to SARIF `result` objects with rule metadata
153+
154+
---
155+
156+
## [0.6.0] — Unreleased — Deep Coverage I
157+
158+
### Planned
159+
160+
#### New modules
161+
- `boot` — GRUB2 password protection, Secure Boot state, `/boot` directory permissions, bootloader config integrity
162+
- `storage` — LUKS/dm-crypt encryption on sensitive partitions, encrypted swap, `/etc/crypttab` validation, plain-text swap detection
163+
- `integrity` — AIDE or Tripwire installed and initialised, integrity database present, cron/systemd verification job configured, last run result
164+
- `malware` — rkhunter and/or chkrootkit installed and clean, suspicious process detection, world-writable paths in `PATH`, `/tmp` noexec enforcement
165+
- `shells``TMOUT` set in `/etc/profile.d/`, `HISTSIZE`/`HISTFILESIZE` limited, shell timeout in `/etc/bash.bashrc`, `.bashrc`/`.profile` audit for unexpected entries
166+
- `processes` — process accounting (`acct`/`psacct`) enabled, `ulimits` configured in `/etc/security/limits.conf`, core dumps disabled system-wide
167+
168+
**Target after v0.6:** ~240 checks across 21 modules — basic parity with Lynis category coverage.
169+
170+
---
171+
172+
## [0.7.0] — Unreleased — Deep Coverage II & Agent
173+
174+
### Planned
175+
176+
#### New modules
177+
- `hardware` — USB mass storage lockdown via `usbguard`, Bluetooth disabled, FireWire/Thunderbolt DMA protection, kernel module blacklist for unused bus protocols
178+
- `nameservices``/etc/hosts` integrity, `nsswitch.conf` review, DNSSEC validation enabled, stub resolver configuration, no plaintext DNS on port 53 outbound
179+
- `webserver` — Apache/nginx hardening: server tokens hidden, directory listing disabled, TLS 1.2+ enforced, security headers present (`X-Frame-Options`, `HSTS`, `CSP`)
180+
- `databases` — MySQL/MariaDB and PostgreSQL: remote root login disabled, test databases removed, anonymous users removed, password authentication enforced
181+
182+
#### Agent
183+
- `hardbox agent` — lightweight daemon wrapping `hardbox watch`; ships audit results as signed JSON to a configurable HTTPS endpoint; basis for the hosted SaaS platform; OSS and self-hosteable
184+
185+
#### Coverage
186+
- Package integrity — `debsums` (Debian/Ubuntu) and `rpm -Va` (RHEL/Rocky) verification of installed binaries against package manager checksums
187+
188+
**Target after v0.7:** ~300 checks across 25 modules — full Lynis category parity.
189+
190+
---
191+
192+
## [0.8.0] — Unreleased — SaaS Foundation
193+
194+
### Planned
195+
196+
- Backend API — multi-tenant report ingest service; Go + PostgreSQL; receives signed JSON from `hardbox agent`; per-organisation data isolation
197+
- Auth — OAuth2/OIDC login (GitHub, Google); JWT session tokens; account and organisation management
198+
- Cloud dashboard — hosted version of `hardbox serve` backed by the API; fleet overview, per-host drill-down, trend graphs, alert feed
199+
- Multi-host management — group hosts by tags, apply profiles per group, bulk audit triggers from the dashboard
200+
201+
---
202+
203+
## [0.9.0] — Unreleased — Enterprise & Polish
204+
205+
### Planned
206+
207+
- SSO / SAML 2.0 — Okta, Azure AD, Google Workspace integration
208+
- RBAC — Admin, Analyst, Read-only roles scoped per organisation and per host group
209+
- Audit log — immutable append-only record of every change: who applied what, when, on which host, with before/after values
210+
- Billing — Starter / Pro / Business subscription plans; Stripe integration; usage metering by host count
211+
- Compliance PDF reports — auto-generated executive report per framework (CIS, PCI-DSS, HIPAA, NIST SP 800-53) with evidence from real audit data
212+
- Custom checks — define and ship new checks via YAML without writing Go; loaded by the engine at startup alongside built-in modules
213+
214+
---
215+
216+
## [1.0.0] — Unreleased — Production Ready GA
217+
218+
### Planned
219+
220+
- 300+ checks across 25+ modules — full Lynis parity and beyond
221+
- 12+ compliance profiles covering CIS, NIST, STIG, PCI-DSS, HIPAA, ISO 27001, and all three major clouds
222+
- SaaS platform GA with active billing and SLA
223+
- Enterprise tier: SSO, RBAC, audit log, contractual support
224+
- Plugin SDK v1 — stable public API, frozen until v2.0
225+
- Native packages — `.deb` and `.rpm` via GoReleaser in addition to tarballs
226+
- Full documentation, migration guides, and operator runbooks
227+
228+
---
229+
138230
[0.4.0]: https://github.com/jackby03/hardbox/compare/v0.1.0...v0.4.0
139231
[0.1.0]: https://github.com/jackby03/hardbox/releases/tag/v0.1.0
140232
[Unreleased]: https://github.com/jackby03/hardbox/compare/v0.4.0...HEAD

README.md

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<div align="center">
22

3-
<img src="docs/hero.png" alt="hardbox hero banner" width="100%" />
4-
53
**The definitive Linux hardening toolkit for IT, Cloud, Infrastructure, and Security teams.**
64

75
[![Pre-release](https://img.shields.io/github/v/release/jackby03/hardbox?display_name=tag&include_prereleases&sort=semver&style=flat-square&label=pre-release&color=3b82f6)](https://github.com/jackby03/hardbox/releases)
@@ -240,11 +238,51 @@ hardbox serve --reports-dir ./reports
240238
- [x] `hardbox diff` — audit comparison reports ([#124](https://github.com/jackby03/hardbox/issues/124))
241239
- [x] `hardbox serve` — lightweight web dashboard ([#125](https://github.com/jackby03/hardbox/issues/125))
242240

243-
### v1.0 — Production Ready
244-
- [ ] Full compliance framework coverage
245-
- [ ] Remote fleet management UI
246-
- [ ] Enterprise profile management
247-
- [ ] SaaS / hosted dashboard (optional)
241+
### v0.5 — Observability & Continuous Compliance
242+
- [ ] `hardbox watch` — daemon mode, audit on schedule, detect regressions automatically
243+
- [ ] Webhook / alerting — Slack and HTTP webhooks on regression or critical finding
244+
- [ ] Fleet overview in `hardbox serve` — aggregate multi-host scores, trends, regressions
245+
- [ ] Profile inheritance — `extends: cis-level1` in YAML, override only what differs
246+
- [ ] Trend history — compliance score over time using historical JSON reports
247+
- [ ] SARIF export — `--format sarif` for GitHub Advanced Security and SIEM integration
248+
249+
### v0.6 — Deep Coverage I
250+
- [ ] `boot` module — GRUB password, Secure Boot, `/boot` permissions
251+
- [ ] `storage` module — LUKS/dm-crypt, encrypted swap, `/etc/crypttab`
252+
- [ ] `integrity` module — AIDE/Tripwire install, baseline generation, cron verification
253+
- [ ] `malware` module — rkhunter/chkrootkit, suspicious processes, `/tmp` noexec
254+
- [ ] `shells` module — `TMOUT`, `HISTSIZE`, shell timeout, `.bashrc`/`.profile` audit
255+
- [ ] `processes` module — process accounting, `ulimits`, `/etc/security/limits.conf`
256+
257+
### v0.7 — Deep Coverage II & Agent
258+
- [ ] `hardware` module — USB lockdown (usbguard), Bluetooth/FireWire/Thunderbolt DMA
259+
- [ ] `nameservices` module — `/etc/hosts`, `nsswitch.conf`, DNSSEC, resolver validation
260+
- [ ] `webserver` module — Apache/nginx hardening: tokens, headers, TLS, directory listing
261+
- [ ] `databases` module — MySQL/PostgreSQL: remote root, test DBs, anonymous users
262+
- [ ] `hardbox agent` — lightweight telemetry agent reporting JSON to configurable URL
263+
- [ ] Package integrity — `debsums` / `rpm -Va` binary verification
264+
265+
### v0.8 — SaaS Foundation
266+
- [ ] Backend API — multi-tenant report ingest, PostgreSQL, Go service
267+
- [ ] Auth — OAuth2/OIDC (GitHub, Google), JWT sessions
268+
- [ ] Cloud dashboard — hosted fleet view, trends, alerts powered by agent reports
269+
- [ ] Multi-host management — group hosts by tag, apply profiles per group
270+
271+
### v0.9 — Enterprise & Polish
272+
- [ ] SSO / SAML 2.0 — Okta, Azure AD, Google Workspace
273+
- [ ] RBAC — Admin, Analyst, Read-only roles per org and host group
274+
- [ ] Audit log — immutable record of who applied what, when, on which host
275+
- [ ] Billing — Starter / Pro / Business plans, Stripe integration
276+
- [ ] Compliance PDF reports — executive reports per framework with evidence
277+
- [ ] Custom checks — define checks via YAML without writing Go
278+
279+
### v1.0 — Production Ready GA
280+
- [ ] 300+ checks across 21+ modules — full Lynis parity and beyond
281+
- [ ] SaaS GA with active billing
282+
- [ ] Enterprise: SSO, RBAC, audit log, SLA
283+
- [ ] Plugin SDK v1 API frozen
284+
- [ ] `.deb` / `.rpm` native packages via GoReleaser
285+
- [ ] Full documentation and migration guides
248286

249287
---
250288

docs/ROADMAP.md

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
# hardbox Roadmap — v0.5 → v1.0
2+
3+
This document describes the planned evolution of hardbox from its current state (v0.4) through general availability (v1.0). It covers technical scope, new modules, SaaS architecture, and the commercial model that funds continued development.
4+
5+
---
6+
7+
## Philosophy
8+
9+
hardbox will always be **100% free and open source** for self-hosted use. Every hardening module, compliance profile, CLI command, and the Plugin SDK are OSS — no features locked behind a paywall.
10+
11+
The commercial layer is a **hosted service** (hardbox Cloud) that provides the infrastructure, dashboard, and enterprise controls on top of the same OSS engine. The distinction is _where the platform runs and who maintains it_ — not which features you can access.
12+
13+
---
14+
15+
## Where we are — v0.4
16+
17+
| Category | Count |
18+
|---|---|
19+
| Hardening modules | 15 |
20+
| Compliance profiles | 12 |
21+
| CLI commands | 7 (`audit`, `apply`, `rollback`, `diff`, `fleet`, `plugin`, `serve`) |
22+
| Checks implemented | ~156 |
23+
| Frameworks mapped | CIS L1/L2, NIST SP 800-53, STIG, PCI-DSS, HIPAA, ISO 27001, cloud-aws/gcp/azure |
24+
25+
---
26+
27+
## v0.5 — Observability & Continuous Compliance
28+
29+
**Theme:** hardbox transitions from _reactive_ (run when called) to _proactive_ (detect regressions automatically).
30+
This version also lays the technical foundation for the future SaaS agent.
31+
32+
### P0 — Must Ship
33+
34+
**`hardbox watch`**
35+
Daemon mode. Runs a full audit on a configurable interval, writes JSON results to a directory, and exits non-zero when the compliance score drops compared to the previous run. This is the core of continuous compliance monitoring and the basis for the future telemetry agent.
36+
37+
```bash
38+
hardbox watch --profile production --interval 6h --output /var/lib/hardbox/reports/
39+
```
40+
41+
**Webhook / alerting**
42+
Fires an HTTP POST when a regression or new `critical`/`high` finding is detected. Includes a built-in Slack adapter. Rules are configurable per severity and per module in `config.yaml`.
43+
44+
```yaml
45+
notifications:
46+
webhook: https://hooks.slack.com/services/...
47+
on: [regression, critical_finding]
48+
modules: [ssh, firewall, users]
49+
```
50+
51+
**Fleet overview in `hardbox serve`**
52+
When fleet audit JSON files are present in the reports directory, the dashboard renders an aggregate view: compliance score per host, regressions between runs, per-host timeline. No backend required — reads from local files.
53+
54+
### P1 — Should Ship
55+
56+
**Profile inheritance**
57+
`extends` key in YAML profiles. Inherits all settings from a base profile and overrides only what is declared. Eliminates copy-paste between similar profiles and enables org-specific customisation without forking the built-in profiles.
58+
59+
```yaml
60+
# configs/profiles/my-production.yaml
61+
name: my-production
62+
extends: production
63+
modules:
64+
ssh:
65+
allow_users: [deploy, ops, monitoring]
66+
users:
67+
pass_max_days: 60
68+
```
69+
70+
**Trend history in `hardbox serve`**
71+
The dashboard renders a compliance score sparkline over time by reading all JSON reports in the configured directory, ordered by timestamp. No database required.
72+
73+
### P2 — Nice to Have
74+
75+
**SARIF export**
76+
`--format sarif` produces a SARIF 2.1.0 document compatible with GitHub Advanced Security code scanning and major SIEMs. Each finding maps to a SARIF `result` with rule metadata, severity, and remediation guidance.
77+
78+
---
79+
80+
## v0.6 — Deep Coverage I
81+
82+
**Theme:** Close the most critical Lynis coverage gaps. Add modules for categories that hardbox does not yet cover.
83+
84+
| Module | Key Checks | Compliance |
85+
|---|---|---|
86+
| `boot` | GRUB2 password, Secure Boot state, `/boot` permissions, bootloader config integrity | CIS 1.4, STIG V-238200 |
87+
| `storage` | LUKS/dm-crypt on sensitive partitions, encrypted swap, `/etc/crypttab`, plain-text swap detection | CIS 1.1, NIST SC-28 |
88+
| `integrity` | AIDE/Tripwire installed and initialised, integrity DB present, verification cron/timer configured | CIS 1.3, NIST SI-7 |
89+
| `malware` | rkhunter/chkrootkit installed and clean, suspicious processes, world-writable `PATH` entries | CIS — , NIST SI-3 |
90+
| `shells` | `TMOUT` in `/etc/profile.d/`, `HISTSIZE`/`HISTFILESIZE` limits, `.bashrc`/`.profile` audit | CIS 5.4.4, STIG |
91+
| `processes` | Process accounting enabled, `ulimits` in `/etc/security/limits.conf`, core dumps disabled | CIS 1.5, NIST AU-12 |
92+
93+
**Target after v0.6:** ~240 checks across 21 modules.
94+
95+
---
96+
97+
## v0.7 — Deep Coverage II & Agent
98+
99+
**Theme:** Complete Lynis category parity. Introduce the telemetry agent that bridges the OSS CLI to the future SaaS platform.
100+
101+
### New modules
102+
103+
| Module | Key Checks | Compliance |
104+
|---|---|---|
105+
| `hardware` | USB lockdown (usbguard), Bluetooth disabled, FireWire/Thunderbolt DMA protection | CIS 1.1.1, NIST SC-41 |
106+
| `nameservices` | `/etc/hosts` integrity, `nsswitch.conf` review, DNSSEC enabled, no plaintext DNS outbound | CIS 3.4, NIST SC-20 |
107+
| `webserver` | Server tokens hidden, directory listing disabled, TLS 1.2+ enforced, security headers | CIS — , NIST SC-8 |
108+
| `databases` | Remote root login, test databases, anonymous users, password auth enforced | CIS — , PCI-DSS 6.3 |
109+
110+
### hardbox agent
111+
112+
A lightweight daemon that wraps `hardbox watch` and ships signed JSON audit results to a configurable HTTPS endpoint. This is the OSS component of the SaaS architecture — self-hosteable, with the endpoint defaulting to `localhost` for users who run their own backend.
113+
114+
```bash
115+
hardbox agent \
116+
--profile production \
117+
--interval 6h \
118+
--endpoint https://app.hardbox.io/ingest \
119+
--token $HARDBOX_TOKEN
120+
```
121+
122+
The agent is fully OSS. The endpoint it reports to can be hardbox Cloud, a self-hosted backend, or any compatible HTTP server.
123+
124+
### Package integrity
125+
126+
`debsums` (Debian/Ubuntu) and `rpm -Va` (RHEL/Rocky) — verifies installed binary checksums against the package manager database. Detects tampered system binaries.
127+
128+
**Target after v0.7:** ~300 checks across 25 modules — full Lynis category parity.
129+
130+
---
131+
132+
## v0.8 — SaaS Foundation
133+
134+
**Theme:** Minimum viable backend to support the hardbox Cloud offering. The OSS product remains fully functional without this.
135+
136+
### Components
137+
138+
**Backend API**
139+
Go service backed by PostgreSQL. Receives signed JSON reports from `hardbox agent`. Multi-tenant with per-organisation data isolation. Exposes a REST API consumed by the cloud dashboard.
140+
141+
**Auth**
142+
OAuth2/OIDC login via GitHub and Google. JWT session tokens. Organisation and member management.
143+
144+
**Cloud dashboard**
145+
Hosted version of `hardbox serve` powered by the backend API. Fleet overview, per-host drill-down, compliance score trends, alert feed, report download.
146+
147+
**Multi-host management**
148+
Group hosts by tag, apply profiles per group, trigger bulk audits from the dashboard, compare compliance posture across groups.
149+
150+
### Architecture
151+
152+
```
153+
[customer server] [hardbox Cloud]
154+
hardbox agent ──── HTTPS ──────▶ ingest API
155+
(OSS, any profile) PostgreSQL
156+
dashboard (React)
157+
alert engine
158+
report generator
159+
```
160+
161+
---
162+
163+
## v0.9 — Enterprise & Polish
164+
165+
**Theme:** Features that enterprise teams require before adoption. Billing and go-to-market readiness.
166+
167+
| Feature | Description |
168+
|---|---|
169+
| SSO / SAML 2.0 | Okta, Azure AD, Google Workspace integration |
170+
| RBAC | Admin, Analyst, Read-only roles per org and per host group |
171+
| Audit log | Immutable append-only record: who applied what, when, on which host |
172+
| Billing | Starter / Pro / Business plans; Stripe; metered by host count |
173+
| Compliance PDF reports | Auto-generated executive reports per framework with real audit evidence |
174+
| Custom checks (YAML) | Define new checks in YAML without writing Go; loaded by the engine at startup |
175+
176+
### Pricing model (planned)
177+
178+
| Plan | Price | Hosts | Key features |
179+
|---|---|---|---|
180+
| **OSS** | Free forever | Unlimited (self-hosted) | Full CLI, all modules, Plugin SDK |
181+
| **Cloud Starter** | ~$29 / mo | Up to 10 | Dashboard, alerts, 90-day history |
182+
| **Cloud Pro** | ~$99 / mo | Up to 50 | Fleet view, webhooks, PDF reports |
183+
| **Cloud Business** | ~$299 / mo | Unlimited | SSO, RBAC, SLA, audit log |
184+
| **Enterprise** | Contract | Unlimited | On-premise, dedicated support, custom profiles |
185+
186+
The value proposition is not locked features — it is **managed infrastructure, enterprise controls, and accountability**. Everything the CLI can do, you can do for free.
187+
188+
---
189+
190+
## v1.0 — Production Ready GA
191+
192+
**Theme:** General availability. Stable APIs, full documentation, active commercial offering.
193+
194+
### Completion criteria
195+
196+
| Criteria | Target |
197+
|---|---|
198+
| Checks | 300+ across 25+ modules |
199+
| Compliance profiles | 12+ (CIS, NIST, STIG, PCI-DSS, HIPAA, ISO 27001, cloud-aws/gcp/azure) |
200+
| Lynis parity | All Lynis audit categories covered |
201+
| SaaS | GA with active billing |
202+
| Enterprise | SSO, RBAC, audit log, contractual SLA |
203+
| Plugin SDK | v1 stable API — frozen until v2.0 |
204+
| Packages | `.deb`, `.rpm`, and tarballs via GoReleaser |
205+
| Docs | Full module reference, operator runbooks, migration guides |
206+
207+
---
208+
209+
## Module roadmap at a glance
210+
211+
| Version | New modules | Running total |
212+
|---|---|---|
213+
| v0.4 ✅ | `mount` | 15 modules, ~156 checks |
214+
| v0.5 | — (observability infra) | 15 modules, ~156 checks |
215+
| v0.6 | `boot`, `storage`, `integrity`, `malware`, `shells`, `processes` | 21 modules, ~240 checks |
216+
| v0.7 | `hardware`, `nameservices`, `webserver`, `databases` | 25 modules, ~300+ checks |
217+
| v1.0 | polish, gaps, community additions | 25+ modules, 300+ checks |
218+
219+
---
220+
221+
## Competitive position
222+
223+
| | Lynis | hardbox |
224+
|---|---|---|
225+
| License | GPL | MIT |
226+
| Remediation | Enterprise (paid) | **Always free** |
227+
| Multi-host | No | `hardbox fleet` |
228+
| CI/CD integration | Manual | Native (`diff`, SARIF, exit codes) |
229+
| Plugin system | No | Plugin SDK |
230+
| Cloud-native profiles | No | AWS, GCP, Azure |
231+
| SaaS option | No | v0.8+ |
232+
| Extensible via YAML | No | v0.9+ |
233+
234+
hardbox is not a Lynis clone. The audit engine is a starting point — the differentiator is **remediation, scale, and ecosystem**.

0 commit comments

Comments
 (0)