3.3. 제한된 사용자 및 제한되지 않은 사용자
각 Linux 사용자는 SELinux 정책을 사용하여 SELinux 사용자에게 매핑됩니다. 이를 통해 Linux 사용자는 SELinux 사용자에 대한 제한을 상속할 수 있습니다. 이 Linux 사용자 매핑은 semanage login -l 명령을 root로 실행하면 표시됩니다.
~]# 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 *
Red Hat Enterprise Linux에서 Linux 사용자는 기본적으로 SELinux
__default__ 로그인에 매핑되며 SELinux unconfined_u 사용자에게 매핑됩니다. 다음 행은 기본 매핑을 정의합니다.
__default__ unconfined_u s0-s0:c0.c1023
다음 절차에서는 시스템에 새 Linux 사용자를 추가하는 방법과 해당 사용자를 SELinux
unconfined_u 사용자에게 매핑하는 방법을 보여줍니다. root 사용자가 Red Hat Enterprise Linux에서 기본적으로 수행되므로 제한되지 않은 것으로 가정합니다.
절차 3.4. 새 Linux 사용자를 SELinux unconfined_u 사용자에게 매핑
- root 로서 다음 명령을 입력하여
newuser:이라는 새 Linux 사용자를 생성합니다.~]# useradd newuser - Linux
newuser사용자에게 암호를 할당하려면 다음을 수행합니다. root로 다음 명령을 입력합니다.~]# passwd newuser Changing password for user newuser. New UNIX password: Enter a password Retype new UNIX password: Enter the same password again passwd: all authentication tokens updated successfully. - 현재 세션에서 로그아웃한 후 Linux
newuser사용자로 로그인합니다. 로그인할 때 pam_selinux PAM 모듈은 Linux 사용자를 SELinux 사용자(이 경우unconfined_u)에 자동으로 매핑하고 결과 SELinux 컨텍스트를 설정합니다. 그런 다음 Linux 사용자의 쉘이 이 컨텍스트를 사용하여 시작됩니다. 다음 명령을 입력하여 Linux 사용자의 컨텍스트를 확인합니다.[newuser@localhost ~]$ id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023참고시스템에서newuser사용자가 더 이상 필요하지 않은 경우 Linuxnewuser's 세션에서 로그아웃하고 계정으로 로그인하여 root로 userdel -r newuser 명령을 실행합니다.newuser는 홈 디렉토리와 함께 제거됩니다.
제한된 Linux 사용자 및 제한되지 않은 Linux 사용자는 실행 가능하고 쓰기 가능한 메모리 검사의 영향을 받으며 MCS 또는 MLS에도 제한됩니다.
사용 가능한 SELinux 사용자를 나열하려면 다음 명령을 입력합니다.
~]$seinfo -u
Users: 8
sysadm_u
system_u
xguest_u
root
guest_u
staff_u
user_u
unconfined_u
seinfo 명령은 기본적으로 설치되지 않는 setools-console 패키지에서 제공합니다.
제한되지 않은 Linux 사용자가 SELinux 정책이
unconfined_t 도메인에서 자체 제한된 도메인으로 전환할 수 있는 애플리케이션으로 정의되는 애플리케이션을 실행하는 경우 제한되지 않은 Linux 사용자에게는 여전히 해당 제한된 도메인의 제한 사항이 적용됩니다. 이 경우의 보안 이점은 Linux 사용자가 제한되지 않고 있는 경우에도 애플리케이션이 제한되어 있다는 것입니다. 따라서 애플리케이션에서 결함을 악용하는 것은 정책에 의해 제한될 수 있습니다.
마찬가지로 제한된 사용자에게 이러한 검사를 적용할 수 있습니다. 제한된 각 Linux 사용자는 제한된 사용자 도메인에 의해 제한됩니다. SELinux 정책은 제한된 사용자 도메인에서 대상 제한 도메인으로의 전환을 정의할 수도 있습니다. 이러한 경우 제한된 Linux 사용자에게는 해당 대상 제한된 도메인의 제한 사항이 적용됩니다. 주요 점은 특별 권한이 역할에 따라 제한된 사용자와 연결되어 있다는 것입니다. 아래 표에서는 Red Hat Enterprise Linux의 Linux 사용자를 위한 기본 제한된 도메인의 예를 확인할 수 있습니다.
| 사용자 | Role | 도메인 | X 윈도우 시스템 | su 또는 sudo | 홈 디렉토리 및 /tmp에서 실행 (기본값) | 네트워킹 |
|---|---|---|---|---|---|---|
| sysadm_u | sysadm_r | sysadm_t | 제공됨 | Su 및 sudo | 제공됨 | 제공됨 |
| staff_u | staff_r | staff_t | 제공됨 | sudo만 | 제공됨 | 제공됨 |
| user_u | user_r | user_t | 제공됨 | 제공되지 않음 | 제공됨 | 제공됨 |
| guest_u | guest_r | guest_t | 제공되지 않음 | 제공되지 않음 | 제공됨 | 제공되지 않음 |
| xguest_u | xguest_r | xguest_t | 제공됨 | 제공되지 않음 | 제공됨 | Firefox만 |
- SELinux 정책에서 허용하는 경우
user_t,guest_t,xguest_t도메인의 Linux 사용자는 설정된 사용자 ID(setuid) 애플리케이션만 실행할 수 있습니다(예:passwd). 이러한 사용자는 su 및 sudo setuid 애플리케이션을 실행할 수 없으므로 이러한 애플리케이션을 사용하여 root가 될 수 없습니다. - EgressIP_t ,
staff,_tuser_t,xguest_t도메인의 Linux 사용자는 X Window System 및 터미널을 사용하여 로그인할 수 있습니다. - 기본적으로
staff_t,user_t, guest_t ,x도메인의 Linux 사용자는 홈 디렉터리 및guest_t/tmp에서 애플리케이션을 실행할 수 있습니다. 사용자의 권한을 상속하는 애플리케이션이 실행되지 않도록 하려면 쓰기 액세스 권한이 있는 디렉터리에서 guest_exec_content 및x부울을guest_exec_contentoff로 설정합니다. 이를 통해 결함이 있는 애플리케이션 또는 악성 애플리케이션이 사용자의 파일을 수정하지 못하도록 방지할 수 있습니다.사용자가 홈 디렉터리 및/tmp에서 애플리케이션을 실행하지 못하도록 허용 및 방지하는 방법에 대한 자세한 내용은 6.6절. “사용자 애플리케이션 실행 부울” 을 참조하십시오. xguest_t도메인에 있는 유일한 네트워크 액세스 Linux 사용자는 Firefox 가 웹 페이지에 연결하는 것입니다.
system_u 는 시스템 프로세스 및 오브젝트의 특수 사용자 ID입니다. Linux 사용자와 연결하면 안 됩니다. 또한 unconfined_u 및 root 는 제한되지 않은 사용자입니다. 이러한 이유로 앞서 언급한 SELinux 사용자 기능 테이블에 포함되지 않습니다.
이미 언급한 SELinux 사용자와 함께 해당 사용자에게 매핑할 수 있는 특별한 역할이 있습니다. 이러한 역할은 SELinux에서 사용자가 수행할 수 있는 작업을 결정합니다.
webadm_r는 Apache HTTP 서버와 관련된 SELinux 유형만 관리할 수 있습니다. 자세한 내용은 13.2절. “유형” 을 참조하십시오.dbadm_r는 MariaDB 데이터베이스 및 PostgreSQL 데이터베이스 관리 시스템과 관련된 SELinux 유형만 관리할 수 있습니다. 자세한 내용은 20.2절. “유형” 및 21.2절. “유형” 을 참조하십시오.logadm_r는syslog및auditlog프로세스와 관련된 SELinux 유형만 관리할 수 있습니다.secadm_r은 SELinux만 관리할 수 있습니다.은 감사 하위 시스템과 관련된 프로세스만 관리할 수 있습니다.auditadm_r
사용 가능한 역할을 모두 나열하려면 다음 명령을 입력합니다.
~]$ seinfo -r
앞에서 언급했듯이 seinfo 명령은 기본적으로 설치되지 않은 setools-console 패키지에서 제공합니다.
3.3.1. sudo 전환 및 SELinux 역할 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
경우에 따라 제한된 사용자는 root 권한이 필요한 관리 작업을 수행해야 합니다. 이렇게 하려면 제한된 사용자가 sudo 명령을 사용하여 제한된 관리자 SELinux 역할을 받아야 합니다. sudo 명령은 신뢰할 수 있는 사용자에게 관리 액세스 권한을 제공하는 데 사용됩니다. 사용자가 sudo 를 사용하여 관리 명령에 우선하면 고유한 암호를 입력하라는 메시지가 표시됩니다. 그런 다음, 인증되고 명령이 허용되었다고 가정하면 root 사용자인 것처럼 관리 명령이 실행됩니다.
표 3.1. “SELinux 사용자 기능” 에 표시된 대로
staff_u 및 sysadm_u SELinux 제한 사용자만 기본적으로 sudo 를 사용할 수 있습니다. 이러한 사용자가 sudo 로 명령을 실행하는 경우 /etc/sudoers 구성 파일에 지정된 규칙 또는 이러한 파일이 있는 경우 /etc/ sudoers.d/ 디렉터리의 해당 파일에 따라 해당 역할을 변경할 수 있습니다.
sudo 에 대한 자세한 내용은 Red Hat Enterprise Linux 7 시스템 관리자 가이드의 권한 확보 섹션을 참조하십시오.
절차 3.5. sudo 전환 구성
다음 절차에서는 default_role_r 에서 administrator_r 관리자 역할로 새로 생성된 SELinux_user_u 제한된 사용자를 전환하도록 sudo 를 설정하는 방법을 보여줍니다.
참고
기존 SELinux 사용자에 대해 제한된 관리자 역할을 구성하려면 처음 두 단계를 건너뜁니다.
- 새 SELinux 사용자를 생성하고 이 사용자에 대한 기본 SELinux 역할 및 제한된 관리자 역할을 지정합니다.
~]# semanage user -a -r s0-s0:c0.c1023 -R "default_role_r administrator_r" SELinux_user_u - 기본 SElinux 정책 컨텍스트 파일을 설정합니다. 예를 들어
staff_uSELinux 사용자와 동일한 SELinux 규칙을 사용하려면staff_u컨텍스트 파일을 복사합니다.~]# cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/SELinux_user_u - 새로 생성된 SELinux 사용자를 기존 Linux 사용자에게 매핑합니다.
semanage login -a -s SELinux_user_u -rs0:c0.c1023 linux_user /etc/sudoers.d/디렉터리에 Linux 사용자와 동일한 이름으로 새 구성 파일을 생성하고 여기에 다음 문자열을 추가합니다.~]# echo "linux_user ALL=(ALL) TYPE=administrator_t ROLE=administrator_r /bin/bash " > /etc/sudoers.d/linux_userrestorecon유틸리티를 사용하여 linux_user 홈 디렉터리의 레이블을 다시 지정합니다.~]# restorecon -FR -v /home/linux_user- 새로 생성된 Linux 사용자로 시스템에 로그인하고 사용자가 기본 SELinux 역할로 레이블이 지정되어 있는지 확인합니다.
~]$ id -Z SELinux_user_u:default_role_r:SELinux_user_t:s0:c0.c1023 - sudo 를 실행하여 사용자의 SELinux 컨텍스트를
/etc/sudoers.d/linux_user에 지정된 대로 보조 SELinux 역할로 변경합니다. sudo 와 함께 사용되는-i옵션은 대화형 쉘이 실행되도록 합니다.~]$ sudo -i ~]# id -Z SELinux_user_u:administrator_r:administrator_t:s0:c0.c1023
default_role_r 또는 administrator_r 와 같은 자리 표시자를 더 잘 이해하려면 다음 예제를 참조하십시오.
예 3.1. sudo 전환 구성
이 예제에서는 기본 역할
staff _r 이 할당된 새 SELinux 사용자 restricted_u 를 생성하고 sudo 를 사용하여 limited _u의 역할을 staff_ r 에서 webadm_r 로 변경하도록 구성됩니다.
sysadm_r또는unconfined_r역할의 root 사용자로 다음 명령을 모두 입력합니다.~]# semanage user -a -r s0-s0:c0.c1023 -R "staff_r webadm_r" confined_u ~]# cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/confined_u ~]# semanage login -a -s confined_u -rs0:c0.c1023 linux_user ~]# restorecon -FR -v /home/linux_user ~]# echo "linux_user ALL=(ALL) ROLE=webadm_r TYPE=webadm_t /bin/bash " > /etc/sudoers.d/linux_user- 새로 생성된 Linux 사용자로 시스템에 로그인하고 사용자가 기본 SELinux 역할로 레이블이 지정되어 있는지 확인합니다.
~]$ id -Z confined_u:staff_r:staff_t:s0:c0.c1023 ~]$ sudo -i ~]# id -Z confined_u:webadm_r:webadm_t:s0:c0.c1023