[Linux] SELinux 개념과 기본 설정법

리눅스를 조금 더 안전하게 운영하고 싶다면 SELinux에 대해 알아두는 것이 좋습니다.
처음 접할 땐 다소 어렵게 느껴질 수 있지만, 핵심 개념과 기본 설정만 알아도 실무에 큰 도움이 됩니다.

 


1. SELinux란 무엇인가요?

SELinux(Security-Enhanced Linux)는 리눅스 시스템의 접근 제어를 강화하기 위해 만들어진 보안 모듈입니다.
미국 NSA에서 개발했으며, Red Hat 계열(CentOS, RHEL, Fedora 등)에서 기본으로 탑재되어 있습니다.

기존의 리눅스 권한 모델이 사용자/그룹/퍼미션(UGP)에만 의존한다면, SELinux는 리소스 간 상호작용을 정책(policy)에 따라 더욱 엄격하게 제어합니다.

 

2. SELinux 동작 모드

SELinux는 세 가지 모드로 작동합니다:

  • Enforcing : 정책을 적용하고 위반 시 차단 (기본값)
  • Permissive : 정책 위반을 로그에만 기록 (학습/디버깅용)
  • Disabled : SELinux 완전 비활성화

현재 모드 확인:

getenforce

또는 더 자세히:

sestatus

 

 

3. SELinux 설정 파일

SELinux의 기본 설정 파일은 /etc/selinux/config입니다.
이 파일을 수정하면 시스템 재부팅 후 적용됩니다.

# /etc/selinux/config 예시
SELINUX=enforcing
SELINUXTYPE=targeted
  • SELINUX= 값은 enforcing, permissive, disabled 중 선택
  • SELINUXTYPE= 값은 일반적으로 targeted 사용 (대부분의 데몬에만 적용)

 

4. SELinux 잠시 끄기 (재부팅 없이)

테스트나 문제 해결 중에는 일시적으로 permissive 모드로 변경할 수 있습니다:

sudo setenforce 0  # permissive 모드로 변경
sudo setenforce 1  # enforcing 모드로 다시 변경

변경된 모드는 재부팅 후 다시 원래 설정으로 돌아갑니다.

 

 

5. SELinux 로그 확인하기

SELinux에서 어떤 접근이 차단되었는지 확인하려면 로그를 살펴봐야 합니다.

sudo cat /var/log/audit/audit.log | grep AVC

또는 ausearch 명령을 사용할 수도 있습니다:

sudo ausearch -m avc

 

 

6.  SELinux 정책 문제 해결 – restorecon & chcon

- 컨텍스트 초기화 (restorecon)

sudo restorecon -Rv /var/www/html

파일이나 디렉토리의 SELinux 보안 컨텍스트를 원래대로 복원합니다.

- 수동 컨텍스트 변경 (chcon)

sudo chcon -t httpd_sys_content_t /var/www/html/index.html

임시로 보안 컨텍스트를 변경하고 싶을 때 사용합니다. 영구 적용은 아닙니다.

 

 

SELinux는 강력한 보호막입니다

SELinux는 리눅스 시스템의 보안을 한층 강화할 수 있는 매우 유용한 도구입니다.
처음에는 어렵게 느껴질 수 있지만, 모드 변경과 로그 분석, 컨텍스트 복구 같은 기초만 익혀도 다양한 상황에 대비할 수 있습니다.

단순히 끄는 것이 아니라, 왜 막혔는지를 확인하고 적절히 설정해보는 연습을 해보시는 것을 권장합니다.