eBPF Guard

주니어 eBPF 보안 엔지니어 포트폴리오를 목표로, Linux endpoint에서 발생하는 행위를 관찰하고 의심 이벤트를 JSON Lines 로그로 남기는 미니 EDR을 만들었다.

이 프로젝트는 거대한 EDR을 흉내 내기보다, execve, openat, connect syscall을 중심으로 이벤트 수집, 유저랜드 룰 처리, 로그 출력까지 이어지는 작은 보안 파이프라인을 끝까지 구현하는 데 집중했다.

글 목록

  1. Building a Mini EDR with eBPF 1: MVP Design

    execve, openat, connect를 tracepoint로 수집하고, BPF ring buffer를 통해 유저랜드 룰 엔진과 JSONL writer로 넘기는 MVP 구조를 정리했다. 커널은 이벤트 수집에 집중하고, 판단과 출력은 유저랜드에서 처리하는 방향으로 설계했다.

  2. Building a Mini EDR with eBPF 2: Improving File Access Detection

    1편의 openat 탐지가 syscall 진입 시점만 봐서 실제 성공 여부를 알 수 없다는 한계를 개선했다. sys_enter_openatsys_exit_openat을 연결해 /etc/shadow 접근 시도와 성공을 구분하고, SHADOW_OPEN_ATTEMPT, SHADOW_OPEN_SUCCESS 룰로 나눴다.

  3. Building a Mini EDR with eBPF 3: Reducing False Positives in SUSPICIOUS_CONNECT

    connect 이벤트를 더 조심스럽게 해석하기 위해 유저랜드에서 command line을 보강하고, 목적지 IP 분류와 allowlist, suppression 처리를 추가했다. 단순히 public IP 연결을 잡는 것보다, 조사할 가치가 있는 로그를 남기는 방향으로 탐지 품질을 개선했다.

코드