
원문은 eBPF를 이렇게 소개합니다. "애플리케이션에 수정이나 오버헤드를 주지 않고, 리눅스 커널에서 소켓 통신을 캡처해 HTTP L7 페이로드까지 디코딩한다." 매력적인 문장이지만 두 군데가 틀렸습니다. 오버헤드는 0이 아니고, 요즘 트래픽 대부분인 TLS는 소켓에서 암호문입니다. eBPF는 훌륭한 기술입니다. 다만 HTTP 공격 탐지의 1순위 자리가 아닙니다.
eBPF는 리눅스 커널 안에서 작은 프로그램을 안전하게 돌리는 기술입니다. 커널 모듈을 만들지 않고도 시스템 콜, 커널 함수, 네트워크 경로, 사용자 프로그램 함수에 훅(갈고리)을 걸어 무슨 일이 일어나는지 보거나 막을 수 있습니다. 훅의 종류는 이렇습니다.
eBPF 프로그램도 CPU에서 돕니다. 훅이 걸린 이벤트가 일어날 때마다 실행되고, 결과를 사용자 공간으로 넘길 때 복사가 일어납니다. 줄일 수는 있어도 0은 아닙니다.
훅을 많이 걸수록, 이벤트가 잦은 곳(예: 모든 read 시스템 콜)에 걸수록 비용이 큽니다. 도입 전에 여러분 워크로드에서 직접 재야 합니다.

HTTPS 요청은 앱의 TLS 라이브러리가 풀기 전까지 암호문입니다. 커널의 소켓 단계에서 보이는 것은 암호화된 바이트입니다. 평문 HTTP를 보려면 방법이 셋입니다.
Cilium은 eBPF 기반 쿠버네티스 네트워킹입니다. 그런데 HTTP 같은 L7 가시성은 순수 eBPF가 아닙니다. L7 규칙이 있는 CiliumNetworkPolicy를 걸면 해당 트래픽을 Envoy 프록시(에이전트 안이나 cilium-envoy 데몬셋)로 돌려 보내고, Envoy가 HTTP를 해석합니다. 규칙에 맞지 않는 L7 트래픽은 떨어집니다. Hubble(Cilium의 관측 도구)은 기본으로 민감 데이터를 가리지 않으니 --hubble-redact-enabled 같은 옵션을 확인하세요.
정리하면 "eBPF로 L7을 본다"는 실제로는 eBPF가 프록시로 길을 바꿔 주고, 프록시가 본다인 경우가 많습니다. 이미 Nginx나 Envoy 로그가 있다면, HTTP 공격 탐지에 eBPF가 더해 주는 것은 적습니다. 그리고 eBPF가 무엇을 보든 주문 100458의 주인은 모릅니다. IDOR은 여전히 앱의 몫입니다.
HTTP 다음 단계, 즉 공격이 성공한 뒤를 보는 데 eBPF가 강합니다. Tetragon은 스스로를 "eBPF 기반 보안 관측과 런타임 강제" 도구라고 소개합니다.
/etc/ 아래 파일이나 인증서 폴더를 연다.Tetragon은 TracingPolicy로 kprobe, tracepoint, uprobe, LSM 훅에 규칙을 걸고, 맞으면 기록하거나 프로세스를 죽이는(Sigkill) 등의 조치를 할 수 있습니다. 쿠버네티스 맥락(파드, 네임스페이스)이 함께 붙습니다.
이건 WAF도, 앱 안 탐지도 못 하는 일입니다. 그래서 이 시리즈의 도입 순서에서 eBPF는 마지막이지만, 컨테이너를 많이 돌리고 침해 이후를 봐야 하는 팀에게는 꼭 필요한 방어선입니다.
eBPF는 리눅스 커널 기능입니다. 이 시리즈의 실험 장비는 macOS(Apple M1 Pro)라 호스트에서 직접 돌릴 수 없습니다. Docker Desktop의 리눅스 가상 머신 안에서 권한 있는 컨테이너로 시도할 수는 있지만, 그 VM의 커널 설정과 BTF 지원을 확인하지 못했고, 측정 당시 장비 상태도 추가 실험을 하기 어려웠습니다. 그래서 eBPF 관련 숫자는 하나도 싣지 않습니다.
리눅스에서 재현하려면 이렇게 하면 됩니다.
/sys/kernel/btf/vmlinux)가 있는 최근 커널이어야 합니다(예: Ubuntu 24.04 계열, 정확한 최소 버전은 Tetragon 문서에서 확인 필요).lab/app.py)을 같은 장비에서 띄웁니다.lab/bench.py로 p50/p99 지연과 처리량을 각각 잽니다.결과가 나오면 이 글에 【작성자 실측】으로 더하겠습니다.
모든 링크는 2026-10-30에 확인했습니다.
이전 글 방어선 3: 실시간 파이프라인은 언제 필요한가
다음 글 클라우드·상용으로 같은 그림 그리기
시리즈 전체 목록 해킹 시도를 몇 초 안에 잡는 서버 전체 목록