selinux_140.pdf
SELinux 란?
- SELinux (Security Enhanced Linux)는 미국 국가 안전 보장국(NSA)이 중심이 되어 개발한 보안 강화 커널 모듈로 리눅스에 Secure OS 기능을 추가
SELinux 기본 개념
(1) 의무 접근 제어 (MAC)
- 리눅스에서는 각각의 파일이나 디렉터리 소유자가 파일이나 디렉터리의 권한을 자유롭게 설정할 수 있었음
- 이를 임의 접근 제어 (
DAC: Discretionary Access Control) 이라고 하며, 표준 리눅스 보안으로 채택되어 있음
- 사용자들이 각각 원하는 대로 (가능한 범위에서) 권한을 설정할 수 있으므로 관리자가 시스템 전체를 통합적으로 관리하기 어려웠음
- setuid 등으로 인해 권한이 탈취된 결함이 있는 소프트웨어의 악의적인 행위를 막아낼 방법이 없음
- SELinux는 시스템 관리자가 파일과 디렉터리의 권한을 중앙에서 관리할 수 있음
- 이를 의무 접근 제어 (
MAC: Mandatory Access Control) 이라고 함
- 시스템 관리자는 '정책 파일'을 이용해 시스템 전체를 종합적으로 관리 할 수 있음

(2) 최소 권한
- 아무리 보안 수준을 높여도 root 사용자의 계정이 탈취되면 바로 시스템 조작 권한이 침입자에게 넘어가게 됨
- SELinux 에서는 root 권한을 분할해 사용자와 서비스에 최소한의 권한만을 부여해서 root 권한이 탈취되는 상황에서도 피해를 최소화하는 구조
- 시스템 관리에 필요한 권한은
Role 이라는 역할로 구분되고, 사용자에게 필요한 최소한의 Role만을 할당
- 역할 기반 접근 제어 (
RBAC: Role Base Access Control)

(3) TE (Type Enforcement)
- SELinux에서는 파일, 디렉터리, 장치 등의 시스템 자원에 대해 타입(Type)이라는 레이블(식별자)를 부여함
- 프로세스에 붙는 레이블은 도메인(Domain)이라고 함
- 프로세스에 대해 타입(도메인)을 할당하여 제어하는 구조를 TE (Type Enforcement) 라고 함
- TE 구조에서는 취약점이 있는 프로세스를 통해 권한이 탈취 당한다고 해도 프로세스에 허용된 최소한의 권한만 탈취 당하게 된다.

(4) 도메인 전이