[System Hardening] Aqua Security의 Tracee: 컨테이너 시스템 호출 추적 도구

IMKUNYOUNG·2024년 6월 18일
0

CKS

목록 보기
37/70

Aqua Security에서 개발한 오픈 소스 도구인 Tracee에 대해 알아보겠습니다. Tracee는 컨테이너에서 시스템 호출을 추적할 수 있는 도구로, eBPF(Extended Berkeley Packet Filter) 기술을 활용하여 런타임에 시스템을 모니터링합니다.

Tracee와 eBPF의 개요

Tracee는 Aqua Security에서 만든 오픈 소스 도구로, eBPF를 사용하여 커널 소스 코드에 간섭하거나 커널 모듈을 로드하지 않고도 커널 공간에서 프로그램을 실행할 수 있습니다. eBPF는 OS를 모니터링하고 의심스러운 행동을 감지하는 데 매우 유용하며, Tracee는 이를 활용하여 실시간으로 시스템 호출을 추적합니다.

Tracee 설치 및 실행 방법

Tracee는 서버에 직접 설치하여 실행할 수 있지만, 종속성을 설치하고 서버에 맞는 바이너리를 찾는 과정이 번거로울 수 있습니다. 따라서 Tracee를 도커 컨테이너로 실행하는 것이 더 쉬운 대안입니다.

전제 조건

Tracee를 도커 컨테이너로 실행하기 전에 몇 가지 전제 조건을 이해해야 합니다.

  1. eBPF 프로그램 빌드 및 저장: Tracee는 eBPF 프로그램을 빌드하고 기본적으로 /tmp/tracee 디렉터리에 저장합니다. 이를 위해 호스트의 /tmp/tracee 디렉터리를 컨테이너에 바인드 마운트해야 합니다.

  2. 커널 헤더 접근: eBPF 프로그램을 컴파일하기 위해 Tracee는 커널 헤더에 접근해야 하며, 이는 우분투의 /lib/modules/usr/src에 위치해 있습니다. 이 디렉터리들도 읽기 전용 모드로 컨테이너에 바인드 마운트해야 합니다.

  3. 추가 권한 필요: 시스템 호출을 추적하기 위해 Tracee는 호스트에서 추가적인 권한이 필요합니다. 도커에서 --privileged 플래그를 사용하는 거이 가장 쉬운 방법입니다.

Trace 도커 컨테이너 실행

이제 Tracee 도커 컨테이너를 실행하는 방법을 살펴보겠습니다.

특정 명령어에 의한 시스템 호출 추적

단일 명령어 (예: ls)에 의해 생성된 시스템 호출을 추적하려면 다음과 같이 컨테이너를 실행합니다:

$ docker run --rm -it --privileged \
  	-v /tmp/tracee:/tmp/tracee \
  	-v /lib/modules:/lib/modules:ro \
  	-v /usr/src:/usr/src:ro \
  	aquasec/tracee --trace command=ls

위 명령어는 ls 명령어에 의해 호출된 모든 시스템 호출을 출력합니다.

새로운 프로세스에 의한 시스템 호출 추적

호스트의 모든 새로운 프로세스에 의해 생성된 시스템 호출을 추적하려면 다음과 같이 컨테이너를 실행합니다:

docker run --rm -it --privileged \
  -v /tmp/tracee:/tmp/tracee \
  -v /lib/modules:/lib/modules:ro \
  -v /usr/src:/usr/src:ro \
  aquasec/tracee --trace pid=new

이 방법은 호스트의 모든 새로운 프로세스에 의해 생성된 시스템 호출을 실시간으로 추적합니다.

새로운 컨테이너에 의한 시스템 호출 추적

새로운 컨테이너에 의해 생성된 시스템 호출을 추적하려면 다음과 같이 컨테이너를 실행합니다:

docker run --rm -it --privileged \
  -v /tmp/tracee:/tmp/tracee \
  -v /lib/modules:/lib/modules:ro \
  -v /usr/src:/usr/src:ro \
  aquasec/tracee --trace container=new

마무리

Aqua Security의 Tracee 도구와 eBPF 기술을 이용한 시스템 호출 추적 방법에 대해 살펴보았습니다. Tracee는 보안 모니터링 및 문제 해결에 매우 유용한 도구로, 도커 컨테이너를 통해 쉽게 설치하고 실행할 수 있습니다.

0개의 댓글