SELinux란
SELinux(Security-Enhanced Linux)는 미국 NSA가 개발에 참여한 리눅스 커널 보안 모듈로, 파일 소유자가 임의로 권한을 정하는 기존 방식(DAC, 임의 접근 제어)과 달리 시스템 전체에 강제되는 보안 정책(MAC, 강제 접근 제어)을 적용합니다.
DAC와 무엇이 다른가
일반적인 chmod/chown 권한은 프로세스가 root 권한만 획득하면 사실상 모든 것에 접근할 수 있습니다. SELinux는 프로세스마다 컨텍스트(도메인)를 부여하고, 정책에 명시적으로 허용된 행위만 수행하도록 커널 레벨에서 강제합니다. 웹서버가 침해당해도 정책에 없는 파일이나 포트에는 접근할 수 없게 막는 식입니다.
자주 쓰는 명령
# 현재 상태 확인
sestatus
# 임시로 비활성화(테스트용, 운영 비권장)
setenforce 0
# 컨텍스트 재적용
restorecon -Rv /var/www/html
문제가 생겼다고 SELinux를 영구적으로 꺼버리기보다는, permissive 모드로 로그를 확인해 정확히 어떤 정책이 막고 있는지 찾아 예외를 추가하는 방식이 권장됩니다.