SELinux(Security Enhanced Linux)는 MAC(Mandatory Access Control) 모델을 사용하여 사용자, 프로세스, 파일, 포트 등에 정의되어 있는 정책을 부여해 접근을 제어한다. SELinux는 각 사용자나 프로세스 그리고 파일에 보안 레이블을 지정하는데 이는 컨텍스트(Context)라고 부른다. 연관성 있는 컨텍스트여야 사용자가 접근할 수 있다. 부울(Boolean)은 서로 접근할 필요가 있을 때 접근을 허용하는 스위치와 같은 기능으로 On 또는 Off 할 수 있으며 시스템이 운영 중인 상태에서도 정책의 동작을 변경할 수 있다. SELinux는 포트에도 레이블을 적용하기 때문에 표준 포트 이외의 포트를 사용하려면 포트 레이블을 적용해야 한다.
1) Disabled 모드
SELinux 커널 모듈을 메모리에 로드하지 않기 때문에 완전 비활성화 되어 있는 상태. 시스템은 DAC(Discretionary Access Control) 모델을 사용하며 파일에 부여된 권한을 기준으로 접근이 제어된다.
2) Enforcing 모드
커널 모듈을 메모리에 로드하여 활성화되어 있는 상태. 파일에 접근할 때 권한과 컨텍스트, 부울 등을 확인하고 필요시 차단
3) Permissive 모드
Enforcing 모드와 동일하게 활성화 되어 있지만 정책을 강제하지 않는다. 대신 위반 시 경고 메시지만 로그에 남김.
4) 추가 사항
1) 사용자 -> SELinux 사용자
2) 역할 -> 사용자와 도메인을 연결하는 기능이며, 궁극적으로 접근할 수 있는 오브젝트 유형을 결정
3) 유형 -> 주체가 객체에 접근하려고 할 때, 컨텍스트를 비교하기 위해 사용됨
4) 레벨 -> MLS(Multi Level Security) 정책을 사용하여 보완성을 더욱 강화할 때 사용됨
부울의 확인
getsebool {-a | boolean-name }
semanage boolean -l
부울의 설정
setsebool [-P] boolean-name {on | off}
-P 옵션은 시스템이 재부팅 되어도 설정을 유지한다는 옵션
semanage boolean -m {-0 | -1} boolean-name
포트 레이블 확인
semanage port -l
포트 레이블 설정
semanage port {-a | -m | -d} -t port-type -p {tcp|udp} port-number