로그인 시 잘못된 역할 및 유형

로그인 시 잘못된 역할 및 유형

저는 Ubuntu 14.04 파생, 기본 OS Freya를 사용하고 있습니다.

많은 모듈이 포함된 이 패키지를 사용하여 SELinux를 설치하고 구성 했습니다 selinux-policy-default. 또한 staff_uSELinux 사용자 에 내 사용자를 추가했습니다 .

$ sudo semanage login -l

Login Name           SELinux User         MLS/MCS Range        Service

__default__          unconfined_u         SystemLow-SystemHigh *
naftuli              staff_u              SystemLow-SystemHigh *
root                 unconfined_u         SystemLow-SystemHigh *
system_u             system_u             SystemLow-SystemHigh *

참고로 SELinux 사용자는 다음과 같습니다.

$ sudo semanage user -l

                Labeling   MLS/       MLS/                          
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles

root            sysadm     SystemLow  SystemLow-SystemHigh           staff_r sysadm_r system_r
staff_u         staff      SystemLow  SystemLow-SystemHigh           staff_r sysadm_r
sysadm_u        sysadm     SystemLow  SystemLow-SystemHigh           sysadm_r
system_u        user       SystemLow  SystemLow-SystemHigh           system_r
unconfined_u    unconfined SystemLow  SystemLow-SystemHigh           system_r unconfined_r
user_u          user       SystemLow  SystemLow                      user_r

로그인한 후 다음과 같은 이상한 유형이 발생 sysadm_r했습니다 staff_r.

$ id -Z
staff_u:sysadm_r:gpg_agent_t:SystemLow

gpg_agent_tXsession.d에 gpg-agent다음으로 시작하는 스크립트가 있으므로 설명할 수 있습니다 /etc/X11/Xsession.d/90gpg-agent.

: ${GNUPGHOME=$HOME/.gnupg}

GPGAGENT=/usr/bin/gpg-agent
PID_FILE="$HOME/.gpg-agent-info"

if grep -qs '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" &&
   test -x $GPGAGENT &&
   { test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null; }; then

   if [ -r "$PID_FILE" ]; then
       . "$PID_FILE"
   fi

   # Invoking gpg-agent with no arguments exits successfully if the agent
   # is already running as pointed by $GPG_AGENT_INFO
   if ! $GPGAGENT 2>/dev/null; then
       STARTUP="$GPGAGENT --daemon --enable-ssh-support --sh --write-env-file=$PID_FILE $STARTUP"
   fi
fi

gpg_agent_t그러나 내가 여는 그래픽 셸에 왜 해당 유형이 있고 왜 해당 문자가 있는지 알 수 없습니다 sysadm_r. 내에서는 /etc/sudoerssudo 사용으로 전환할 수 있도록 액세스 권한을 부여했지만 sysadm_r기본적으로는 다음을 수행해서는 안 됩니다.

naftuli ALL=(ALL:ALL) ROLE=sysadm_r PASSWD: ALL

TTY를 사용하여 로그인하면 모든 것이 좋아 보입니다.

staff_u:staff_r:staff_t:SystemLow-SystemHigh

lightdm이나 갈라가 나에게 이런 이상한 유형과 역할을 제공하는 이유는 무엇입니까? 어떻게 해결할 수 있나요?

나는 lightdm이나 Gala에 정책이 없다는 것을 알고 있으며 아마도 정책을 작성할 것입니다. 이 시스템을 강제 모드로 설정하려고 합니다. 현재 허용 모드에 있습니다. .X/gala/lightdm을 받자마자 충돌이 발생하기 때문입니다 setenforce 1.


편집: gpg-agent 시작 스크립트를 편집하면 이제 staff_u:sysadm_r:sysadm_t세션 흐름이 다음과 같습니다.

