반응형

본 게시글은 개인적으로 공부하기 위해 작성된 글입니다.

 

opensnoop : trace open() syscalls system-wide, and prints various details.

-> 리눅스 시스템에서 파일 오픈(open) 시스템 콜을 실시간으로 모니터링하는 도구!

 

eBPF는 아래와 같이 두가지 이상의 부분의 구성딘다.

● A User-space program (USP) that declared the kernel space program and attaches it to the relevant tracepoint/probe

● A kernel-spave program (KSP) is what gets triggerd and runs inside the kernel once the tracepoint/probe is met.

 

상기의 두 프로그램은 직접적으로 communication이 불가능하기에 buffer를 활용하여 data를 주고받습니다.

eBPF의 경우 다른 종류의 BPF map을 통해 구현되는 경우를 예시로 할 수 있다.

 

우선적으로 build를 수행한다.

make opensnoop

 Compile된 opensnoop binary를 실행하기 위해서는 CAP_BPF 권한이 요구된다. 이는 우리가 수행하여는 로직(code)이 권한이 부여된 BPF작업( ex. eBPF code를 kernel에 load)을 수행하고 많은 Linux 배포판들이 eBPF를 허용하지 않기에 필수적이다. CAP_BPF는 Linux kernel 5.8이후부터 사용가능하며 모든 타입의 BPF program 적재, 대부분의 맵 유형 생성, BTF 적재, 프로그램 및 맵의 반복(아마 중복사용을 의미하는 것 같다)을 허용한다. 굳이 권한을 나눈 이유는 overload된 CAP_SYS_ADMIN기능으로부터 BPF의 기능을 독립하기 위해 도입되었다.

 

다시 console로 돌아가서 openscoop을 수행해보자.

./opensnoop

 opensnoop은 file이 열릴때마다 출력을 표시할 것이다. 하지만 현재는 주어진 vm에서 진행되고 있으므로 관찰을 위해 event들을 생성할 것이다. 다른 terminal에서 아래의 명령을 수행한 이후, 다시 원래의 terminal로 돌아가서 다수의 file들이 cat을 수행하기 위해 접근된 것을 확인할 수 있다.

cat /etc/os-release

또한, 마지막 line(systemd)과 같이 vm에서 실행 중인 다른 process에서 생성된 출력 역시 확인가능하다.

 

ref

https://isovalent.com/books/ebpf/

 

Isovalent - O’Reilly Report: What is eBPF?

In this O’Reilly report, you will learn how eBPF's ability to dynamically change the behavior of the kernel can be tremendously useful.

isovalent.com

 

반응형

'ebpf' 카테고리의 다른 글

O’Reilly Report What is eBPF? - tutorial 3  (0) 2023.07.21
O’Reilly Report What is eBPF? - tutorial 2  (0) 2023.07.20
google/ buzzer (eBPF fuzzer toolchain)  (0) 2023.07.19
eBPF-fuzzer  (0) 2023.07.19
BPF JIT spray  (0) 2023.03.06

+ Recent posts