본문으로 바로가기

SELinux (Secure Enhanced Linux)란?

category Security/Linux Server 2017. 12. 27. 19:52

1. 접근 통제 ( Access Control )

식별 및 인증된 사용자가 허가된 범위 내에서 시스템 내부정보에 대한 접근을 허용하는 기술적 방법을 접근 제어라고 한다. 


- 유형

임의적 접근 통제(Discretionary AC(DAC))

신원기반 접근 통제(Identify-based)

사용자기반 접근 통제(User-directed

혼합방식 접근 통제(Hybrid)


강제적 접근 통제(Mandatory AC(MAC))

규칙기반 접근 통제(Rule-based)

관리기반 접근 통제(Administratively)


비임의적 접근 통제(Non discretionary AC(NDAC))

역할기반 접근 통제(Role-based)

직무기반 접근 통제(Task-based)

래티스 접근 통제(Lattice-based)


EX)

임의적 접근 통제 방식의 대표적인 예

# ls -l file1.txt

-rw-r--r--  1   user01 user01  453  <시간>  file1


강제적 접근 통제 방식의 대표적인 예

(주체의 비밀 취급 인가 레벨) (객체의 민감도 레이블)

Top Secret         Top Secret

Secret Secret

Confidential         Confidential

  SBU

  Unclassified


비임의적 접근 통제 방식의 대표적인 예

RBAC

사용자 <--> 역할 <-----> 허가 <--> 정보


EX) 웹서비스 Open 

(기본)

1. 웹 서비스 프로그램 설치

2. 웹 서비스 설정

3. 웹 서비스 기동

4. 방화벽 서비스 Open


(SELinux)

1. 웹 서비스 프로그램 설치

2. 웹 서비스 설정

3. 웹 서비스 기동

4. 방화벽 서비스 Open

5. SELinux 설정


- 정리

 


SELinux는 시스템 보안을 한단계 강화한다. 

SELinux의 기본 목적은 손상된 시스템 서비스로 부터 사용자 데이터를 보호하는 것이다.

(이전) DAC(Discretionary Access Control) : 사용자/그룹 기반 모델(현재) MAC(Mandatory Access Control) : 개체 기반의 정교한 규칙으로 제어할 수 있는 추가적인 보안 레이어를 제공한다.

SELinux는 프로세스가 파일, 디렉토리, 포트에 액세스 할 수 있는지 결정하는 보안 규칙의 집합이다.

모든 프로세스, 파일, 디렉토리, 포트는 SELinux 컨텍스트라는 특별 보안 레이블이 있다.

컨텍스트는 SELinux 정책에서 프로세스가 파일, 디렉토리, 포트에 액세스할 수 있는지 여부를 결정할 수 있는지를 결정하는데 사용하는 이름이다.

기본 정책은 명시적 규칙에 의해 액세스를 허용하지 않는 이상 어떤 상호 작용도 허용하지 않는다. 허용 규칙이 없을 경우 액세스가 되지 않는다.

SELinux 레이블에는 여러 컨텍스트, 즉, 사용자, 역할, 유형, 민감도가 있다.

RedHat 계열 리눅스에서 활성화 되는 기본 정책인 대상 정책(Target Ploicy)은 세번째 컨텍스트, 즉, 유형 컨텍스트를 기준으로 규칙을 정한다.

유형 컨텍스트 이름은 대개 _t로 끝난다.

(예): 아파치(httpd_t로 실행하는 웹서버 프로세스)가 /var/www/html 및 기타 웹 서버 디렉토리(httpd_sys_content_t)에서 일반적으로 발견되는 컨텍스트의 파일 및 디렉토리 액세스 할 수 있도록 허용하는 정책 규칙이 있다. /tmp 및 /var/tmp에서 일반적으로 발견되는 파일에 대한 정책에 허용 규칙이 없기 때문에 액세스가 허용되지 않는다. SELinux를 사용하면 악의적인 사용자가 /tmp 디렉토리에 액세스할 수 없다.

ps, ls, cp, mkdir 명령어에는 -Z 옵션을 통해 SELinux 컨텍스트를 표시하거나 설정할 수 있다.