전통적 권한(DAC, Discretionary Access Control)은 「소유자가 자기 파일 권한을 결정」.
SELinux는 「시스템이 강제하는」 추가 통제(MAC, Mandatory Access Control).
RHEL·Fedora·CentOS의 기본.
왜 필요한가.
웹 서버가 해킹돼도 「웹 서버 프로세스는 /var/www만 읽고 다른 데는 못 봄」 — DAC만으로는 root 권한 얻으면 다 됨, MAC은 「어떤 권한을 가졌든 정의된 정책 외 차단」.
「방어 심화(defense in depth)」 개념.
모드.
1) Enforcing — 정책 위반을 차단(프로덕션 권장).
2) Permissive — 차단 안 하고 로그만(디버깅용).
3) Disabled — SELinux 끔(권장 안 함).
getenforce로 확인, sudo setenforce 0/1로 일시 변경.
흔한 시나리오.
웹 서버가 갑자기 동작 안 함 — SELinux가 차단했을 가능성.
/var/log/audit/audit.log 확인 + audit2allow로 허용 정책 생성.
또는 chcon으로 컨텍스트 임시 변경, semanage로 영구.
초보 함정.
「뭐가 안 되네」 → 「SELinux 끄자」가 흔한 잘못.
우선 setenforce 0로 임시 시험 → 진짜 SELinux 문제인지 확인 → 정책 수정으로 해결.
그냥 끄는 건 보안 약화.
한 줄 요약
SELinux는 RHEL 계열의 강제 접근 제어(MAC) — DAC를 보완.
Enforcing(차단)·Permissive(로그만)·Disabled.
「뭐가 안 됨」 시 그냥 끄지 말고 정책 수정으로.
더 알아볼 것
- audit2allow로 정책 생성
- semanage·chcon 명령
- SELinux Coloring Book