SELinux 개념 및 설정 방법

SELinux 개념 및 설정 방법

in

SELinux 는 Linux의 보안을 강화해 주는 보안 강화 커널로서 zero-day 공격 및 buffer overflow 등 어플리케이션 취약점으로 인한 해킹을 방지해 주는 핵심 구성요소입니다. 만약, 특정 서비스가 SELinux 때문에 동작하지 않는다면 SELinux 를 끄기 보다는 해당 서비스가 SELinux 밑에서 잘 동작하도록 설정을 수정하는것을 권장합니다.

SELinux 동작 모드

SELinux는 아래와 같은 동작 모드가 존재합니다.

  • Enforcing (default) - SELinux가 켜져있고 정책에 위반된 모든 작업을 차단합니다.
  • Permissive - SELinux가 켜져있지만 정책에 위반된 사항에 대한 경고만 합니다.(Audit 로그에 기록만 하는 상태)
  • Disable - SELinux가 완전히 꺼진 상태

selinux 활성화 여부 확인

getenforce

현재 SELinux가 활성화 상태인지 확인하려면 getenforce 명령어를 사용합니다.

$ getenforce
Enforcing

sestatus

SELinux의 자세한 상태를 알아보려면 sestatus 명령어를 사용합니다.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

SELinux 비활성화

setenforce 명령어를 이용한 임시 비활성화

setenforce 명령어를 통해 SELinux 모드를 전환할 수 있습니다.
아래처럼 “—help” 옵션을 통해 사용법을 알 수 있습니다.

$ setenforce --help
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

명령어에 ‘0’ 값을 전달하여 Permissive 모드로 전환(임시 비활성화) 할 수 있습니다. 서비스 재부팅을 하지 않아도 적용됩니다.

$ setenforce 0
$ getenforce
Permissive

설정파일을 통한 비활성화

SELinux의 설정파일 ”/etc/sysconfig/selinux” 를 수정해서 SELinux를 완전히 비활성화 할 때 사용합니다.
SELinux 설정파일 SELinux=enforcing을 disabled로 변경해 줍니다.

$ vim /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
SELINUX=disabled

# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

이후 재부팅을 해주면 SELinux가 완전히 비활성화 됩니다.

$ getenforce
Disabled