나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2025-12-07 00:19:03

SELinux


파일:관련 문서 아이콘.svg   관련 문서: Linux
#!if 문서명2 != null
, [[Android]]
#!if 문서명3 != null
, [[]]
#!if 문서명4 != null
, [[]]
#!if 문서명5 != null
, [[]]
#!if 문서명6 != null
, [[]]
<colbgcolor=#fff,#4a4a44><colcolor=#4a4a44,#fff> SELinux
Security Enhanced Linux
파일:SELinux 로고.svg
용도 Linux용 보안 아키텍처
라이선스 GNU 일반 공중 사용 허가서
개발 Red Hat, 미국 국가안보국
출시일 1998년 1월 1일
최신 버전 3.7
링크 파일:홈페이지 아이콘.svg 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg
1. 개요2. 원리3. 운영4. 여담

1. 개요

SELinux(Security-Enhanced Linux, 보안 강화 리눅스)는 Linux Kernel에 내장된 MAC (Mandatory Access Control, 강제적 접근 제어) 모듈이다.[1]

2. 원리

SELinux는 시스템의 애플리케이션, 프로세스, 파일에 대한 액세스 제어를 정의한다. 액세스할 수 있는 항목과 액세스할 수 없는 항목을 SELinux에 지정하는 룰 세트인 보안 정책을 사용하여 정책에서 허용되는 액세스를 적용한다. auditd와 연동되어 운영된다.

주체가 파일과 같은 객체에 대한 액세스를 요청하는 경우, SELinux는 주체와 객체에 대해 권한이 캐시되는 AVC(Access Vector Cache)를 확인한다.

SELinux가 캐시된 권한에 기반한 액세스에 대한 결정을 내릴 수 없는 경우 보안 서버에 요청을 전송한다. 보안 서버는 애플리케이션이나 프로세스의 보안 컨텍스트와 파일을 확인한다. 보안 컨텍스트는 SELinux 보안 정책 데이터베이스에서 적용된다. 그러면 권한이 허용되거나 거부된다.

권한이 거부되면 auditd에 의해 avc: denied라는 메시지가 /var/log/messages, /var/log/audit/audit.log 파일에 나타난다. #

3. 운영


RHEL 배포판 Linux에는 Enforcing 상태로 기본 탑재되어 있고, Android에는 SELinux의 개량형인 SEAndroid (Security Enhancements for Android)가 Enforcing 상태로 기본 탑재되어 있다.

SELinux의 컨텍스트를 제어하는 툴로는 audit2allow, semanage, semodule 등이 있다.

4. 여담


[1] MAC 시스템은 시스템 관리자가 설정한 중앙 정책에 따라 주체가 개체에 대해 수행할 수 있는 작업을 제한하고 제어하도록 설계한 시스템이다. 최소 권한을 원칙으로 한다. #[2] 개인에 비유하자면 백신 프로그램을 램 용량과 배터리만 잡아먹는 골칫덩어리로 보는 것과 같은 이치다. 이는 안전불감증도 있고, 현실적으로 시스템이 넉넉지 않으니 발생하는 것이다.[3] BPF 백도어 공격은 eBPF의 취약점을 이용하여 리버스 쉘을 열어 악의적인 행위를 하는 것이다. 리버스 쉘은 서버 데몬 프로세스의 실행 계정에 할당된 권한 내에서만 악의적인 행위를 할 수 있고, 루트 권한 없이 진행되었다면 SELinux 정책에 의하여 차단된다. NGINX 등의 서버 데몬이 서비스 전용 계정의 권한이 아닌 루트 권한으로 실행되었다면, 이를 통한 리버스 쉘도 루트 권한 내에서 실행되기에 SELinux를 원격으로 끌 수 있다. 따라서, SELinux가 효과를 보려면 무분별한 루트 권한 할당을 지양하고 각 프로세스 별로 최소한의 권한만을 주어야 한다.