
Linux에서 파일 생성 및 수정 이벤트를 모니터링하는 경량 eBPF 프로그램입니다. 이 도구는 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
루트 권한으로 바이너리를 실행합니다:
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 프로그램으로 이벤트를 전송합니다.