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=python3
in 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/ebpH
cd 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 start
to start the daemon. - Run
$ sudo ebph admin status
to check daemon status. - Run
$ sudo ebph ps
to check monitored processes. - Run
$ sudo ebph ps -p
to list all active profiles.
Or, with systemd:
- Run
$ sudo systemctl start ebphd
to start the daemon if not already running.