모든 사용자(루트 포함)가 SELinux나 다른 Linux 도구를 통해 특정 대상(예: /tmp) 아래에 아무것도 설치하지 못하도록 하고 싶습니다. 이것이 가능합니까? 무엇을 해야 할까요?
제안된 사본과 관련하여: 설치 권한을 거부하는 방법은 무엇입니까?——내가 원하는 것은 이런 것이 아니다.
첫째, 루트 사용자에 대해 말할 때 SELinux를 완전히 무시합니다. 둘째, "설치 권한" 제거에 대해 설명합니다. 이것은 내가 달성하고 싶은 것이 아닙니다. 사실 설치 권한보다 "폴더 권한 거부"에 대해 더 많이 이야기하고 있습니다. 내가 시도하는 것과 가장 가까운 것은신화 또는 현실: SELinux는 루트 사용자를 제한할 수 있습니까?폴더 액세스, 특히 해당 폴더에 대한 "설치"를 거부하는 것에 대해서는 언급하지 않습니다.
질문 대신 가능한 해결책을 선택한다면 "설치를 제한하는 SELinux 도메인이 있습니까?"라고 묻고 싶습니다.
답변1
SELinux 지원 시스템에서는 각 개체(프로세스, 파일 등)에 보안 레이블이 있습니다. SELinux 정책에는 이러한 라벨이 허용하는 작업을 설명하는 규칙이 포함되어 있습니다. 기본 정책은 매우 복잡하고 광범위합니다. 정책을 구성하면 대부분의 위치(태그 기준)에서 설치를 방지하기에 충분할 수 있습니다.
이 정책은 무제한 사용자에게 제한을 가하지 않습니다. 또한 allow_mount_anyfile
부울 값은 mount
명령이 (거의) 모든 파일을 마운트 지점으로 사용할 수 있는지 여부를 제어합니다. 사용제한된 사용자사용자가 시스템에 액세스하는 방법에는 많은 제한이 적용됩니다. SELinux역할 기반 액세스 제어(RBAC)제한된 사용자를 제한된 역할에 배치합니다. 역할은 해당 역할이 수행할 수 있는 도메인(프로세스 보안 레이블)을 제한합니다. 또한 제한된 사용자는 user_r
다른 역할로 전환할 수 없습니다.
제한된 역할을 가진 사용자가 표시된 파일/디렉토리를 마운트 지점으로 사용할 수 있는지(직접 또는 다른 허용된 도메인을 남용하여) 확인하기 위해 설치된 정책을 확인할 수 있습니다.
먼저 user_r
다음 명령을 사용하여 변환할 수 있는 도메인을 확인합니다 seinfo
.
seinfo -r user_t -x
SELinux 정책 언어에는mounton
도메인이 대상 파일/디렉토리를 마운트 지점으로 사용하도록 허용하는 권한입니다. 대상 개체를 마운트 지점으로 사용하도록 허용된 도메인에 대해 설치된 정책을 쿼리하려면 다음을 수행하십시오.
sesearch --allow -t <target file/directory type> -p mounton
도메인에 허용 규칙이 없으면 user_r
도메인의 사용자는 user_r
대상을 마운트 지점으로 사용할 수 없습니다(도메인의 루트인 경우에도 마찬가지 user_r
). 또한 정책을 우회하는 데 사용할 수 있는 relabelfrom
권한(라벨 재지정)이나 권한이 없는지 확인해야 합니다.unlink
관리자를 제한(root에서 sysadm_r
)하는 것은 쉬운 작업이 아닙니다. 새로운 사용자 정의 유형 및/또는 사용자 정의 기본 정책이 포함된 정책 모듈이 필요하며, sysadm_t
앞서 언급한 권한도 있을 수 있습니다. 사용자 지정 정책에는 도메인에만 액세스할 수 있도록 허용하는 유형이 있어야 합니다. 또한 정책은 정책 우회를 허용할 수 있는 모든 동작을 거부해야 하므로 루트 사용자가 루트보다 제한된 사용자에 더 가까워지게 됩니다.