eBPF-/Advanced 6

[eBPF Advanced] 05. LSM을 사용한 보안 탐지 & 방어

LSM (Linux System Modules)LSM은 Linux 2.6 부터 리눅스 커널의 공식 보안 프레임 워크로 사용되어왔다. 리눅스 5.7에서 BPF LSM이 도입되면서 시스템 개발자는 함수 수준의 보안 검사를 자유롭게 구현할 수 있게 됐다. LSM은 커널이 특정 자원에 접근하기 전에 보안 훅을 심어두고 이를 통해 보안 모듈이 커널 동작을 허용할지 판단할 수 있도록 만들었다.LSM에서 지원하는 훅 지점의 예시로는 아래와 같다.파일 열기, 생성, 삭제 및 이동파일 시스템 마운트작업 및 프로세스에 대한 운영소켓 관련 작업(소켓 생성, 바인딩, 메시지 송수신 등)더 많은 훅 포인트는 아래 링크에서 확인할 수 있다.https://github.com/torvalds/linux/blob/master/incl..

eBPF-/Advanced 2026.06.03

[eBPF Advanced] 04. TCP 연결 상태와 TCP RTT 기록

개요전 실습인 TCP 연결 지연 확인에서 TCP connect를 호출한 시점부터 연결이 완료되는 시점까지 시간을 확인했다. 이번 실습에서는 연결이 성립된 이후에 데이터의 왕복 지연 시간을 기록한다. connent가 끝난 뒤에 내트워크는 혼잡/지연 등 여러 요인으로 RTT가 변하게되는데, 이번 실습을 통해 어느 state에서 얼마나 걸렸는지 확인할 수 있는 방법을 알아본다. tcpstatestcprtt와 tcpstates 도구를 사용하면 네트워크 문제를 더 쉽게 찾을 수 있도록 TCP 연결의 왕복 시간을 모니터링하고 네트워크 품질을 평가하여 문제를 식별하는데 도움을 줄 수 있다. TCP State transition실습 코드// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2..

eBPF-/Advanced 2026.06.03

[eBPF Advanced] 03. TCP 연결 지연 확인

TCP 연결 지연개발을 할 때 데이터베이스를 호출하거나, 원격 호출을 수행하는 경우가 종종 나타난다. 이럴 때 구현은 보통 TCP 프로토콜을 기반으로 한다. 이는 안정적인 연결과 오류가 일어날 때 재전송, 혼잡 제어 등의 장점을 가지고 있기 때문이다. 하지만 TCP는 이러한 장점을 가지지만 UDP 보다 연결 지연이 크다는 단점이 있다. TCP 연결 지연을 분석하면 네트워크의 성능 분석과 문제 해결에 유용하다. tcpconnlattcpconnlat 도구는 TCP 연결을 수행하는 connect()와 같은 커널 함수를 추적하고, 연결지연 시간에 해당하는 SYN 패킷 전송부터 응답 패킷 수신까지의 시간을 측정하고 표시할 수 있다. 3-Way HandshakeTCP 연결은 일반적으로 3방향 핸드셰이킹 과정을 거치..

eBPF-/Advanced 2026.06.03

[eBPF Advanced] 02. 메모리누수 모니터링

메모리 누수메모리 누수는 컴퓨터 프로그래밍에서 자주 나오는 문제이다.메모리 누수가 발생하게 되면 시간이 지나면서 시스템의 가용 메모리를 점진적으로 소비하게 되고, 이러한 현상은 시스템 전반의 성능을 저하시킨다.메모리 누수의 원인은 다양한데, 대표적인 원인은 아래와 같다.동적 메모리 할당 및 해제 과정에서의 구성 오류소프트웨어의 버그, 메모리 관리 전략 오류예를 들어 더 이상 사용하지 않는 메모리를 해제하지 않게되면 메모리 누수가 발생한다. 추가로 메모리 사용량이 급격하게 증가하면 페이징과 스와핑이 빈번하게 발생하야 시스템 성능이 저하된다. 메모리 누수 디버깅의 어려움메모리 누수 문제를 디버깅하는 과정은 굉장히 복잡하고 난이도가 높다.원인파악을 위해 프로그램의 구조뿐만 아니라 메모히 할당과 해제 흐름을 세..

eBPF-/Advanced 2026.06.03

[eBPF Advanced] 01. libbpf를 사용한 유저공간 프로그램: exec() exit() 함수 추적

Bootstrap이번에 실습할 프로그램은 이눅스 커널에서 발생하는 exec과 exit를 추적하여 프로세스들의 생성과 종료를 관찰하는 것을 목표로 한다.커널공간과 우저공간의 역할 분리를 명확히하며 확장이 가능한 구조를 따른다. 사용자 부분은 libbpf 라이브러리를 사용해서 커널공간의 프로그램을 로드하고 실행하며, 커널공간 프로그램에서의 수집한 데이터를 처리하는 구조를 따른다. 실습 코드커널공간: bootstrap.bpf.c// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause/* Copyright (c) 2020 Facebook */#include "vmlinux.h"#include #include #include #include "bootstrap.h"char LI..

eBPF-/Advanced 2026.06.03

[eBPF Advanced] 00. Advanced 환경 세팅

Advanced 단게 부터는 bpf 코드 뿐만 아니라 이를 제어하기 위한 유저 공간에서의 코드도 함께 제공된다. ebpf 프로그램을 커널에 붙이기 위해 libbpf를 사용하여 컴파일 할 것이다.물론 기존 흐름에서는 ecli를 사용하기 때문에 사용자가 직접 유저 공간을 컴파일할 필요가 없지만, 직접 빌드하고 결과를 느껴보는 것이 중요하다고 생각하기 때문에 이렇게 환경을 세팅하게 되었다. 실행 환경OS : ubuntu server 24.04.03 LTS 필수 패키지sudo apt updatesudo apt install -y clang llvm lld make gccsudo apt install -y libbpf-dev libelf-dev zlib1g-devsudo apt install -y linux-to..

eBPF-/Advanced 2026.06.03