2012-09-12 3 views
2

RHEL5 설치시 Apache 서버에서 실행되는 PHP 스크립트가 있습니다. 이 스크립트는 "rpm -q --info packagename"에 exec를 실행합니다.query rpm from apache + php with selinux

그것은 허용 모드에서는 selinux와 제대로 작동하지만, 완전히 활성화 된 것은 아닙니다. 그래서 나는 그것이 selinux 문제라고 생각한다.

나는 audit2allow를 사용하여 발견 한 거부 된 항목을 기반으로 규칙을 만들었지 만 이제는 감사 로그에서 더 이상 거부되지 않지만 selinux가 활성화 된 상태에서는 실행되지 않습니다.

내 세계에서 그것은 실행이 허용 될 경우 시스템에 쿼리하는 것으로 보이며 selinux가 "이것을 시도하면 멈추게 할 것"이라고 말합니다. 따라서 시스템은 exec를 실행하지 않습니다. 만약 그렇다면, 나는 "거부"를 기반으로 새로운 selinux 규칙을 만들 수 있다고 생각합니다. selinux가 허용되면 어떤 것도 거부 당하지는 않지만 작동합니다.

그래서 저는 이것을 어려운 방법으로 처리하고 selinux에 대한 사용자 정의 규칙을 작성해야합니다. 말했다 내가 하나 만든 일이 내 문제 만 가정하여 내 SELinux를 사용 엉망으로 아무것도하지 않았다하지만 회로

module php_rpm 1.0; 

require { 
    type httpd_t; 
    type bin_t; 
    type rpm_exec_t; 
    type rpm_var_lib_t; 
    class file { execute execute_no_trans getattr read execmod }; 
    class dir { getattr search }; 
} 

#============= httpd_t ============== 
allow httpd_t rpm_exec_t:file { execute execute_no_trans getattr read execmod }; 
allow httpd_t rpm_var_lib_t:dir { getattr search }; 

조금 규칙 : P

사람이 거기에 SELinux를 함께 PHP에서 RPM을 실행하려고 시도하였습니다을하고 그걸로 도망 갔어?

답변

1

나는 그것을 해결할 방법을 찾았습니다. 아마도 가장 좋은 방법은 아니지만 다소 방해가됩니다.

my audit2allow가 작동하지 않은 이유는 모든 메시지가 감사 로그에 표시되지 않았기 때문입니다. 일단 내가 이것을 읽으면 모든 로그를 보여주기 위해 그것을 활성화했습니다 : http://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3028826

로그에서 거부 된 메시지가 많아지면 작동하도록하기 위해 수행 할 작업을 파악할 수 있습니다.

마지막 TE-파일은 다음과 같습니다 : 나는 느낌이있다

module php_rpm 1.0; 

require { 
    type selinux_config_t; 
    type httpd_script_exec_t; 
    type security_t; 
    type httpd_t; 
    type rpm_exec_t; 
    type rpm_var_lib_t; 
    class dir { search getattr }; 
    class file { getattr read execute_no_trans execute lock }; 
} 

#============= httpd_t ============== 
allow httpd_t httpd_script_exec_t:file { read getattr execute_no_trans }; 
allow httpd_t rpm_exec_t:file { read getattr execute_no_trans execute }; 
allow httpd_t rpm_var_lib_t:dir { getattr search }; 
allow httpd_t rpm_var_lib_t:file { read getattr lock }; 
allow httpd_t security_t:dir search; 
allow httpd_t security_t:file read; 
allow httpd_t selinux_config_t:dir search; 
allow httpd_t selinux_config_t:file { read getattr }; 

가 문을 열고 조금 여기에, 그래서 난 아직도 어떻게 일부를이를 강화하려고합니다. 그러나 SELINUX 규칙은 여기에서 가장 중요한 관심사는 아니지만 2 차적인 문제입니다.

더 좋은 의견이 있으면 알려주세요. 더 구체적인 규칙이 있으시면 언제든지 공유해주세요.