4.13. 다단계 보안(MLS)
다단계 보안 기술은 La Padula 필수 액세스 모델을 적용하는 보안 체계를 의미합니다. MLS에서 사용자와 프로세스는 제목이라고 하며 시스템의 파일, 장치 및 기타 패시브 구성 요소라고 합니다. 제목과 객체 모두 보안 수준으로 레이블이 지정되며, 주제의 모음 또는 객체 분류가 필요합니다. 예를 들어 각 보안 수준은 민감도 및 범주로 구성됩니다. 예를 들어 내부 릴리스 일정은 기밀 민감도로 내부 문서 범주에 기록됩니다.
그림 4.1. “마케도니아 레벨” 는 원래 미국 국방 커뮤니티에서 디자인한 것으로 나타났습니다. 위의 내부 일정 예와 관련하여 기밀 유지를 받은 사용자만 기밀 카테고리에서 문서를 볼 수 있습니다. 단, 기밀 자료만 가지고 있는 사용자는 더 높은 수준 또는 사진이 필요한 문서를 볼 수 없습니다. 낮은 수준의 문서에만 읽기 액세스 권한이 허용되며, 더 높은 수준의 문서를 사용할 수 있습니다.
그림 4.1. 마케도니아 레벨
[D]
그림 4.2. “MLS를 사용하여 허용된 데이터 흐름” 는 "Secret" 보안 수준에서 실행되는 주체와 다른 보안 수준의 다양한 개체 간에 허용되는 모든 데이터 흐름을 보여줍니다. 간단히 요약하면 읽기 가능하고 쓰기가 필요하지 않은 두 가지 속성을 적용할 수 있습니다.
그림 4.2. MLS를 사용하여 허용된 데이터 흐름
[D]
4.13.1. MLS 및 시스템 권한 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
MLS 액세스 규칙은 항상 기존 액세스 권한(파일 권한)과 결합됩니다. 예를 들어 "Secret"의 보안 수준이 있는 사용자가 DAC(Despretionary Access Control)를 사용하여 다른 사용자가 파일에 대한 액세스를 차단하는 경우 "최고의 비밀" 수준의 보안 수준이 있는 사용자의 액세스도 차단됩니다. DAC 규칙 다음에 SELinux MLS 정책 규칙이 확인된다는 점을 기억하는 것이 중요합니다. 보안 수준이 높은 경우 파일 시스템을 임의로 검색하는 권한을 자동으로 부여하지 않습니다.
최상위 레벨의 사용자는 다단계 시스템에 대한 관리 권한을 자동으로 획득하지 못합니다. 컴퓨터의 모든 정보에 액세스할 수 있지만 관리 권한을 갖는 것과는 다릅니다.
4.13.2. SELinux에서 MLS 활성화 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
참고
X Window 시스템을 실행 중인 시스템에서 MLS 정책을 사용하지 않는 것이 좋습니다.
다음 단계에 따라 시스템에서 SELinux MLS 정책을 활성화합니다.
절차 4.19. SELinux MLS 정책 활성화
- selinux-policy-✓s 패키지를 설치합니다.
yum install selinux-policy-mls
~]# yum install selinux-policy-mlsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - MLS 정책을 활성화하기 전에 파일 시스템의 각 파일의 레이블을 MLS 레이블로 다시 지정해야 합니다. 파일 시스템의 레이블을 다시 지정하면 제한된 도메인이 액세스가 거부될 수 있으므로 시스템이 올바르게 부팅되지 않을 수 있습니다. 이러한 문제가 발생하지 않도록
/etc/selinux/config파일에서SELINUX=permissive를 구성합니다. 또한SELINUXTYPE=mls를 구성하여 MLS 정책을 활성화합니다. 구성 파일은 다음과 같아야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - SELinux가 허용 모드에서 실행 중인지 확인합니다.
setenforce 0
~]# setenforce 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow getenforce Permissive
~]$ getenforce PermissiveCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 수정 파일 스크립트를 사용하여 다음 재부팅 시 파일의 레이블을 다시 지정하도록
-F옵션이 포함된/.autorelabel파일을 만듭니다.fixfiles -F onboot
~]# fixfiles -F onbootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 시스템을 재부팅합니다. 다음 부팅 중에 모든 파일 시스템은 MLS 정책에 따라 레이블이 다시 지정됩니다. 레이블 프로세스는 적절한 SELinux 컨텍스트를 사용하여 모든 파일의 레이블을 지정합니다.
*** Warning -- SELinux mls policy relabel is required. *** Relabeling could take a very long time, depending on file *** system size and speed of hard drives. ***********
*** Warning -- SELinux mls policy relabel is required. *** Relabeling could take a very long time, depending on file *** system size and speed of hard drives. ***********Copy to Clipboard Copied! Toggle word wrap Toggle overflow 맨 아래에 있는 각*(별표) 문자는 레이블이 지정된 1000개의 파일을 나타냅니다. 위의 예에서 11자*문자는 레이블이 지정된 11000 파일을 나타냅니다. 모든 파일에 레이블을 지정하는 데 걸리는 시간은 시스템의 파일 수와 하드 디스크 드라이브의 속도에 따라 달라집니다. 최신 시스템에서 이 프로세스는 10분도 걸리지 않습니다. 레이블 지정 프로세스가 완료되면 시스템이 자동으로 재부팅됩니다. - 허용 모드에서는 SELinux 정책이 적용되지 않지만 강제 모드에서 실행 중인 경우 거부된 작업에 여전히 기록됩니다. 강제 모드로 변경하기 전에 root로 다음 명령을 입력하여 마지막 부팅 중에 SELinux가 작업을 거부하지 않았는지 확인합니다. 마지막 부팅 중에 SELinux에서 작업을 거부하지 않은 경우 이 명령은 출력을 반환하지 않습니다. 부팅 중 SELinux가 액세스를 거부한 경우 문제 해결 정보는 11장. 문제 해결 을 참조하십시오.
grep "SELinux is preventing" /var/log/messages
~]# grep "SELinux is preventing" /var/log/messagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/log/messages파일에 거부 메시지가 없거나 모든 기존 거부를 해결한 경우/etc/selinux/config파일에서SELINUX=enforcing을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 시스템을 재부팅하고 SELinux가 강제 모드에서 실행 중인지 확인합니다.
getenforce Enforcing
~]$ getenforce EnforcingCopy to Clipboard Copied! Toggle word wrap Toggle overflow MLS 정책이 활성화되어 있습니다.sestatus |grep mls Policy from config file: mls
~]# sestatus |grep mls Policy from config file: mlsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.13.3. 특정 MLS 범위를 사용하여 사용자 생성 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
특정 MLS 범위를 사용하여 새 Linux 사용자를 생성하려면 다음 단계를 따르십시오.
절차 4.20. 특정 MLS 범위를 사용하여 사용자 생성
- useradd 명령을 사용하여 새 Linux 사용자를 추가하고 새 Linux 사용자를 기존 SELinux 사용자(이 경우
staff_u)에 매핑합니다.useradd -Z staff_u john
~]# useradd -Z staff_u johnCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 새로 생성된 Linux 사용자에게 암호를 할당합니다.
prompt~]# passwd john
prompt~]# passwd johnCopy to Clipboard Copied! Toggle word wrap Toggle overflow - SELinux와 Linux 사용자 간의 매핑을 보려면 root로 다음 명령을 입력합니다. 출력은 다음과 같아야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 사용자
john에 대한 특정 범위를 정의합니다.semanage login --modify --range s2:c100 john
~]# semanage login --modify --range s2:c100 johnCopy to Clipboard Copied! Toggle word wrap Toggle overflow - SELinux와 Linux 사용자 간의 매핑을 다시 봅니다. 사용자
john에는 이제 특정 MLS 범위가 정의되어 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 필요한 경우 john의 홈 디렉터리에서 레이블을 수정하려면 다음 명령을 입력합니다.
chcon -R -l s2:c100 /home/john
~]# chcon -R -l s2:c100 /home/johnCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.13.4. Polyinstantiated 디렉토리 설정 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
/tmp 및 /var/tmp/ 디렉터리는 일반적으로 모든 프로그램, 서비스 및 사용자의 임시 스토리지에 사용됩니다. 그러나 이러한 설정을 사용하면 이러한 디렉터리가 경쟁 조건 공격에 취약하거나 파일 이름에 따라 정보 누출이 발생할 수 있습니다. SELinux는 다중 인스턴스화된 디렉터리의 형태로 솔루션을 제공합니다. 이는 효과적으로 /tmp 및 /var/tmp/ 가 인스턴스화되어 각 사용자에 대해 비공개로 표시되는 것을 의미합니다. 디렉토리 인스턴스화가 활성화되면 각 사용자의 /tmp 및 /var/tmp/ 디렉토리가 /tmp-inst 및 /var/tmp/tmp-inst 에 자동으로 마운트됩니다.
다음 단계에 따라 디렉터리의 다중화를 활성화합니다.
절차 4.21. Polyinstantiation 디렉터리 활성화
/etc/security/namespace.conf파일에서 마지막 세 줄의 주석을 제거하여 /tmp , /var, 사용자의 홈 디렉터리의 인스턴스화를 활성화합니다./tmp/tail -n 3 /etc/security/namespace.conf /tmp /tmp-inst/ level root,adm /var/tmp /var/tmp/tmp-inst/ level root,adm $HOME $HOME/$USER.inst/ level
~]$ tail -n 3 /etc/security/namespace.conf /tmp /tmp-inst/ level root,adm /var/tmp /var/tmp/tmp-inst/ level root,adm $HOME $HOME/$USER.inst/ levelCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/pam.d/login파일에서pam_namespace.so모듈이 세션에 대해 구성되었는지 확인합니다.grep namespace /etc/pam.d/login session required pam_namespace.so
~]$ grep namespace /etc/pam.d/login session required pam_namespace.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 시스템을 재부팅합니다.