Linux Tracepoint란? eBPF와 성능 분석을 위한 커널 이벤트 추적 기술 완벽 이해

Linux 서버의 성능 문제를 분석하거나 시스템 내부에서 어떤 일이 발생하는지 확인하려면 커널 이벤트(Kernel Event) 를 관찰해야 합니다. 과거에는 Kernel 로그나 디버깅 기능에 의존하는 경우가 많았지만, 최근에는 eBPF와 함께 Tracepoint를 활용하는 방식이 표준이 되었습니다. Tracepoint는 Linux Kernel에 미리 정의된 이벤트 지점으로, 특정 동작이 발생할 때마다 정보를 수집할 수 있는 기능입니다. eBPF 프로그램을 Tracepoint에 연결하면 커널을 수정하지 … 더 읽기

Linux BPF Map이란? eBPF 프로그램이 데이터를 저장하고 공유하는 핵심 구조 이해

eBPF 프로그램은 Linux Kernel 내부에서 실행되지만 일반 프로그램처럼 전역 변수를 자유롭게 사용할 수 없습니다. 또한 커널에서 수집한 데이터를 사용자 공간(User Space)으로 전달하거나 여러 eBPF 프로그램 간에 데이터를 공유해야 하는 경우도 많습니다. 이때 사용하는 핵심 기능이 BPF Map입니다. BPF Map은 eBPF 프로그램이 사용하는 데이터 저장소이며, Kernel과 User Space가 데이터를 안전하게 공유하는 통로 역할을 합니다. 이번 글에서는 … 더 읽기

Linux eBPF란? 커널을 수정하지 않고 기능을 확장하는 차세대 Linux 기술 완벽 이해

최근 Linux 관련 기술을 공부하다 보면 eBPF(eBPF, Extended Berkeley Packet Filter) 라는 용어를 자주 접하게 됩니다. Kubernetes, Cilium, Falco, Pixie, BCC, bpftrace 등 최신 클라우드 네이티브 도구 대부분이 eBPF를 활용하고 있습니다. 과거에는 커널의 기능을 추가하거나 변경하려면 Kernel Module을 직접 작성하거나 커널을 수정하여 다시 컴파일해야 했습니다. 하지만 이러한 방식은 위험성이 높고 운영 서버에서 적용하기도 쉽지 않았습니다. … 더 읽기

Linux AppArmor란? SELinux와의 차이점 및 Ubuntu 보안 정책 관리 방법

Linux 서버를 운영하다 보면 SELinux와 함께 자주 등장하는 보안 기술이 AppArmor(Application Armor) 입니다. 두 기술 모두 애플리케이션의 권한을 제한하여 시스템을 보호하지만, 정책을 작성하는 방식과 관리 방법에는 차이가 있습니다. 특히 Ubuntu와 Debian 계열에서는 AppArmor가 기본적으로 활성화되어 있는 경우가 많으며, Docker나 Snap 패키지 등에서도 AppArmor를 활용하여 애플리케이션의 접근 권한을 제어합니다. 이번 글에서는 AppArmor의 개념과 동작 원리, SELinux와의 … 더 읽기

Linux SELinux란? 강제 접근 제어(MAC)와 보안 정책의 동작 원리 완벽 이해

Linux는 기본적으로 사용자와 파일의 권한을 관리하기 위해 DAC(Discretionary Access Control, 임의 접근 제어) 방식을 사용합니다. 하지만 DAC만으로는 Root 권한을 가진 사용자의 모든 행동을 제한할 수 없기 때문에 보안 측면에서 한계가 있습니다. 이를 보완하기 위해 등장한 것이 SELinux(Security-Enhanced Linux) 입니다. SELinux는 미국 국가안보국(NSA)이 개발한 Linux 보안 프레임워크로, MAC(Mandatory Access Control, 강제 접근 제어) 방식을 통해 시스템 … 더 읽기

Linux Seccomp란? 시스템 콜(System Call) 필터링으로 프로세스를 보호하는 보안 기술

Linux에서 실행되는 모든 프로그램은 파일을 읽거나 쓰고, 네트워크에 접속하며, 프로세스를 생성하는 등 다양한 작업을 수행합니다. 하지만 이러한 작업은 직접 하드웨어를 제어하는 것이 아니라 System Call(시스템 콜) 을 통해 Linux Kernel에 요청하는 방식으로 이루어집니다. 만약 악성 프로그램이나 공격자가 위험한 시스템 콜을 자유롭게 사용할 수 있다면 시스템 전체가 위험해질 수 있습니다. 이러한 위험을 줄이기 위해 Linux Kernel은 … 더 읽기

Linux Capabilities란? Root 권한을 세분화하는 Linux 보안 메커니즘 완벽 이해

Linux에서는 오랫동안 Root 사용자가 모든 시스템 권한을 가지고 있었습니다. Root는 파일 시스템 변경, 네트워크 설정, 프로세스 제어 등 거의 모든 작업을 수행할 수 있습니다. 하지만 모든 프로그램에 Root 권한을 부여하는 것은 보안상 매우 위험합니다. 단 하나의 취약점만으로도 시스템 전체가 공격받을 수 있기 때문입니다. 이 문제를 해결하기 위해 Linux Kernel은 Capabilities(리눅스 기능 권한) 이라는 보안 메커니즘을 … 더 읽기

Linux Namespace란? 프로세스 격리와 Docker 컨테이너의 핵심 기술 이해

Docker나 Kubernetes를 공부하다 보면 반드시 등장하는 개념이 Namespace입니다. 많은 사람들이 Docker가 독립적인 운영체제를 실행한다고 생각하지만, 실제로는 하나의 Linux Kernel을 여러 컨테이너가 함께 사용합니다. 그럼에도 각 컨테이너는 자신만의 프로세스, 네트워크, 파일 시스템을 가진 것처럼 동작합니다. 이러한 격리(Isolation)를 가능하게 하는 핵심 기술이 바로 Linux Namespace입니다. Namespace는 Linux Kernel이 제공하는 기능으로, 프로세스마다 시스템 자원을 서로 다른 공간처럼 보이게 … 더 읽기

Linux cgroups란? CPU·메모리·I/O 자원 제어와 Docker·Kubernetes의 핵심 기술 이해

현대 Linux 서버에서는 하나의 운영체제에서 여러 애플리케이션을 동시에 실행하는 것이 일반적입니다. 웹 서버, 데이터베이스, 캐시 서버, 컨테이너 등이 함께 실행되는 환경에서는 특정 프로그램이 CPU나 메모리를 과도하게 사용하면 다른 서비스까지 영향을 받을 수 있습니다. 이 문제를 해결하기 위해 Linux Kernel은 cgroups(Control Groups) 라는 기능을 제공합니다. cgroups는 프로세스를 그룹으로 묶어 CPU, 메모리, 디스크 I/O, 네트워크 등의 자원을 … 더 읽기

Linux OOM Killer란? Out of Memory 발생 원리와 프로세스 종료 기준 완벽 이해

Linux 서버에서는 메모리가 부족해지는 상황이 발생할 수 있습니다. 웹 서버에 과도한 요청이 몰리거나, 데이터베이스가 예상보다 많은 메모리를 사용하거나, 메모리 누수(Memory Leak)가 발생하면 시스템은 더 이상 새로운 메모리를 할당할 수 없게 됩니다. 이때 Linux Kernel은 시스템 전체가 멈추는 것을 방지하기 위해 OOM Killer(Out of Memory Killer) 를 실행합니다. OOM Killer는 실행 중인 프로세스 중 하나를 강제로 … 더 읽기