2장. SELinux 컨텍스트
프로세스 및 파일에는 SELinux 사용자, 역할, 유형, 수준(선택 사항)과 같은 추가 정보가 포함된 SELinux 컨텍스트로 레이블이 지정됩니다. SELinux를 실행할 때 이 모든 정보를 사용하여 액세스 제어 결정을 내립니다. Red Hat Enterprise Linux에서 SELinux는 역할 기반 액세스 제어(RBAC),TE(유형 강제), 선택적으로 XML(Multi-Level Security)의 조합을 제공합니다.
다음은 SELinux 컨텍스트를 보여주는 예입니다. SELinux 컨텍스트는 SELinux를 실행하는 Linux 운영 체제의 프로세스, Linux 사용자 및 파일에서 사용됩니다. 다음 명령을 사용하여 파일 및 디렉터리의 SELinux 컨텍스트를 확인합니다.
~]$
ls -Z file1
-rwxrw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
SELinux 컨텍스트는 SELinux 사용자:role:type:level 구문을 따릅니다. 필드는 다음과 같습니다.
- SELinux 사용자
- SELinux 사용자 ID는 특정 역할 집합과 특정 MLS/MCS 범위에 대해 인증된 정책에 알려진 ID입니다. 각 Linux 사용자는 SELinux 정책을 사용하여 SELinux 사용자에게 매핑됩니다. 이를 통해 Linux 사용자는 SELinux 사용자에게 지정된 제한 사항을 상속할 수 있습니다. 매핑된 SELinux 사용자 ID는 입력할 수 있는 역할과 수준을 정의하기 위해 해당 세션의 프로세스에 대해 SELinux 컨텍스트에서 사용됩니다. SELinux 및 Linux 사용자 계정 간 매핑 목록을 보려면 root로 다음 명령을 입력합니다( policycoreutils-python 패키지가 설치되어 있어야 함).
~]#
semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * root unconfined_u s0-s0:c0.c1023 * system_u system_u s0-s0:c0.c1023 *출력은 시스템마다 약간 다를 수 있습니다.로그인 이름
열에는 Linux 사용자가 나열됩니다.SELinux User(SELinux 사용자
) 열에는 Linux 사용자가 에 매핑되는 SELinux 사용자가 나열됩니다. 프로세스의 경우 SELinux 사용자는 액세스할 수 있는 역할과 수준을 제한합니다.MLS/MCS 범위
열은 MLS(Multi-Level Security) 및 MCS(Multi-Category Security)에서 사용하는 수준입니다.서비스
열은 Linux 사용자가 시스템에 로그인해야 하는 올바른 SELinux 컨텍스트를 결정합니다. 기본적으로 별표(*
) 문자가 사용되며 모든 서비스를 나타냅니다.
- 역할
- SELinux의 일부는 역할 기반 액세스 제어(RBAC) 보안 모델입니다. 역할은 RBAC의 속성입니다. SELinux 사용자에게는 역할에 대한 권한이 부여되며, 도메인에 대한 역할이 인증됩니다. 역할은 도메인과 SELinux 사용자 간의 중간 역할을 합니다. 입력할 수 있는 역할은 입력할 수 있는 도메인을 결정합니다. 궁극적으로 액세스할 수 있는 오브젝트 유형을 제어합니다. 이를 통해 권한 상승 공격의 취약점을 줄일 수 있습니다.
- type
- 유형은 Type Enforcement의 속성입니다. 유형은 프로세스의 도메인 및 파일의 유형을 정의합니다. SELinux 정책 규칙은 유형에 액세스하는 도메인이든 다른 도메인에 액세스하는 도메인이든 관계없이 유형이 서로 액세스할 수 있는 방법을 정의합니다. 액세스는 허용하는 특정 SELinux 정책 규칙이 있는 경우에만 허용됩니다.
- level
- 수준은 MLS 및 MCS의 속성입니다. MLS 범위는 레벨이 다를 경우 낮은 수준-고수준으로 작성되며 수준이 동일한 경우 낮은 수준 (
s0-s0은 s
0)으로 작성됩니다.
각 수준은 민감도 범주가 선택 사항인 민감도 범주 쌍입니다. 범주가 있는 경우 수준은 민감도:category-set 로 작성됩니다. 범주가 없으면 민감도 로 작성됩니다.범주 세트가 연속된 시리즈인 경우 약어로 표시할 수 있습니다. 예를 들어c0.c3
은c0,c1,c2,c3
과 동일합니다./etc/selinux/targeted/setrans.conf
파일은 수준(s0:c0)을 사람이 읽을 수 있는 양식(즉,
으로 매핑합니다. Red Hat Enterprise Linux에서는 대상 지정 정책은 MCS를 적용하며 MCS에서는 민감도 한 개만 존재합니다.CompanyConfidential
)s0
. Red Hat Enterprise Linux의 MCS는 1024가지 카테고리(c0
~c1023
)를 지원합니다.s0-s0:c0.c1023
은 민감도s0
이며 모든 범주에 대해 인증되었습니다.MLS는 LSPP(Labeled Security Protection Profile) 환경에서 사용됩니다. MLS 제한을 사용하려면 selinux-policy-mls 패키지를 설치하고 MLS를 기본 SELinux 정책으로 구성합니다. Red Hat Enterprise Linux와 함께 제공되는 MLS 정책은 평가된 구성의 일부가 아닌 여러 프로그램 도메인을 생략하므로 데스크탑 워크스테이션의 MLS를 사용할 수 없습니다(X Window System은 지원하지 않음). 그러나 모든 프로그램 도메인을 포함하는 업스트림 SELinux 참조 정책 의 MLS 정책을 구축할 수 있습니다. MLS 구성에 대한 자세한 내용은 4.13절. “다단계 보안(MLS)” 을 참조하십시오.
2.1. 도메인 전환
한 도메인의 프로세스는 새 도메인의
진입점
유형이 있는 애플리케이션을 실행하여 다른 도메인으로 전환합니다. 진입점
권한은 SELinux 정책에서 사용되며 도메인을 입력하는 데 사용할 수 있는 애플리케이션을 제어합니다. 다음 예제에서는 도메인 전환을 보여줍니다.
절차 2.1. 도메인 전환의 예
- 사용자가 암호를 변경하려고 합니다. 이렇게 하려면
passwd
유틸리티를 실행합니다./usr/bin/passwd
실행 파일은passwd_exec_t 유형으로
레이블이 지정됩니다.~]$
ls -Z /usr/bin/passwd -rwsr-xr-x root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwdpasswd
유틸리티는shadow_t
유형으로 레이블이 지정된/etc/shadow
에 액세스합니다.~]$
ls -Z /etc/shadow -r--------. root root system_u:object_r:shadow_t:s0 /etc/shadow - SELinux 정책 규칙은
passwd_t 도메인에서 실행되는 프로세스가
유형으로 레이블이 지정된 파일을 읽고 쓸 수 있음을 나타냅니다.shadow_t
shadow_t
유형은 암호 변경에 필요한 파일에만 적용됩니다. 여기에는/etc/gshadow
,/etc/shadow
및 해당 백업 파일이 포함됩니다. - SELinux 정책 규칙은 passwd
_t 도메인에 passwd_
exec_t
유형으로 설정된진입점
권한이 있음을 나타냅니다. - 사용자가
passwd
유틸리티를 실행하면 사용자의 쉘 프로세스가passwd_t 도메인으로
전환됩니다. SELinux에서는 기본 조치가 거부되고passwd_t 도메인에서 실행 중인 애플리케이션이
유형으로 레이블이 지정된 파일에 액세스할 수 있도록 허용하는 규칙이 있으므로shadow_t
passwd
애플리케이션에서/etc/shadow
에 액세스하고 사용자 암호를 업데이트할 수 있습니다.
이 예제는 전체가 아니며 도메인 전환을 설명하는 데 기본 예제로 사용됩니다.
passwd_t 도메인에서 실행 중인 주체가 shadow_t
파일 유형으로 레이블이 지정된 개체에 액세스할 수 있도록 하는 실제 규칙이 있지만, 제목이 새 도메인으로 전환되기 전에 다른 SELinux 정책 규칙을 충족해야 합니다. 이 예제에서는 적용 유형으로 다음을 보장합니다.
passwd_t 도메인은 passwd_
exec_t 유형으로 레이블이 지정된 애플리케이션을 실행하여 입력할 수 있습니다. 는
유형과 같은 권한 있는 공유 라이브러리에서만 실행할 수 있으며 다른 애플리케이션을 실행할 수 없습니다.lib_t
passwd_t와 같은 승인된 도메인만
유형으로 레이블이 지정된 파일에 쓸 수 있습니다. 다른 프로세스가 수퍼유저 권한으로 실행 중인 경우에도 해당 프로세스는shadow_t
passwd_t 도메인에서 실행되지 않으므로
.shadow_t
유형으로 레이블이 지정된 파일에 쓸 수 없습니다- 인증된 도메인만
passwd_t
도메인으로 전환할 수 있습니다. 예를 들어sendmail
_t 도메인에서 실행되는 sendmail
프로세스에 passwd를 실행하는 합법적인 이유가 없으므로 passwd_t
도메인으로 전환할 수 없습니다. passwd_t
도메인에서 실행 중인 프로세스는etc_t 또는
shadow_t
유형으로 레이블이 지정된 파일처럼 권한 있는 유형만 읽고 쓸 수 있습니다. 이렇게 하면passwd
애플리케이션이 임의 파일을 읽거나 쓸 수 없습니다.