Frame Sentinel as IDS IPS and EDR

This commit is contained in:
Luna 2026-06-13 05:59:03 -07:00
parent 1a5b6f1d8d
commit 6a09fbb7f9
10 changed files with 47 additions and 33 deletions

View file

@ -4,14 +4,17 @@ Guidance for Claude or Claude Code agents working on Enodia Sentinel.
## Project Shape ## Project Shape
Enodia Sentinel is a zero-runtime-dependency Linux host security platform. The Enodia Sentinel is a zero-runtime-dependency Linux IDS/IPS/EDR platform. The
core agent is pure Python standard library and should stay that way unless a core agent is pure Python standard library and should stay that way unless a
dependency has clear security/operator value that cannot reasonably be achieved dependency has clear security/operator value that cannot reasonably be achieved
with stdlib. with stdlib. Its IPS scope is explicit prevention workflow: posture hardening,
containment planning, and future reviewed `--apply` actions, not silent inline
network blocking or automatic host mutation.
Primary functions: Primary functions:
- Detect: poll detectors plus optional eBPF exec rules. - Detect: poll detectors plus optional eBPF exec/syscall rules.
- Prevent: posture findings plus reviewed containment/recovery plans.
- Verify: FIM, package DB anchor, signed-package verification, rootcheck. - Verify: FIM, package DB anchor, signed-package verification, rootcheck.
- Investigate: text/JSON snapshots, incidents, HTTPS management console. - Investigate: text/JSON snapshots, incidents, HTTPS management console.
- Respond: dry-run plans first; any state-changing action must be explicit, - Respond: dry-run plans first; any state-changing action must be explicit,

View file

@ -1,8 +1,9 @@
# Enodia Sentinel # Enodia Sentinel
A Linux endpoint detection and response platform: intrusion detection, A Linux IDS/IPS/EDR platform: intrusion detection, explicit prevention and
file/package integrity, anti-rootkit cross-checks, tamper-evidence, forensic containment workflows, endpoint detection and response, file/package integrity,
snapshots, push alerts, response planning, and a read-only operator console. anti-rootkit cross-checks, tamper-evidence, forensic snapshots, push alerts, and
a read-only operator console.
The current daemon continuously runs detectors over live system state — The current daemon continuously runs detectors over live system state —
processes, sockets, file descriptors, the SUID inventory, sensitive files, the processes, sockets, file descriptors, the SUID inventory, sensitive files, the
@ -17,12 +18,16 @@ the package database was tampered with, and what to do next."*
## Product direction ## Product direction
Enodia Sentinel is an endpoint detection and response system. IDS-style Enodia Sentinel is an IDS, IPS, and EDR system. IDS-style signatures identify
signatures are one detection layer inside a broader host security platform: suspicious host behavior, IPS workflows turn those findings into explicit
containment/prevention plans, and EDR features preserve evidence for triage,
investigation, and recovery. Automatic inline blocking is intentionally gated
behind reviewed response workflows rather than silent remediation.
| Function | Current capability | Direction | | Function | Current capability | Direction |
|---|---|---| |---|---|---|
| Detect | Poll detectors + eBPF exec rules | More event sources and correlation | | Detect | Poll detectors + eBPF exec rules | More event sources and correlation |
| Prevent | Posture checks + dry-run containment plans | Audited, explicit `--apply` workflows |
| Verify | FIM, package DB anchor, signed-package checks | External anchors and signed evidence | | Verify | FIM, package DB anchor, signed-package checks | External anchors and signed evidence |
| Investigate | Text/JSON snapshots, dashboard, triage | Incident timelines and evidence export | | Investigate | Text/JSON snapshots, dashboard, triage | Incident timelines and evidence export |
| Respond | Human guidance today | Dry-run response plans and audited containment | | Respond | Human guidance today | Dry-run response plans and audited containment |
@ -510,10 +515,10 @@ conscious tradeoff documented in the file itself.
## Roadmap ## Roadmap
The short version: Enodia grows from local endpoint detection and response into The short version: Enodia grows from a local IDS/IPS/EDR agent into a host
a host security platform: incident grouping, posture checks, response planning, security platform: incident grouping, posture checks, response planning, richer
richer eBPF telemetry, fleet health, external anchors, and eventually eBPF telemetry, fleet health, external anchors, and eventually attestation-ready
attestation-ready assurance. assurance.
See [docs/ROADMAP.md](docs/ROADMAP.md) for the release tracks and phased plan. See [docs/ROADMAP.md](docs/ROADMAP.md) for the release tracks and phased plan.
The polling daemon isn't throwaway — it's the **oracle**: every signature is a The polling daemon isn't throwaway — it's the **oracle**: every signature is a

