[OS]/Embedded&Linux

SElinux

하늘을닮은호수M 2007. 9. 17. 10:41
반응형

출처 : http://www.rootman.co.kr/NFS2/pds/Linux/SELinux.pdf

SELinux란?
A: 휘도라 코어(Fedora Core)의 SELinux(Security-Enhanced Linux)란 리
눅스 보안 모듈 구조체(Linux Security Modules(LSM) framework)를 이용
하여 리눅스 커널에 의무 접근 제어(Mandatory Access Control - MAC)를
구현하는 것이다. 표준 리눅스 보안(Standard Linux Security)은 자유재량
접근 제어(Discretionary Access Control – DAC) 모델이다. DAC 모델에서,
파일과 자원에 대한 결정권은 오직 해당 객체(objects)의 사용자(user id)에
게 있고 소유권(ownership)에 따라 이뤄진다. 각 사용자와 그 사용자에 의
해 실행된 프로그램은 자기에게 할당된 객체에 대해 전적으로 자유재량권을
갖는다. 이러한 상황에서는, 악의 있는 일반 혹은 루트 사용자(예로, setuid
와 setgid)가 실행시킨 결함이 있는 소프트웨어를 통해 주어진 객체로 원하
는 어떠한 일을 해도 막아낼 방법이 없으며 보안 정책을 시스템 전체에 걸
쳐 시행되도록 할 방법이 없다.
MAC 시스템은 위와 같은 빠져있는 요소들을 제공한다. 첫 째, 보안 정책을
모든 프로세스나 객체에 대하여 관리차원으로 규정 지을 수 있다. 둘 째, 커
널에 SELinux를 구현하면, 모든 프로세스와 객체를 제어할 수 있다. 셋 째,
결정은 단지 인증된 사용자(user identity)에 의해서가 아니라 이용 가능한
(available) 모든 보안 관련 정보에 근거하여 이뤄진다.
SELinux하에서 MAC는 모든 주체(subjects – 사용자, 프로그램, 프로세스)와
객체(파일, 디바이스)에 대해서 국부적으로 허가(granular permissions)해 줄
수 있다. 응용프로그램에서 불필요한 부분은 제외하고 오직 필요한 기능에
대해서만 사용 권한을 안전하게 부여한다.
SELinux 구현은 역할과 유형 시행(Type Enforcement - TE)에 기초하여 추
상적 사용자 수준 제어(abstracted user-level control)를 제공하는 역할 기
반 접근 제어(role-based access control – RBAC)를 사용한다. TE는 접근
제어를 처리하기 위해서 테이블(매트릭스)을 이용한다. 주체는 영역(domain)
을 갖고 객체는 유형을 갖으므로, 매트릭스에서 교차조회하여 이들의 상호작
용을 규정한다. 이는 리눅스 시스템에 있는 모든 동작자(actor)에 대하여 극
단적으로 국부 제어를 가능케 한다.
Q: SELinux 정책이란?
A: SELinux 정책은 사용자, 프로그램, 프로세스 그리고 이들의 동작 대상인
파일과 디바이스를 포함한 시스템 전체, 즉, 모든 주체와 객체에 대한 접근
허가(access permissions)를 기술한다. 휘도라 코아 정책은 관련 소스 패키
지와 함께 패키지로 공급된다. 현재 공급되는 정책 패키지는 다음과 같다.
• selinux-policy-strict-.rpm and selinux-policy-strict-sources-
.rpm
• selinux-policy-targeted-.rpm and selinux-policy-targetedsources-<
version-arch>.rpm
설치시 정책 소스는 /etc/selinux/policyname/src/policy에, 바이너리 정책 파일은
/etc/selinux/policyname/policy에 놓인다. 정책 소스는 최소 설치(ultra-minimal
installations)에 포함되지 않는다. 유형과 영역에 대한 정책은 주체와 객체에
대한 보안 문맥과 구분해서 별도로 설정된다.
Q: SELinux 목표 정책(SELinux targeted policy)이란?
A: 처음 SELinux가 휘도라 코아에 포함됐을 때, NSA의 엄격한 정책이 시행
됐었다. 시험 목적으로, 이는 그 엄격한 정책을 통해서 수백가지 문제점을
찾아낼 수 있었다. 뿐만 아니라, 휘도라 사용자들의 다양한 환경에 단 하나
의 엄격한 정책을 적용한다는 것은 실효성이 없다는 것이 명백히 드러났다.
기본 설치 이외의 것에 대해서 단일 엄격한 정책을 적용하는 것은 현지 일
반 사용자에게 전문 지식(기술)을 요구하는 것이었다.
이 시점에서, SELinux 개발자들은 사용자들이 선택한 내용을 검토하고, 다른
전략을 시도하기로 결정했다. 특정 데몬들, 특히, 깨지거나 손상(오염)되면
시스템을 황폐화시키거나 공격받기 쉬운 것들을 옥죄는(lock down) 데 초점
을 맞추는 정책을 만들기로 했다. 시스템의 나머지 부분은 SELinux가 활성
(enabled)이든 아니든 관계없이 똑같이 가동되도록, 즉, 마치 표준 리눅스
보안하에 운영되고 있는 것처럼 동작하도록 허용한다.
목표 정책 하에서, 대부분의 프로세스는 unconfined_t domain(무제한 영역)에
서 가동된다. 그 이름이 의미하는 바와 같이, 이 프로세스들은 거의
SELinux 정책에 의한 제한을 받지 안는다. 그러나, 그 프로세스들은 여전히
표준 리눅스/유닉스 보안에 의해 통제된다.
특정 네트워크 데몬들은 전용 정책을 갖고 있어, 응용프로그램이 시작될 때,
무제한 정책(unconfined_t policy)이 전용 정책으로 전이된다. 예를 들면, 시스
템 부팅시, init는 무제한 정책하에서 가동하지만, named가 시작할 때,
named 영역으로 전이되고 적시에 적절한 정책에 의해 옥죄어진다.
각 구체적인 데몬에 대한 목표 정책을 활성화 혹은 비활성화 시키는 것에
관하여 더 알고 싶으면, system-config-securitylevel의 사용법을 참조하기
바란다.

반응형

'[OS] > Embedded&Linux' 카테고리의 다른 글

AutoConf, Automake, and Libtool - Table of Contents  (0) 2007.09.17
리눅스 백신 avg  (0) 2007.09.17
SElinux  (0) 2007.09.17
tattertools 설치  (0) 2007.09.04
mysql 설치 & 환경설정 & root 패스워드 설정  (0) 2007.09.04