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