View file

@ -1,15 +1,16 @@
# Enodia Sentinel Roadmap # Enodia Sentinel Roadmap
This roadmap moves Enodia Sentinel from single-host endpoint detection and This roadmap moves Enodia Sentinel from a single-host IDS/IPS/EDR agent into a
response into a fuller host security platform: detect, verify, investigate, fuller host security platform: detect, prevent, verify, investigate, respond,
respond, and assure. Dates are intentionally not promised here; the sequence and assure. Dates are intentionally not promised here; the sequence matters more
matters more than calendar precision. than calendar precision.
## Release Tracks ## Release Tracks
| Track | Goal | | Track | Goal |
|---|---| |---|---|
| Sensor | Better host telemetry, event capture, and detection coverage. | | Sensor | Better host telemetry, event capture, and detection coverage. |
| Prevention | Safe containment and recovery actions that start as dry-run plans and require explicit review before any state change. |
| Integrity | Stronger proof that files, packages, baselines, and Sentinel itself were not silently modified. | | Integrity | Stronger proof that files, packages, baselines, and Sentinel itself were not silently modified. |
| Incident | Group alerts, build timelines, and export evidence. | | Incident | Group alerts, build timelines, and export evidence. |
| Response | Add safe, auditable containment and recovery workflows. | | Response | Add safe, auditable containment and recovery workflows. |

View file

@ -1,12 +1,12 @@
# Enodia Sentinel Specification # Enodia Sentinel Specification
This document defines Enodia Sentinel as an endpoint detection and response This document defines Enodia Sentinel as an IDS, IPS, and EDR system, not only a
system, not only a signature IDS. The current implementation is a local Linux signature IDS. The current implementation is a local Linux sensor with evidence
sensor with evidence capture, integrity monitoring, anti-rootkit checks, a capture, integrity monitoring, anti-rootkit checks, a dashboard, alert delivery,
dashboard, alert delivery, and dry-run response planning. The intended product and dry-run prevention/response planning. The intended product is a defensive
is a defensive control plane for a host or small fleet: detect compromise, prove control plane for a host or small fleet: detect compromise, prevent or contain
what changed, preserve useful evidence, guide response, and make sensor known-bad behavior through explicit operator workflows, prove what changed,
tampering visible. preserve useful evidence, guide response, and make sensor tampering visible.
## Product Definition ## Product Definition
@ -15,11 +15,12 @@ as a local daemon, observes high-signal host behavior, records forensic context
when something suspicious happens, and exposes the result through local files, when something suspicious happens, and exposes the result through local files,
JSON, a read-only dashboard, push notifications, and command-line tools. JSON, a read-only dashboard, push notifications, and command-line tools.
The long-term product should combine five functions: The long-term product should combine six functions:
| Function | Purpose | | Function | Purpose |
|---|---| |---|---|
| Detection | Find active compromise behavior: reverse shells, fileless execution, new listeners, suspicious egress, persistence edits, and privilege-escalation artifacts. | | Detection | Find active compromise behavior: reverse shells, fileless execution, new listeners, suspicious egress, persistence edits, and privilege-escalation artifacts. |
| Prevention | Recommend and, after explicit review, apply containment actions such as stopping malicious processes, blocking C2 peers, disabling persistence, or quarantining files. |
| Integrity | Prove whether important files, packages, baselines, and Sentinel's own footprint changed. | | Integrity | Prove whether important files, packages, baselines, and Sentinel's own footprint changed. |
| Evidence | Capture enough context for incident response without forcing the operator to reproduce a live state after the attacker is gone. | | Evidence | Capture enough context for incident response without forcing the operator to reproduce a live state after the attacker is gone. |
| Response | Provide safe, explicit operator workflows for triage, containment, and recovery. | | Response | Provide safe, explicit operator workflows for triage, containment, and recovery. |

View file

