Linux ETC

SELinux 제어 방법

2008.05.19 20:14

호스트웨이 조회 수:32676

[SELinux 제어 방법]



1. SELinux 설치 및 미 설치 방법

설치 중 방화벽 설정 화면에서 선택한 사항에 기초하여 설치자(installer)가 처리.
설치(active) : 기본 가동 정책(default running policy)은 목표 정책이며, 기본으로(by default) 가동된다.
- 미설치(disabled) : disabled 상태로 변경하여 설치 진행한다.

2. 사용중인 정책을 교체하는 방법

- system-config-securitylevel

정책을 바꾸고 재명명(relabel)하도록 파일 시스템을 설정하는 것이다.

(1)/etc/selinux/config을 편집하고 SELINUXTYPE=policyname으로 정책 유형을 바꾼다.
(2)재 부팅 하여 돌아올 수 있는지 확인하기 위해, SELINUX=permissive 모드로 설정한다.
이렇게 하면, SELinux는 정확한 정책하에서 가동될 것이지만, 만일 부정확한 파일 문맥 명명(labeling)과 같은 문제가 있으면 로그인 하도록 할 것이다.
(3)sysadm_r 역할을 갖춘 root로 파일 시스템을 재명명 한다(relabel)

id -Z
root:sysadm_r:sysadm_t
fixfiles relabel

옵션 -l /path/to/logfile을 사용하여 표준 출력으로 로그를 볼 수 있고, 옵션 -o /path/to/file을 사용하여 검토(checked)되거나 재 명명(relabeled)된 모든 파일 리스트를 저장할 수 있다.

(4)시스템을 재 부팅 한다. 새 정책하에서의 재 시작은 모든 시스템 프로세스가 적절한 문맥에서 시작되고 정책 변경으로 인한 모든 문제가 드러나게 한다.

(5)sestatus –v 명령으로 발효된 변경사항을 확인한다. Permissive 모드로 가 동된 새 시스템에서, avc: denied 메시지를 /var/log/messages에서 확인한 다. 이들은 새 정책하에 문제없이 시스템이 가동되도록 해결해야 할 문제들을 표시해 준다.

(6)새 정책하에서 시스템이 만족스럽게 돌아갈 때, SELINUX=enforcing 으로 바꿔 실행 권한을 부여한다. 실시간에 enforcing을 활성화 시키기 위 해 재 부팅하거나 setenforce 1을 실행한다.

3. 특정 데몬에 대하여 SELinux protection을 활성화/비활 성화 방법

- 특정 데몬의 부울 값을 제어하려면 system-config-securitylevel을 사용한다.
예를 들어, 만일 apache가 시스템상에서 올바르게 동작하도록 하기 위해서는 SELinux를 비활성화 시켜야 한다면, system-config-securitylevel으로 해당 값을 비활성화시키면 된다.
이는 apache.te에 정의된 정책으로 전이되는 것을 막고 httpd가 일반 리눅스 보안 하에 있도록 한다.

4. 부팅 중 SELinux를 비활성화시키는 방법

- 커널 명령 라인에 selinux=0를 추가

5. 부팅시 enforcing을 활성화/비활성화하는 방법

- /etc/sysconfig/selinux 설정 파일을 이용

====================================================

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.

SELINUX=enforcing
.
.

(1) SELINUX=enforcing : enforcing을 활성화하기 위해 커널을 부팅할 때 명령 라인에 enforcing =1을 추가하는 것과 같다.

(2) SELINUX=permissive : enforcing을 비활성화하기 위해 enforcing=0 를 추가하는 것과 같다.

(3) SELINUX=disabled : 커널 부트 인자 selinux=0을 사용 하는 것과 다르다.

커널에서 SELinux를 완전하게 비활성화시키는 것과 달 리 대신 disabled를 설정하는 것은 enforcing을 비활성화하고 정책 적재를 하지 않고 건너뛰는 것이다.

====================================================

6. 재부팅하지 않고 enforcing 모드를 임시로 비활성화/활성화 방법

- 실시간으로 enforcing모드를 비활성화시키기 위해서 sentenforce 0 명령을 실행.
작업이 끝나서 enforcing 모드로 돌아오기 위해서는 sentenforce 1을 실행.

7. SELinux 설치에 관한 상태 정보(status info)를 얻는 방법

- root 사용자 권한으로 /usr/sbin/setstatus –v 명령을 실행.