본문 바로가기
학부연구생/학부연구생 실습

Tetragon 개념

by ㅇㅏ도 2024. 2. 19.

1. 우선 ebpf 란?

eBPF는 확장 BPF라는 뜻이다. 기존의 BPF에서 사용하던 머신에서 레지스터의 크기를 늘리고 스택과 맵을 도입했다. BPF는 네트워크 트래픽을 분석해야 하는 프로그램을 위해 특정 OS에서 사용되는 기술이다.

eBPF는 커널 소스 코드를 변경하거나 커널 모듈을 로드하지 않고도 샌드박스 및 권한 있는 컨텍스트에서 실행할 수 있는 새로운 기능을 도입하는 방법을 제공한다.

2. Tetragon

2-1. Tetragon 란?

보안 관찰 및 시행을 수행하는 클라우드 네이티브 eBPF 기반 도구이다.

가장 쉽게 설명하면 “런타임 보안 적용 및 관찰 도구”

커널의 eBPF에서 정책과 필터링을 직접 적용하며 진행됨

Kubernetes 워크로드에 적합하며 클러스터의 각 노드에서 daemonset로 실행된다. 그 다음 Tetragon은 Kubernetes API 서버에서 메타데이터를 가져와 각 노드의 커널에서 관찰된 이벤트와 메타데이터를 연관시킬 수 있다.

Tetragon은 네임스페이스, 포드 등과 같은 Kubernetes ID를 이해하므로 개별 워크로드와 관련하여 보안 이벤트 감지를 구성할 수 있다.

⇒ 정리하자면

Tetragon은 eBPF를 통해 Linux 커널 상태에 액세스할 수 있음. 그런 다음 Tetragon은 Kubernetes 인식 또는 사용자 정책과 함께 이 커널 상태를 결합하여 실시간으로 커널에 의해 시행되는 규칙을 생성할 수 있음. 이를 통해 프로세스 네임스페이스 및 기능, 프로세스에 대한 소켓, 파일 이름에 대한 프로세스 파일 설명자 등에 주석을 달고 적용할 수 있음. 예를 들어, 애플리케이션이 권한을 변경하면 경고를 트리거하는 정책을 만들거나 시스템 콜을 완료하고 잠재적으로 추가 시스템 콜을 실행할 기회를 갖기 전에 프로세스를 종료할 수도 있음.

(Tetragon 개요 다이어그램)

2-2. Tetragon 의 역할

  1. eBPF를 사용하여 Tetragon은 커널 외부에서 실행되는 에이전트에 이벤트를 전송하지 않고 이벤트를 필터링 및 관찰하고 실시간으로 정책을 적용할 수 있다.
  2. Tetragon은 Linux 커널의 모든 함수에 연결하여 해당 인수, 반환 값, Tetragon이 프로세스(예: 실행 파일 이름), 파일 및 기타 속성에 대해 수집하는 관련 메타데이터를 필터링할 수 있다.
  3. 네트워크 연결을 열고 파일에 액세스하거나 컨테이너 내부에서 프로세스를 시작하는 워크로드와 같은 이벤트를 필터링하여 수많은 보안 및 관찰 사용 사례를 해결할 수 있다.
  4. Tetragon은 활동들을 추적 및 필터링하면서 오버헤드가 거의 또는 전혀 발생하지 않고, 일반적으로 이러한 이벤트를 소프트웨어에서 가장 빠른 단계에 감지할 수 있다.
  5. TracingPolicies을 사용하여 이러한 활동에 대한 실시간 필터를 손쉽게 설정할 수 있다.
    • 프로세스 실행 이벤트
    • 시스템 호출 활동
    • 네트워크 및 파일 액세스를 포함한 I/O 활동
  6. 위에서 말하는 이러한 활동

but 어떤 기능이 추적되고 어떤 필터가 적용되는지에 대한 세부 사항은 엔진 자체에 하드 코딩되어 있지 않음

데이터가 잘못 읽히거나, 공격자가 악의적으로 변경하거나, 페이지 오류 및 기타 사용자/커널 경계 오류로 인해 누락되는 syscall 추적과 관련된 일반적인 문제를 방지하여 사용자 공간 응용 프로그램에서 데이터 구조를 조작할 수 없는 커널 깊은 곳에서 후크를 허용함

*여기서 후크란? 시스템콜 추출하기 위한 커널 레벨에서의 추적 포인트

2-3. Tetragon 구조

 

2-4. EVENT 관찰 방법

The first way is to observe the raw json output from the stdout container log:

A second way is to use the [tetra](<https://github.com/cilium/tetragon/tree/main/cmd/tetra>) CLI.