
저는 타겟 SELinux를 더 잘 이해하려고 노력하고 있습니다. 사용자, 프로세스, 포트 등이 4배로 라벨링되어 있으며 등을 <user>,role>,<type>,<sensitivity>
사용하여 라벨을 설정하는 방법을 semanage, restorecon
이해하고 있습니다. SELinux가 프로세스에서 리소스에 액세스할 수 있는지 여부와 리소스에 액세스할 수 있는 방법을 SELinux가 결정하는 방법을 아직 이해하지 못합니다. 과정.
예를 들어 REL8에서 내 프로세스와 기본 디렉터리에 httpd
대한 다음 레이블을 볼 수 있습니다 .DocumentRoot
/var/www/html
[root@mylinux targeted]# ls -alZ /var/www/html
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0 6 Aug 17 16:53 .
drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Aug 17 16:53 ..
[root@mylinux targeted]# ps -efZ | grep httpd
system_u:system_r:httpd_t:s0 root 35291 1 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35292 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35293 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35294 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35295 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 35838 27088 0 13:30 pts/0 00:00:00 grep --color=auto httpd
하지만 제가 찾고 있는 것은 다음 질문에 대한 답입니다.
- httpd 프로세스가 /var/www/html의 파일에 액세스하도록 허용되는 이유는 무엇입니까?? 여기서는 어떤 라벨을 어떤 순서로 확인하고 어떤 라벨이 일치해야 합니까?
role
이 액세스가 허용된다는 정의는 어떻게 되나요 ?? 역할 정의를 확인하는 방법- 프로세스가 특정 레이블의 리소스에 액세스할 수 있는 방법을 결정하는 방법?
- 예를 들어 다른 파일 컨텍스트에도 액세스할 수 있도록 관리자로서 역할을 수정할 수 있습니까??
명확한 설명을 위해 미리 감사드립니다.
답변1
출력에서:
[root@mylinux targeted]# ps -efZ | grep httpd
system_u:system_r:httpd_t:s0 root 35291 1 0 13:23 ?
httpd
레이블 로 실행됩니다 httpd_t
. 이러한 레이블은 특정 selinux 도메인 전환 규칙을 통해 프로세스에 첨부됩니다.
그러면 우리가 볼 수 있듯이:
[root@mylinux targeted]# ls -alZ /var/www/html
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0 6 Aug 17 16:53 .
drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Aug 17 16:53 ..
/var/www/html
허용된 도메인 라벨이 있습니다 httpd_sys_content_t
. 따라서 로 실행되는 프로세스는 httpd_d
동일한 라벨이 붙은 파일 시스템 콘텐츠를 읽을 수 있습니다 httpd_sys_content_t
.
이 모든 것은 매우 복잡하고 장황한 selinux 규칙을 통해 제어됩니다. 시스템 관리자는 전체 규칙 세트를 이해할 것으로 예상되지 않으므로 당황하지 마십시오. 중요한 것은 a) selinux 로그, b) semanage
및 c)를 이해하는 것입니다.audit2allow
자세한 내용은 다음을 참조하세요.RedHat Selinux 문서
질문에 답변하려면:
httpd 프로세스가 /var/www/html의 파일에 액세스하도록 허용되는 이유는 무엇입니까?규칙에 따라 레이블이 있는 프로세스가 레이블이 있는 파일(예: )
httpd_t
을 읽을 수 있도록 허용하기 때문입니다.httpd_sys_content_t
ALLOW apache_process apache_log:FILE READ;
이 액세스가 허용됨을 정의하는 역할은 무엇입니까?역할은 사용자 유형(예: 직원)에 MAC를 적용하지만 기본 정책에서는 사용되지 않습니다. 오히려 (기본값이 아닌) MLS 정책에 사용됩니다.
프로세스가 특정 레이블의 리소스에 액세스할 수 있는 방법을 어떻게 확인할 수 있나요?전체 정책 세트를 덤프할 수 있지만 이는 간단한 정보를 제공하지 않습니다. 오히려 좀 보세요.
semange fcontext -l
예를 들어 다른 파일 컨텍스트에도 액세스할 수 있도록 관리자로서 역할을 수정할 수 있습니까?확신하는. 정책을 처음부터 작성하거나(권장하지 않음) 사용할 수 있습니다
audit2allow
(더 좋음). 그러나 사용자 정의 정책 변경은 추적/관리하기 어렵기 때문에 이를 피하십시오. 오히려 가능하면 기본 정책을 사용하거나 사용자 정의하십시오setsebool
.semanage