문제
특정 SELinux MCS(다중 범주 보안) 범주에 할당된 파일은 해당 범주에 할당되지 않은 사용자가 읽을 수 있으며, 이는 MCS가 내 시스템(최소 설치로 CentOS7 실행, SELinux 실행)에서 어떻게든 작동하지 않음을 나타냅니다. 시행표적이 된정책 ).
배경
나는 최근에 처음으로 보안 시스템 설정과 SELinux 처리에 뛰어들게 된 작은 vServer를 구입했습니다. 서버에서 실행할 애플리케이션을 도커 컨테이너(CentOS7에서 작동하는 호스트 자체)에서 실행하여 분리하려고 합니다. 각 도커 컨테이너에는 분리를 위한 추가 보안 계층을 제공하기 위해 시작 시 무작위 SELinux MCS 카테고리가 (기본적으로) 할당된다는 사실을 알게 되어 기뻤습니다. 일반적인 SELinux와 MCS의 작동 방식을 익히기 위해 집에 있는 컴퓨터 중 하나에 VM을 설정하고 조금 놀았습니다. 그렇게 하다가 MCS가 예상대로 작동하지 않는다는 것을 알았습니다. 그래서 중요한 것이 빠졌거나 어딘가에 구성 문제가 있는 것입니다.
제가 한
MCS를 테스트하기 위해 [0]과 [1]의 지침을 따랐습니다. 먼저 SELinux가 실제로 실행되고 있는지 확인했습니다.집행모드와표적이 된을 사용하는 정책 sestatus
. [0]을 준수하여mcsuser_uSELinux 사용자 및 CentOS 사용자남자,계집애,존제인, 그런 다음 매핑한 항목은 다음과 같습니다.mcsuser_u을 사용하여 semanage login
. 또한 [0]에 나열된 대로 사용자에게 카테고리를 할당하고 결과는 다음과 같습니다.
Login Name | SELinux User | MLS/MCS Range
john | mcsuser_u | s0-s0:c122
jane | mcsuser_u | s0-s0:c123
johnjane | mcsuser_u | s0-s0:c122,123
에서 semanage login -l
및
mcsuser_u | MLS/MCS Level: s0 | MLS/MCS Range: s0-s0:c0.c1023 | SELinux Roles: user_r
에서 semanage user -l
.
사용자의 홈 디렉토리를 만들었습니다.남자누구나 읽을 수 있음( chmod 707
), 다음으로 로그인됨남자그리고 텍스트 파일을 만들었습니다존텍스트. 그런 다음 카테고리를 지정했습니다.c122해당 파일에 (아직 로그인되어 있습니다남자). 카테고리도 지정할 수 있었어요c120그래도 파일에남자으로 분류되지 않습니다.c120[0]에 따르면 불가능해야 합니다(나중에 삭제했습니다).c120다시). ls -lZ johntext
출력을 보여줍니다
-rw-rw-r-- john john mcsuser_u:object_r:user_home_t:s0:c122 johntext
위의 내용에 따라 사용자로 로그인했습니다.계집애, 파일을 읽으려고 시도했습니다.존텍스트cat
내가 할 수 있었던 명령을 사용합니다 .
이는 MCS가 예상한 대로 작동하지 않는다는 것을 분명히 나타냅니다(액세스를 요청하는 사용자가 동일한 카테고리를 가지고 있는 경우에만 특정 카테고리의 개체에 대한 액세스를 허용함).
솔루션?
나는 지금 다소 혼란스럽고 실수가 어디에 있는지 모르기 때문에 여러분에게 조언을 구하고 있습니다. 아마 제 입장에서는 착각이나 오해일지도 모르지만, 지금으로서는 도저히 알 수가 없고, 제 입장에서도 이해가 되지 않습니다.제가 볼 때 다음과 같은 가능성이 있습니다.
1. MCS 확인을 수동으로 활성화하거나 다른 정책을 사용해야 합니다.
MCS 지원을 수동으로 활성화해야 하는지 여부에 대한 정보를 찾지 못했기 때문에 레이블을 할당하면 작동한다고 가정합니다([1] 기준). 다른 소스 [2]에서는 MCS가 활성화되어 있다고 제안합니다.표적이 된(적어도) Fedora 및 RHEL에 대한 정책은 CentOS에서도 다르지 않을 것으로 예상됩니다.
2. 내 측의 구성이 잘못되었습니다.
semanage login
사용자 카테고리를 설정 하거나 파일에 카테고리를 할당하는 데 실수가 있었을 수도 있습니다 .
3. 그냥 망가졌을 뿐이야
.. 그건 안 좋을 것 같아
참조 링크
0:https://selinux-mac.blogspot.de/2009/06/multi-category-security.html
1:https://www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html
2:http://selinuxsymposium.org/2006/slides/08-mcs.pdf
전체 sestatus
출력
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28
[편집하다]:
모든 것이 예상대로 작동하는 CentOS 6.9를 실행하는 VM에서 동일한 단계를 테스트했습니다. 따라서 현재로서는 CentOS의 SELinux에 MCS 관련 버그가 있거나 조정이 필요한 정책/구성에 대한 문서화되지 않은 변경 사항이 있다고 가정합니다. 예상대로 작동하게 하려면 어떤 합리적인 다음 단계가 필요한지 여전히 의문입니다.
답변1
분명히 CentOS6에서 CentOS7로 SELinux 정책이 변경되어 MCS 제약 조건이 더 이상 모든 유형에 적용되지 않습니다. 특정 유형이 MCS를 준수하려면 mcs_constrained_type
사용자 정의 정책을 통해 해당 유형에 속성을 추가해야 합니다. 이를 수행하는 방법(및 기본적으로 MCS가 제한되는 유형 및 이유)에 대한 자세한 내용은 다음에서 찾을 수 있습니다.Dan Walsh의 블로그 게시물.