SELinux는 시스템의 애플리케이션, 프로세스, 파일에 대한 액세스 제어를 정의합니다. 액세스할 수 있는 항목과 액세스할 수 없는 항목을 SELinux에 지정하는 룰 세트인 보안 정책을 사용하여 정책에서 허용되는 액세스를 적용합니다.
주체로 알려진 애플리케이션이나 프로세스가 파일과 같은 객체에 대한 액세스를 요청하는 경우, SELinux는 주체와 객체에 대해 권한이 캐시되는 AVC(Access Vector Cashe)를 확인합니다.
SELinux가 캐시된 권한에 기반한 액세스에 대한 결정을 내릴 수 없는 경우 보안 서버에 요청을 전송합니다. 보안 서버는 애플리케이션이나 프로세스의 보안 컨텍스트와 파일을 확인합니다. 보안 컨텍스트는 SELinux 보안 정책 데이터베이스에서 적용됩니다. 그러면 권한이 허용되거나 거부됩니다.
권한이 거부되면 "avc: denied"라는 메시지가 /var/log.messages에 나타납니다.
SELinux 구성 방법
SELinux를 설정하여 시스템을 보호할 수 있는 몇 가지 방법이 있습니다. 가장 일반적인 방법은 타겟 정책 또는 다단계 보안(Multi-Level Security, MLS)입니다.
타겟 정책은 기본 옵션으로서 다양한 프로세스와 태스크 및 서비스를 처리합니다. MLS는 매우 복잡할 수 있으며, 일반적으로 정부 기관에서만 사용합니다.
/etc/sysconfig/selinux 파일을 보면 시스템이 어떤 방법으로 실행되어야 하는지 알 수 있습니다. 파일에는 SELinux가 허용 모드인지 실행 모드인지 아니면 비활성화 모드인지와 어떤 정책을 로드해야 하는지를 보여주는 섹션이 있습니다.
SELinux 레이블 설정 및 유형 실행
유형 실행 및 레이블 설정은 SELinux에서 가장 중요한 개념입니다.
SELinux는 레이블 시스템으로 작동되는데, 이는 시스템의 모든 파일, 프로세스 및 포트에 이와 연결된 SELinux 레이블이 있다는 의미입니다. 레이블은 구성 요소들을 논리적으로 그룹화하는 방식입니다. 커널은 부팅 중에 레이블을 관리합니다.
레이블은 user:role:type:level (레벨은 선택 사항임) 형식으로 되어 있습니다. 사용자, 롤, 레벨은 MLS의 경우와 같이 SELinux의 보다 고도화된 구현에 사용됩니다. 레이블 유형은 타겟 정책에서 가장 중요합니다.
SELinux는 유형 실행을 사용하여 시스템에 정의된 정책을 실행합니다. 유형 실행은 특정 유형으로 실행되는 프로세스가 특정 유형으로 레이블된 파일에 액세스할 수 있는지 여부를 정의하는 SELinux 정책의 일부입니다.
SELinux 활성화
SELinux가 사용자 환경에서 비활성화된 경우 /etc/selinux/config를 편집하고 SELINUX=permissive를 설정하여 SELinux를 활성화할 수 있습니다. SELinux는 현재 활성화되어 있지 않으므로 곧바로 실행 모드로 설정하지는 않습니다. 시스템에서 레이블이 잘못 설정되어 시스템이 부팅되지 않을 수 있기 때문입니다.
루트 디렉터리에서 이름이 .autorelabel인 비어 있는 파일을 생성하고 재부팅하여 시스템이 자동으로 파일 시스템 레이블을 재설정하도록 강제할 수 있습니다. 시스템 오류가 너무 많으면 허용 모드일 때 부팅이 되도록 재부팅해야 합니다. 모든 요소의 레이블이 재설정된 후에 /etc/selinux/config를 사용하여 SELinx를 실행 모드로 설정하고 재부팅하거나 setenforce 1을 실행합니다.
시스템 관리자가 커맨드라인에 익숙하지 않은 경우 SELinux 관리에 사용할 수 있는 그래픽 툴이 있습니다.
SELinux는 Linux 배포판에 기본으로 구축되는 시스템에 추가 보안 레이어를 제공합니다. SELinux가 켜진 상태로 있어야 시스템이 손상되더라도 이를 보호할 수 있습니다.