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