6.8. MLS의 보안 관리와 시스템 관리 분리
기본적으로 HEALTH _r
역할에는 secadm_r
역할의 권한이 있습니다. 즉, sensitive _r
역할의 사용자는 보안 정책을 관리할 수 있습니다. 보안 권한을 보다 잘 제어해야 하는 경우 Linux 사용자를 secadm_r
역할에 할당하고 SELinux 정책에서 etcdctl _secadm
모듈을 비활성화하여 보안 관리에서 시스템 관리를 분리할 수 있습니다.
사전 요구 사항
-
SELinux 정책은
mls
로 설정됩니다. -
SELinux 모드는
enforcing
으로 설정됩니다. -
policycoreutils-python-utils
패키지가 설치되어 있습니다. secadm_r
역할에 할당할 Linux 사용자:-
사용자가
staff_u
SELinux 사용자에게 할당됩니다. - 이 사용자의 암호가 정의되었습니다.
주의secadm
역할에 할당할 사용자로 로그인할 수 있는지 확인합니다. 그러지 않으면 시스템의 SELinux 정책을 향후 수정하는 것을 방지할 수 있습니다.-
사용자가
절차
/etc/sudoers.d
디렉토리에 사용자의 새sudoers
파일을 만듭니다.# visudo -f /etc/sudoers.d/<sec_adm_user>
sudoers
파일을 정리하여 유지하려면 <sec_adm_user
>를secadm
역할에 할당할 Linux 사용자로 바꿉니다./etc/sudoers.d/ <sec_adm_user
> 파일에 다음 내용을 추가합니다.<sec_adm_user> ALL=(ALL) TYPE=secadm_t ROLE=secadm_r ALL
이 행은 모든 호스트에서 <
secadmuser
>를 인증하여 모든 명령을 수행하고 기본적으로 사용자를secadm
SELinux 유형 및 역할에 매핑합니다.< sec_adm_user> 사용자로 로그인합니다.
SELinux 컨텍스트(SELinux 사용자, 역할 및 유형으로 구성됨)가 변경되었는지 확인하려면
ssh
, 콘솔 또는xdm
을 사용하여 로그인합니다.su
및sudo
와 같은 다른 방법은 전체 SELinux 컨텍스트를 변경할 수 없습니다.사용자의 보안 컨텍스트를 확인합니다.
$ id uid=1000(<sec_adm_user>) gid=1000(<sec_adm_user>) groups=1000(<sec_adm_user>) context=staff_u:staff_r:staff_t:s0-s15:c0.c1023
root 사용자에 대해 대화형 쉘을 실행합니다.
$ sudo -i [sudo] password for <sec_adm_user>:
현재 사용자의 보안 컨텍스트를 확인합니다.
# id uid=0(root) gid=0(root) groups=0(root) context=staff_u:secadm_r:secadm_t:s0-s15:c0.c1023
정책에서
cryptsetup_secadm
모듈을 비활성화합니다.# semodule -d sysadm_secadm
중요semodule -r
명령을 사용하여 시스템 정책 모듈을 제거하는 대신semodule -d
명령을 사용합니다.semodule -r
명령은 시스템 스토리지에서 모듈을 삭제합니다. 즉selinux-policy-mls
패키지를 다시 설치하지 않고도 다시 로드할 수 없습니다.
검증
secadm
역할에 할당된 사용자로 root 사용자의 대화형 쉘에서 보안 정책 데이터에 액세스할 수 있는지 확인합니다.# seinfo -xt secadm_t Types: 1 type secadm_t, can_relabelto_shadow_passwords, (…) userdomain;
root 쉘에서 로그아웃합니다.
# logout
<
sec_adm_user
> 사용자로부터 로그아웃합니다.$ logout Connection to localhost closed.
현재 보안 컨텍스트를 표시합니다.
# id uid=0(root) gid=0(root) groups=0(root) context=root:sysadm_r:sysadm_t:s0-s15:c0.c1023
authorization
_secadm
모듈을 활성화합니다. 이 명령은 실패합니다.# semodule -e sysadm_secadm SELinux: Could not load policy file /etc/selinux/mls/policy/policy.31: Permission denied /sbin/load_policy: Can't load policy: Permission denied libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory). SELinux: Could not load policy file /etc/selinux/mls/policy/policy.31: Permission denied /sbin/load_policy: Can't load policy: Permission denied libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory). semodule: Failed!
GDM
_t SELinux 유형에 대한 세부
정보를 표시하려고 합니다. 이 명령은 실패합니다.# seinfo -xt sysadm_t [Errno 13] Permission denied: '/sys/fs/selinux/policy'