서버인프라/리눅스

🛡️ 서버를 노리는 eBPF 위협, Falco로 실시간 감시하라

techwold ted 2025. 5. 8. 09:51
program_output:
  enabled: true
  program: "/usr/bin/curl -X POST -H 'Content-Type: application/json' -d @- https://your-webhook-url"

json_output: true

👨‍💻 서론: 이제는 로그가 아니라 "행위"를 감시해야 할 때

전통적인 백신은 파일 기반 시그니처를 중심으로 동작합니다. 하지만 최신 공격자들은 파일을 남기지 않고 커널 수준에서 직접 작동하는 **"행위 기반" 공격(e.g. eBPF 활용)**을 시도합니다.

특히 eBPF(Berkeley Packet Filter)는 리눅스 커널에서 원래 성능 모니터링이나 네트워크 필터링 목적으로 설계되었지만, 최근에는 악성코드나 루트킷이 이를 악용해 보안 우회, 정보 수집, 시스템 훅킹 등에 사용되는 사례가 증가하고 있습니다.

이를 실시간으로 탐지할 수 있는 오픈소스 보안 솔루션이 바로 Falco입니다.


🔍 Falco란?

Falco는 CNCF(Cloud Native Computing Foundation)에서 공식적으로 관리하는 오픈소스 런타임 보안 도구입니다.
파일이 아닌 시스템 호출(Syscall) 자체를 감시하여 다음과 같은 위협을 탐지합니다:

  • 민감 파일 접근 (예: /etc/shadow)
  • 의심스러운 실행 파일 (/tmp/malware)
  • BPF 프로그램 로딩
  • 컨테이너 탈출 시도
  • 권한 상승 시도 (sudo, chmod, chown)

Falco는 단순한 바이러스 검사가 아니라, **행위 기반 침입 탐지 시스템(HIDS)**에 해당합니다.


⚙️ Falco의 동작 원리

Falco는 서버 커널의 시스템 호출을 감시하는 두 가지 방식 중 하나를 선택합니다:

방식설명특징
eBPF probe 최신 커널에서 사용하는 고성능 후킹 방식 성능 우수, 권장
커널 모듈 (falco.ko) eBPF를 지원하지 않는 경우 사용 호환성 좋음, 하지만 유지관리 복잡

Falco는 이 방식으로 커널에서 발생하는 이벤트(시스템 호출)를 수집하고, 설정된 **룰(rule)**을 기준으로 이상 행동 여부를 판단합니다.


✅ 설치 가이드 (Ubuntu 22.04 기준)

1. 저장소 추가 및 설치

curl -s https://falco.org/repo/falcosecurity-packages.asc | sudo apt-key add -
echo "deb https://download.falco.org/packages/deb stable main" | sudo tee /etc/apt/sources.list.d/falcosecurity.list
sudo apt update
sudo apt install -y falco

 

2. 서비스 실행

sudo systemctl start falco
sudo systemctl enable falco

 

3. 설치 확인

falco --version

 

🔐 BPF 프로그램 감지를 위한 룰 추가

eBPF 기반 악성 행위 탐지를 위해 사용자 정의 룰을 작성할 수 있습니다.

1. 룰 파일 작성

/etc/falco/falco_rules.local.yaml 파일을 다음과 같이 작성:

- rule: BPF Program Load
  desc: "Detects loading of BPF program (potential kernel-level attack)"
  condition: evt.type=bpf and evt.dir=< and not proc.name in (falco)
  output: "⚠️ BPF program loaded by %proc.name (pid=%proc.pid)"
  priority: WARNING
  tags: [kernel, bpf, security, eBPF]

 

 

  • evt.type=bpf: bpf() 시스템 호출 감지
  • evt.dir=<: 호출 방향이 "입력"일 때 (즉, 실행된 시점)
  • proc.name in (falco): Falco 자체는 감시 제외

2. 룰 적용

sudo systemctl restart falco

 

 

🧪 테스트: 실제 감지 여부 확인

BPF 로딩을 수동으로 실행하면 경고가 발생합니다.

sudo apt install -y bpftool
sudo bpftool prog

 

Falco 로그 확인:

sudo tail -f /var/log/falco.log

 

예상 출력:

⚠️ BPF program loaded by bpftool (pid=2431)

 

📡 알림 시스템 연동 (Webhook, Slack, Jandi)

/etc/falco/falco.yaml을 편집하면 외부 서비스로 실시간 알림 전송 가능:

program_output:
  enabled: true
  program: "/usr/bin/curl -X POST -H 'Content-Type: application/json' -d @- https://your-webhook-url"

json_output: true

이를 통해 Jandi, Slack, Mattermost 등과 손쉽게 연동 가능합니다.


📈 Falco가 감시하는 주요 보안 이벤트

감시 대상예시
파일 접근 /etc/passwd, /proc/kallsyms 접근
프로세스 실행 /tmp/shell.sh, python reverse shell 실행
네트워크 활동 포트 바인딩, 패킷 캡처 시도
권한 변경 chmod 777, chown root 등
컨테이너 이벤트 도커 탈출 시도, 루트 컨테이너 실행 등
eBPF 호출 bpf() syscall을 통한 프로그램 로딩 시도

🧾 요약 및 결론

항목설명
도구명 Falco
주 기능 실시간 시스템 호출 감시
감시 범위 파일, 네트워크, 프로세스, eBPF 등
추천 사용처 서버, 컨테이너, 클라우드 보안
설치 난이도 중간 (APT 사용 가능)
BPF 감시 직접 감시 가능 (bpf() syscall)

Falco는 단순한 백신 도구가 아닙니다. 커널 수준에서 시스템 행동을 감시하고, 악의적인 징후를 실시간으로 포착하여 경고함으로써 행위 기반 위협에 대응하는 차세대 보안 솔루션입니다.