SELinux: 사용자 정의 유형 unconfined_t 프로세스에 대한 액세스가 거부되었습니다.

SELinux: 사용자 정의 유형 unconfined_t 프로세스에 대한 액세스가 거부되었습니다.

SELinux, debian 11, 기본 정책(apt를 통해 설치). 나만의 파일 형식을 만들었습니다. 나는 이 파일들이 다른 unconfined_t 응용 프로그램(루트 포함)이 아닌 특정 응용 프로그램에서만 액세스할 수 있기를 원합니다. 이를 달성하는 가장 쉽고 안정적인 방법은 무엇입니까? 복잡한 설정을 하지 않고 가능한 한 기본 정책에 가깝게 유지하는 것이 가장 좋습니다.

답변1

몇 번의 시도 끝에 작업을 수행하기 위해 TE 파일을 만들었습니다.

혹시 누군가에게 유용할까봐 여기에 남겨두겠습니다.

주요 문제는 우리가 사용하면 files_type (< our type >)제한되지 않은 모든 프로세스가 자동으로 이러한 파일에 액세스할 수 있다는 것입니다. 따라서 매크로를 사용하지 않고도 files_type()충분합니다 .

policy_module(mytest,1.0)

require {
    type kernel_t;
    type init_t;
    type initrc_t;
    type user_home_dir_t;
    role unconfined_r;
    type unconfined_t;
    attribute exec_type;
}

type mytest_file_t;
type mytest_app_t;

allow mytest_app_t mytest_file_t:file { manage_file_perms relabel_file_perms exec_file_perms quotaon mounton watch };

# mark mytest_app_t as unconfined application
unconfined_domain(mytest_app_t);
application_exec_all(mytest_app_t);
application_signal(mytest_app_t);
files_unconfined(mytest_app_t);

# files
fs_associate(mytest_file_t);
type_transition mytest_app_t user_home_dir_t: file mytest_file_t;

# add to unconfined role
role unconfined_r types { mytest_app_t mytest_file_t};

# allow transition to mytest_app_t only from unconfined, kernel and init
allow {unconfined_t kernel_t init_t initrc_t} mytest_app_t : process {transition siginh rlimitinh noatsecure};

# allow kernel and init apps to work with my files
allow {kernel_t init_t initrc_t} mytest_file_t:file { manage_file_perms relabel_file_perms quotaon mounton watch };

# allow any exec file to be entrypoint to mytest_app (only for demo and test reasons)
allow mytest_app_t exec_type : file {read_file_perms exec_file_perms entrypoint};

이 구성에는 mytest_app_t및 의 두 가지 유형이 도입되었습니다 mytest_file_t. mytest_app_t프로세스가 폴더에 파일을 생성 하면 user_home_dir_t파일 유형은 mytest_file_t제한되지 않은 루트 프로세스라도 이 파일에 대한 액세스를 거부합니다. 또한 config에는 커널 및 초기화 예외도 도입됩니다.

이 개념을 테스트하려면 명령을 실행하고 /home/cp/file1.txt의 nano 애플리케이션에서 파일을 생성하여 프로세스 유형을 수동으로 설정할 수 있습니다.

runcon -t mytest_app_t /usr/bin/nano /home/cp/file1.txt

여기에 이미지 설명을 입력하세요.

여기에 이미지 설명을 입력하세요.

mytest_file_t파일은 프로세스에서 생성된 경우에만 보고 수정할 수 있습니다 mytest_app_t. 루트조차도 이러한 파일의 속성을 볼 수 없습니다.

관련 정보