-
Hardline 0.6.0 Stable
released this
2026-10-29 02:57:07 +00:00 | 17 commits to main since this releaseAutomatic security updates, file-permission and mount checks, a local dashboard,
hardline fleetfor auditing many servers over SSH, review dates for accepted risks, and Prometheus metrics fromwatch.Released 2026-10-29.
Added
- Automatic updates (phase 3):
updates-unattended-installedandupdates-unattended-enabledon Ubuntu/Debian (writes/etc/apt/apt.conf.d/52hardline-auto-upgrades, verified throughapt-config dump);updates-dnf-automatic-installedandupdates-dnf-automatic-timeron RHEL family. time-synced(phase 3):timedatectlreportsNTPSynchronized=yes. Report-only.kernel-suid-dumpable(phase 7): setsfs.suid_dumpable = 0.mounts-tmpandmounts-dev-shm(phase 7):nodev,nosuid,noexec, read from/proc/self/mounts. Report-only.files-no-world-writable,files-no-stray-suid,files-no-unowned(phase 8): one bounded walk of local disk filesystems (no symlinks, no container storage or pseudo filesystems, stops at 3,000,000 entries). Report-only.files-no-unownedis a warning when users also come from LDAP/SSSD.apt-configandtimedatectladded to the fixed command list.hardline dashboard [--out FILE]: a local, script-free status page with the report, score over time and recent watch runs.hardline fleet <host>...: run on your own computer; audits each server over SSH (sshadded to the fixed command list) and writes one local page with every grade, open findings per host and failures shared across servers.- Dashboard: "How to fix" on every open finding (why it matters, what Hardline changes, the exact preview/commit/confirm commands, how to undo), a change timeline from
history.log, and an accepted-risk register with review dates. hardline accept --expires 90d|12w|YYYY-MM-DD: a review date for an accepted finding. Once it passes the finding counts again andwatchreports it once. Existing entries keep working without one. An entry withexpiresis refused by 0.5.x, so after downgrading remove that line (or the entry) from/etc/hardline/accepted.toml.watch runkeeps the last 720 runs inwatch-history.jsonl, rewritesdashboard.html, and writes Prometheus metrics (hardline.prom) for node_exporter's textfile collector.
Fixed
watch-history.jsonlwith one corrupt byte no longer wipes the whole history; only the bad line is dropped.- A full disk while saving history no longer stops the regression alert from
watch run. - File-permission scan: a bind mount of a subdirectory no longer hides the rest of that filesystem; at most 1,000 sample paths per finding are kept (counts stay exact).
- Temp files from atomic writes are per-process, so
hardline dashboardandwatch runcan't publish each other's half-written file. self-updatetakes the hardline lock, so no apply, rollback or watch run starts while the binary is replaced.confirmcommits the snapshots before it stops the revert timer, so a failure there still reverts on its own instead of leaving the change unguarded.- A failure recording files created by a package install, or (for unguarded phases) sealing the snapshot, now rolls the phase back instead of leaving it half-applied.
hardline dashboard --out FILEprints the right file name to open.- Webhook URLs with an IPv6 literal host and no port are accepted; malformed bracketed hosts are refused.
- The dashboard's time formatting no longer assumes ASCII input.
rollback --pendingand an early manual revert are recorded as "rolled back by hand", not "not confirmed in time"; the last-revert line no longer repeats its timestamp.- Writing a file by bare name (e.g.
--out page.html) in the current directory.
Install
Download the archive for your CPU (
x86_64oraarch64), check it against the signed sums, and install it somewhere only root can write:curl -LO https://sudosecurity.org/hardline/releases/latest/hardline-x86_64-unknown-linux-gnu.tar.gz curl -LO https://sudosecurity.org/hardline/releases/latest/SHA256SUMS curl -LO https://sudosecurity.org/hardline/releases/latest/SHA256SUMS.sig curl -LO https://git.sudosecurity.org/sudosecurity/hardline/raw/tag/v0.6.0/release.pub openssl pkeyutl -verify -pubin -inkey release.pub -rawin -in SHA256SUMS -sigfile SHA256SUMS.sig sha256sum --ignore-missing -c SHA256SUMS tar -xzf hardline-x86_64-unknown-linux-gnu.tar.gz sudo install -o root -g root -m 755 hardline-*/hardline /usr/local/bin/hardlineAlready on 0.5.0 or later?
sudo hardline self-updatedoes the same checks for you.SHA256SUMSis signed with the Ed25519 release key inrelease.pub; the same key is compiled into Hardline forself-update.Full changelog: https://git.sudosecurity.org/sudosecurity/hardline/compare/v0.5.1...v0.6.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
1 download
- Automatic updates (phase 3):