Trac의 Ticket의 변화에 따라 관련자에게 메일이 전달되는 Notification 기능을 사용하기 위해 최종적으로 메일 전달을 위한 메일 서버 접속에 성공하기까지 계속 시도를 하며 문제가 된 audit 기록을 수집하였다.

그래서 얻어진 최종 Trac을 위한 Customized된 SELinux Policy Module은 다음과 같다.

 [root@ProjectS policy]#  egrep "netif|trac.cgi" /var/log/audit/audit.log | audit2allow
# ============= httpd_sys_script_t ==============
allow httpd_sys_script_t devlog_t:sock_file write;
allow httpd_sys_script_t file_t:dir { search getattr };
allow httpd_sys_script_t file_t:file { read getattr };
allow httpd_sys_script_t self:netlink_route_socket { write getattr read bind create nlmsg_read };
allow httpd_sys_script_t self:tcp_socket { read write create connect };
allow httpd_sys_script_t self:unix_dgram_socket { write create connect };
allow httpd_sys_script_t smtp_port_t:tcp_socket name_connect;
allow httpd_sys_script_t syslogd_t:unix_dgram_socket sendto;
allow httpd_sys_script_t unlabeled_t:packet { recv send };
allow httpd_sys_script_t user_home_t:dir { search getattr };
allow httpd_sys_script_t user_home_t:file { read getattr };
# ============= unconfined_t ==============
allow unconfined_t httpd_sys_script_t:file relabelto;
[root@ProjectS policy]#  egrep "netif|trac.cgi" /var/log/audit/audit.log | audit2allow -M tracsocket
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i tracsocket.pp
[root@ProjectS policy]#  more tracsocket.te
module tracsocket 1.0;
require {
         type unconfined_t;
         type unlabeled_t;
         type user_home_t;
         type smtp_port_t;
         type syslogd_t;
         type file_t;
         type devlog_t;
         type httpd_sys_script_t;
         class packet { recv send };
         class tcp_socket { read write name_connect create connect };
         class file { read relabelto getattr };
         class sock_file write;
         class netlink_route_socket { write getattr read bind create nlmsg_read };
         class unix_dgram_socket { write create connect sendto };
         class dir { search getattr };
}
# ============= httpd_sys_script_t ==============
allow httpd_sys_script_t devlog_t:sock_file write;
allow httpd_sys_script_t file_t:dir { search getattr };
allow httpd_sys_script_t file_t:file { read getattr };
allow httpd_sys_script_t self:netlink_route_socket { write getattr read bind create nlms
g_read };
allow httpd_sys_script_t self:tcp_socket { read write create connect };
allow httpd_sys_script_t self:unix_dgram_socket { write create connect };
allow httpd_sys_script_t smtp_port_t:tcp_socket name_connect;
allow httpd_sys_script_t syslogd_t:unix_dgram_socket sendto;
allow httpd_sys_script_t unlabeled_t:packet { recv send };
allow httpd_sys_script_t user_home_t:dir { search getattr };
allow httpd_sys_script_t user_home_t:file { read getattr };
# ============= unconfined_t ==============
allow unconfined_t httpd_sys_script_t:file relabelto;
[root@ProjectS policy]#  semodule -i tracsocket.pp

이렇게 하고 나니 httpd 데몬에 대한 SELinux 적용을 비활성화 하는 것과 어떤 차이가 있을까 하는 의문이 든다.
ㅋ 너무 마구잡이로 허용한건 아닐까? 그래도 막연히 기존 Linux 보안 체계보다는 믿음이 간다는.... ㅋㅋ

삽질하며 일일이 정책을 등록하는 보람이 있어야 할텐데.....

이로서 httpd 데몬에 의한 udp, tcp socket의 사용권이 허가된 셈이다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/01/01 13:44 2008/01/01 13:44
Tags: ,

Trackback Address :: http://www.codeforum.net/blog/pitoosung/trackback/141