ebpH stands for Extended BPF Process Homeostasis.
ebpH is a modern host-based intrusion detection system for Linux 5.8+ that leverages the power of Extended BPF (eBPF) to monitor processes and detect anomalous behavior. This effectively constitutes an eBPF implementation of pH (Process Homeostasis).
This product comes with no warranty, and is built as a research system. It should be perfectly safe to run on your system due to the safety guarantees of eBPF, but we make no claims about functionality.
- My supervisor's original dissertation on pH
- A Sense of Self for UNIX Processes
- Lightweight Intrustion Detection for Networked Operating Systems
- Lookahead Pairs and Full Sequences: A Tale of Two Anomaly Detection Methods
- Linux 5.8+ compiled with at least
CONFIG_BPF=y,CONFIG_BPF_SYSCALL=y,CONFIG_BPF_JIT=y,CONFIG_TRACEPOINTS=y,CONFIG_BPF_LSM=y,CONFIG_DEBUG_INFO=y,CONFIG_DEBUG_INFO_BTF=y,CONFIG_LSM="bpf". pahole >= 0.16 must be installed for the kernel to be built with BTF info. - Either the latest version of bcc from https://github.com/iovisor/bcc or bcc version 0.16+.
- If building from source, be sure to include
-DPYTHON_CMD=python3in your the cmake flags
- If building from source, be sure to include
- Python 3.8+
- Install the prerequisites (see above).
git clone https://github.com/willfindlay/ebpHcd ebpH && make install(You will be asked for your password)- To install the systemd unit:
make systemd(You will be asked for your password)
- Run
$ sudo ebphd startto start the daemon. - Run
$ sudo ebph admin statusto check daemon status. - Run
$ sudo ebph psto check monitored processes. - Run
$ sudo ebph ps -pto list all active profiles.
Or, with systemd:
- Run
$ sudo systemctl start ebphdto start the daemon if not already running.