@ -80,12 +80,16 @@ Sentinel assumes:
- The dashboard is read-only by design; it can display dry-run response plans - The dashboard is read-only by design; it can display dry-run response plans
but does not execute containment commands. but does not execute containment commands.
- The current product does not perform automatic containment. - The current product does not perform automatic containment.
- Sentinel's IPS scope is explicit prevention workflow: posture hardening,
containment planning, and future reviewed `--apply` actions. It is not an
inline network appliance and does not silently rewrite host state.
## Security Controls Already Present ## Security Controls Already Present
| Control | Purpose | | Control | Purpose |
|---|---| |---|---|
| Hardened systemd unit | Limits daemon write surface and runtime privilege where possible. | | Hardened systemd unit | Limits daemon write surface and runtime privilege where possible. |
| Explicit IPS workflow | Turns detections into reviewed prevention/containment plans without automatic remediation. |
| Cooldown deduplication | Prevents alert storms from one persistent condition. | | Cooldown deduplication | Prevents alert storms from one persistent condition. |
| Snapshot retention | Preserves evidence while bounding local disk growth. | | Snapshot retention | Preserves evidence while bounding local disk growth. |
| FIM self-watch | Detects changes to Sentinel's own files and service definitions. | | FIM self-watch | Detects changes to Sentinel's own files and service definitions. |

View file

@ -1,9 +1,9 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
"""Enodia Sentinel — a Linux host security platform. """Enodia Sentinel — a Linux IDS/IPS/EDR platform.
Detection, file/package integrity, anti-rootkit checks, tamper-evidence, Detection, explicit prevention workflows, file/package integrity, anti-rootkit
forensic snapshots, and operator workflows. The Python re-architecture of the checks, tamper-evidence, forensic snapshots, and operator response. The Python
bash v0 prototype. re-architecture of the bash v0 prototype.
""" """
__version__ = "0.7.0" __version__ = "0.7.0"

View file

@ -51,7 +51,7 @@ def _cmd_check(cfg: Config) -> int:
def main(argv: list[str] | None = None) -> int: def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
prog="enodia-sentinel", prog="enodia-sentinel",
description="Linux host security platform.", description="Linux IDS/IPS/EDR platform.",
) )
parser.add_argument("--version", action="version", parser.add_argument("--version", action="version",
version=f"enodia-sentinel {__version__}") version=f"enodia-sentinel {__version__}")

View file

@ -2,7 +2,7 @@
pkgname=enodia-sentinel pkgname=enodia-sentinel
pkgver=0.6.0 pkgver=0.6.0
pkgrel=1 pkgrel=1
pkgdesc="Linux endpoint detection and response agent with IDS, integrity, anti-rootkit, and forensic response features" pkgdesc="Linux IDS/IPS/EDR agent with integrity, anti-rootkit, forensic evidence, and explicit prevention workflows"
arch=('any') arch=('any')
url="https://github.com/Enodia/enodia-sentinel" url="https://github.com/Enodia/enodia-sentinel"
license=('GPL-3.0-or-later') license=('GPL-3.0-or-later')

View file

@ -5,12 +5,12 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "enodia-sentinel" name = "enodia-sentinel"
version = "0.7.0" version = "0.7.0"
description = "Linux endpoint detection and response platform — detection, integrity, anti-rootkit checks, tamper-evidence, and forensic snapshots" description = "Linux IDS/IPS/EDR platform — detection, explicit prevention workflows, integrity, anti-rootkit checks, and forensic snapshots"
readme = "README.md" readme = "README.md"
requires-python = ">=3.11" requires-python = ">=3.11"
license = { text = "GPL-3.0-or-later" } license = { text = "GPL-3.0-or-later" }
authors = [{ name = "Enodia" }] authors = [{ name = "Enodia" }]
keywords = ["security", "edr", "ids", "hids", "detection", "linux", "forensics", "response"] keywords = ["security", "edr", "ids", "ips", "hids", "detection", "prevention", "linux", "forensics", "response"]
classifiers = [ classifiers = [
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Operating System :: POSIX :: Linux", "Operating System :: POSIX :: Linux",

View file

@ -1,5 +1,5 @@
[Unit] [Unit]
Description=Enodia Sentinel - endpoint detection and response agent Description=Enodia Sentinel - IDS/IPS/EDR agent
After=network.target After=network.target
Documentation=https://github.com/Enodia/enodia-sentinel Documentation=https://github.com/Enodia/enodia-sentinel