SELinux 는 enforce, permissive, disable 세 가지 동작 모드가 있으며 설치하면 기본적으로 enforce 모드로 동작합니다.


enforce 모드일 경우 SELinux 의 정책과 룰에 어긋나는 동작은 모두 차단되며 permissive 모드의 경우 정책에 어긋나는 동작은 감사 로그를 남기고 허용합니다.

운영 환경에서는 enforce 모드로 운영하는 것을 권장하며 개발과 테스트도 평소에는 enforce 모드로 사용하다가 데몬 서비스가 오작동할 경우 permissive 모드로 전환하여 일단 서비스가 되게 하고 감사 로그를 확인해서 원인을 찾고 문제를 해결한 후에는 다시 enforce mode 로 전환하는 방식이 좋은 습관입니다.



SELinux 의 동작 모드를 변경하는 명령어는 setenforce 명령어이며 0 또는 1을 옵션으로 줄 수 있으며 1일 경우 enforce 모드, 0 일 경우 permissive 모드로 설정됩니다.


현재 SELinux 의 동작 모드를 확인하려면 getenforce 명령어로 확인할 수 있습니다.


동작 모드 확인

SElinux 동작 모드에 대해 더 자세한 정보를 얻으려면 sestatus 명령을 사용할 수 있습니다. 다음은 setenforce 0명령어를 수행한 후에 sestatus 실행 결과로 현재 동작 모드는 permissive 모드이며 설정 파일에는 enforcing 으

로 설정된 것을 알 수 있습니다.

결과를 보면 현재 enforcing 모드로 구동되는 것을 확인할 수 있습니다. 만약 permissive 모드일 경우 아래와 같이 Current mode 가 변경되어 표시됩니다.


모드 영구 설정

permissive 로 전환한 후에 sestatus 의 결과를 보면 Current mode는 permissive 이지만 Mode from config file 항목은 enforcing 으로 두 개가 다르다는 것을 알수 있습니다.

setenforce 명령어로 설정한 모드는 영구적이지 않으며 재부팅하면 설정이 초기화 됩니다.

부팅시 기본으로 설정할 모드는 설정 파일을 열어서 SELINUX=enforcing 항목을 수정하면 되며 재부팅 해야 반영됩니다.

RHEL/CentOS 8

vi /etc/selinux/config
BASH

RHEL/CentOS 7 이하

vi /etc/sysconfig/selinux
BASH


만약 부팅시 permissive 로 설정되기를 원한다면 아래와 같이 수정하면 됩니다.


인터넷에 SELinux 를 치면 "끄기" 가 자동 완성되는데 부팅시에도 SELinux 를 해제하려면 아래와 같이 설정하면 되지만 보안을 위해서는 결코 권장하지 않습니다.


해제후 SELinux 를 다시 사용하려면 재부팅이 필요한데 이때 많은 시간이 걸릴 수 있습니다. 이유는 SELinux 의 핵심인 보안 컨텍스트는 파일 시스템에 기록하는데 해제하면 보안 컨텍스트를 기록하지 않으므로 재사용으로 설정 변경후 첫 부팅때 모든 파일과 디렉터리에 대해 보안 컨텍스트를 다시 분류해야 하기 때문입니다.


이런 이유때문에 만약 SELinux 정책 위반으로 인해 데몬 서비스가 제대로 구동되지 않는다면 해제보다는 permissive 로 전환하는 것이 좋습니다.