1.4. SELinux 아키텍처 및 패키지
SELinux는 Linux 커널에 빌드된 Linux 보안 모듈(LSM)입니다. 커널의 SELinux 하위 시스템은 관리자가 제어하고 부팅 시 로드하는 보안 정책에 의해 구동됩니다. 시스템의 모든 보안 관련 커널 수준 액세스 작업은 SELinux에서 가로채고 로드된 보안 정책 컨텍스트에서 검사합니다. 로드된 정책에서 작업을 허용하면 작업을 계속합니다. 그렇지 않으면 작업이 차단되고 프로세스가 오류를 수신합니다.
액세스 허용 또는 허용하지 않기와 같은 SELinux 결정은 캐시됩니다. 이 캐시를 AVC(액세스 벡터 캐시)라고 합니다. 이러한 캐시된 의사 결정을 사용할 때는 SELinux 정책 규칙을 보다 적게 확인하여 성능이 향상되어야 합니다. DAC 규칙이 먼저 액세스를 거부하면 SELinux 정책 규칙이 적용되지 않습니다. 원시 감사 메시지는 /var/log/audit/audit.log
에 기록되며 type=AVC
문자열로 시작합니다.
RHEL 8에서 시스템 서비스는 systemd
데몬에 의해 제어됩니다. systemd
는 모든 서비스를 시작하고 중지하며 사용자 및 프로세스는 systemctl
유틸리티를 사용하여 systemd
와 통신합니다. systemd
데몬은 SELinux 정책을 참조하여 호출 프로세스의 레이블과 호출자가 관리하려는 유닛 파일의 레이블을 확인한 다음, 호출자가 액세스할 수 있는지 여부를 SELinux에 요청할 수 있습니다. 이 접근 방식을 통해 시스템 서비스의 시작 및 중지를 비롯한 중요한 시스템 기능에 대한 액세스 제어를 강화합니다.
systemd
데몬은 SELinux 액세스 관리자로도 작동합니다. systemctl
을 실행하는 프로세스 또는 D-Bus
메시지를 systemd
로 보낸 프로세스의 레이블을 검색합니다. 그런 다음 데몬은 프로세스가 구성하려는 유닛 파일의 레이블을 조회합니다. 마지막으로 SELinux 정책에서 프로세스 레이블과 유닛 파일 레이블 간의 특정 액세스를 허용하는 경우 systemd
는 커널에서 정보를 검색할 수 있습니다. 즉, 특정 서비스의 systemd
와 상호 작용해야 하는 손상된 애플리케이션은 이제 SELinux에서 제한할 수 있습니다. 정책 작성자는 이러한 세분화된 제어를 사용하여 관리자를 제한할 수도 있습니다.
프로세스가 D-Bus
메시지를 다른 프로세스로 보내고 SELinux 정책에서 두 프로세스의 D-Bus
통신을 허용하지 않는 경우 시스템은 USER_AVC
거부 메시지를 출력하고 D-Bus 통신 시간이 초과됩니다. 두 프로세스 간의 D-Bus 통신은 양방향으로 작동합니다.
잘못된 SELinux 레이블 지정 및 후속 문제를 방지하려면 systemctl start
명령을 사용하여 서비스를 시작해야 합니다.
RHEL 8에서는 SELinux 작업을 위한 다음 패키지를 제공합니다.
-
policy:
selinux-policy-targeted
,selinux-policy-mls
-
툴:
policycoreutils
,policycoreutils-gui
,libselinux-utils
,policycoreutils-python-utils
,setools-console
,checkpolicy