SELinux: httpd가 /var/www/html의 파일을 읽을 수 있는 이유는 무엇입니까?

SELinux: httpd가 /var/www/html의 파일을 읽을 수 있는 이유는 무엇입니까?

저는 타겟 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

하지만 제가 찾고 있는 것은 다음 질문에 대한 답입니다.

  1. httpd 프로세스가 /var/www/html의 파일에 액세스하도록 허용되는 이유는 무엇입니까?? 여기서는 어떤 라벨을 어떤 순서로 확인하고 어떤 라벨이 일치해야 합니까?
  2. role이 액세스가 허용된다는 정의는 어떻게 되나요 ?? 역할 정의를 확인하는 방법
  3. 프로세스가 특정 레이블의 리소스에 액세스할 수 있는 방법을 결정하는 방법?
  4. 예를 들어 다른 파일 컨텍스트에도 액세스할 수 있도록 관리자로서 역할을 수정할 수 있습니까??

명확한 설명을 위해 미리 감사드립니다.

답변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 문서

질문에 답변하려면:

  1. httpd 프로세스가 /var/www/html의 파일에 액세스하도록 허용되는 이유는 무엇입니까?규칙에 따라 레이블이 있는 프로세스가 레이블이 있는 파일(예: ) httpd_t을 읽을 수 있도록 허용하기 때문입니다.httpd_sys_content_tALLOW apache_process apache_log:FILE READ;

  2. 이 액세스가 허용됨을 정의하는 역할은 무엇입니까?역할은 사용자 유형(예: 직원)에 MAC를 적용하지만 기본 정책에서는 사용되지 않습니다. 오히려 (기본값이 아닌) MLS 정책에 사용됩니다.

  3. 프로세스가 특정 레이블의 리소스에 액세스할 수 있는 방법을 어떻게 확인할 수 있나요?전체 정책 세트를 덤프할 수 있지만 이는 간단한 정보를 제공하지 않습니다. 오히려 좀 보세요.semange fcontext -l

  4. 예를 들어 다른 파일 컨텍스트에도 액세스할 수 있도록 관리자로서 역할을 수정할 수 있습니까?확신하는. 정책을 처음부터 작성하거나(권장하지 않음) 사용할 수 있습니다 audit2allow(더 좋음). 그러나 사용자 정의 정책 변경은 추적/관리하기 어렵기 때문에 이를 피하십시오. 오히려 가능하면 기본 정책을 사용하거나 사용자 정의하십시오 setsebool.semanage

관련 정보