
軽量なeBPFプログラムで、Linux上のファイル作成および変更イベントを監視します。このツールはeBPF(Extended Berkeley Packet Filter)を活用し、カーネルから直接ファイル操作をトレースすることで、最小限のオーバーヘッドで高性能な監視を提供します。
Linux上でファイル作成および変更イベントを監視する軽量なeBPFプログラムです。このツールはeBPF(Extended Berkeley Packet Filter)を活用して、カーネルから直接ファイル操作をトレースし、最小限のオーバーヘッドで高性能な監視を提供します。
touch、nanoなど)をトレースします。/tmp)内でアクセスされたファイルはすべて追跡されます。cd /tmp; touch file)の両方を正しく処理します。最新のバイナリはReleasesページからダウンロードできます。
自分でプロジェクトをビルドするには、Goがインストールされている必要があります。
# Clone the repository
git clone https://github.com/harshavmb/fim-ebpf.git
cd fim-ebpf
# Build the binary
go build -o fim-ebpf .
バイナリと同じディレクトリにconfig.yamlファイルを作成します(または既存のものを変更します)。
monitored_files:
- /tmp/testfile
- /etc/passwd
- /etc/shadow
- /tmp ## monitor the entire directory
ignore_actions:
- read
- stat
ignore_users:
- root
root権限でバイナリを実行します:
sudo ./fim-ebpf
2025/08/18 07:22:09 Monitoring started. Ctrl+C to exit.
2025/08/18 07:22:37 Event: PID=1745080 UID=6087179 (6087179 (harsha)) CMD=touch FILE=/tmp/testfile FLAGS=00000941 ## actual user
2025/08/18 07:22:54 Event: PID=1745108 UID=0 (0 (root) [Login: 6087179 (harsha)]) CMD=touch FILE=/tmp/testfile FLAGS=00000941 ## even after sudo
2026/01/03 18:55:56 Event: PID=3718310 UID=1002 (1002 (harsha)) CMD=touch FILE=/tmp/testfile ACTION=OPEN FLAGS=00000941 ## monitoring files in a dir
このプロジェクトは、eBPFプログラムのロードと対話のためにcilium/ebpfを使用しています。eBPFコードはカーネル内で実行され、リングバッファを介してイベントをユーザースペースのGoプログラムに送信します。