Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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.c3c0,c1,c2,c3 과 동일합니다. /etc/selinux/targeted/setrans.conf 파일은 수준(s0:c0)을 사람이 읽을 수 있는 양식(즉, CompanyConfidential)으로 매핑합니다. Red Hat Enterprise Linux에서는 대상 지정 정책은 MCS를 적용하며 MCS에서는 민감도 한 개만 존재합니다. s0. Red Hat Enterprise Linux의 MCS는 1024가지 카테고리(c 0 ~c 1023 )를 지원합니다.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. 도메인 전환의 예

  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/passwd
    
    passwd 유틸리티는 shadow_t 유형으로 레이블이 지정된 /etc/shadow 에 액세스합니다.
    ~]$ ls -Z /etc/shadow
    -r--------. root root system_u:object_r:shadow_t:s0    /etc/shadow
    
  2. SELinux 정책 규칙은 passwd_t 도메인에서 실행되는 프로세스가 shadow_t 유형으로 레이블이 지정된 파일을 읽고 쓸 수 있음을 나타냅니다. shadow_t 유형은 암호 변경에 필요한 파일에만 적용됩니다. 여기에는 /etc/gshadow,/etc/shadow 및 해당 백업 파일이 포함됩니다.
  3. SELinux 정책 규칙은 passwd _t 도메인에 passwd_ exec_t 유형으로 설정된 진입점 권한이 있음을 나타냅니다.
  4. 사용자가 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 애플리케이션이 임의 파일을 읽거나 쓸 수 없습니다.