system_u:system_r:sysadm_t:s0   root      1875  0.0  0.0 292864  5888 ?        SLsl 10:33   0:00 lightdm
system_u:system_r:xserver_t:s0  root      1927  6.3  0.4 396864 74804 tty7     Ssl+ 10:33  12:38 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
system_u:system_r:sysadm_t:s0   root      4699  0.0  0.0 170580  4688 ?        Sl   10:33   0:00 lightdm --session-child 12 19
staff_u:sysadm_r:sysadm_t:s0    naftuli   5067  2.0  0.4 974688 75180 ?        Sl   10:34   4:08 gala

내 생각엔 Gala가 이런 일을 한 것은 잘못된 것 같아요. 내 로그인 인사말인 lightdm일 수도 있지만 확실하지 않습니다. 그리고 다시 말하지만 이것은 Ubuntu이므로 SELinux를 인식할 가능성은 없습니다.

답변1

정말 좋은 질문이고 관심이 있어서 검색을 좀 해보았지만 결과적으로는 별로 도움이 되지 않았습니다. 마지막으로 Freenode IRC에 연락하여 #selinux기본 selinux 역할을 선택하는 방법을 물었습니다. 다행히 사용자는 grift누락된 정보를 제공하여 질문에 답할 수 있습니다.

selinux 컨텍스트 설정의 주요 구성 요소는 pam_selinux.so세션 설정을 담당합니다. pam 모듈에는 다양한 구성 옵션이 있으며 사용자에게 필요한 컨텍스트를 대화식으로 요청할 수도 있습니다. 로그인 중에 정보가 없으면 에 설정된 컨텍스트를 /etc/selinux/$TYPE/contexts/user/$USERID사용하여(정의되지 않은 경우) 에 저장된 정보를 사용하는 것으로 대체됩니다 .__default__contexts/default_contexts

root@u1604-cnt-host:/etc/pam.d# grep selinux *
lightdm:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
lightdm:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
lightdm-autologin:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
lightdm-autologin:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
lightdm-greeter:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
lightdm-greeter:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
login:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
login:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
sshd:session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
sshd:session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
systemd-user:session  required pam_selinux.so close
systemd-user:session  required pam_selinux.so nottys open
root@u1604-cnt-host:/etc/pam.d#

As는 or 와 동일한 호출을 lightdm사용하는데 이는 문제의 원인이 되어서는 안 됩니다.pam_selinux.sologinsshd

나는 신속하게 우분투에서 필요한 변경을 시도했지만 프로세스 수준에서 selinux 정책이 엉망이라는 인상을 받았습니다. 그래서 Fedora에서 몇 가지 테스트를 수행했습니다.

[root@workbench users]# cat /etc/selinux/targeted/contexts/users/staff_u
system_r:local_login_t:s0       guest_r:guest_t:s0 staff_r:staff_t:s0
system_r:remote_login_t:s0      staff_r:staff_t:s0
system_r:sshd_t:s0              guest_r:guest_t:s0 staff_r:staff_t:s0
%<--- snipp ---%<

system_r:sshd_t:s0정상적으로 작동 하도록 전환하면 guest_r:guest_t:s0selinux 사용자에게 할당된 역할이 있어야 작동합니다. 프로세스 sshd는 도메인에서 실행됩니다 system_r:sshd_t. 기본 컨텍스트를 전환하려고 하면 staff_u로그인 sysadm_r:sysadm_t|system_r:system_rstaff_r:staff_t:s0해당 guest_r:guest_t부분만 바꾸는 것으로 대체됩니다. 이는 또는 system_r:sshd_t으로의 컨텍스트 전환을 허용하지 않는 정책 과 관련이 있습니다 .system_rsysadm_t

잘못된 조합을 설정하면 unconfined_r:unconfined_tFedora에서 for가 targeted포함된 기본 유형이 생성되지만 selinux 사용자는 테스트 중에 해당 역할에 액세스할 수 없습니다 .default_contextsuser_r:user_tsystem_r:sshd_tuser_r

이 주제에 대한 자세한 내용:

https://selinuxproject.org/page/PolicyConfigurationFiles#contexts.2Fusers.2F.5Bseuser_id.5D_File

https://selinuxproject.org/page/RefpolicyBasicRoleCreation#Default_Contexts

관련 정보