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는 실행 중인 프로세스 중 하나를 강제로 … 더 읽기

Linux Slab Allocator란? 커널 메모리 할당 구조와 Slab, SLUB, SLOB의 차이점

Linux에서는 사용자 프로그램뿐 아니라 커널도 지속적으로 메모리를 할당하고 해제합니다. 파일을 열거나 네트워크 패킷을 처리하고, 프로세스를 생성하거나 파일 시스템을 관리할 때마다 커널 내부에서는 수많은 메모리 객체가 생성되고 제거됩니다. 만약 커널이 매번 새로운 메모리를 할당하고 반환한다면 성능 저하와 메모리 단편화(Fragmentation)가 심각하게 발생할 수 있습니다. 이를 해결하기 위해 Linux Kernel은 Slab Allocator라는 메모리 관리 기법을 사용합니다. 이번 글에서는 … 더 읽기

Linux Page Cache란? 파일 캐시의 동작 원리와 메모리 성능 최적화 방법

Linux 서버를 운영하다 보면 free -h 명령을 실행했을 때 메모리가 거의 모두 사용 중인 것처럼 보이는 경우가 있습니다. 하지만 실제로는 애플리케이션이 메모리를 모두 사용하는 것이 아니라 Page Cache(페이지 캐시) 가 많은 메모리를 차지하고 있는 경우가 대부분입니다. Page Cache는 디스크에서 읽은 데이터를 메모리에 임시 저장하여 같은 데이터를 다시 요청할 때 디스크를 거치지 않고 메모리에서 즉시 제공하는 … 더 읽기