From 3f07cf69f93b1aba2729103ea7ecf71cfc23d884 Mon Sep 17 00:00:00 2001 From: Marius Gavrilescu Date: Wed, 22 Jan 2014 23:17:24 +0200 Subject: [PATCH] Update SELinux policy and move log configuration to /etc --- lib/Gruntmaster/Daemon.pm | 2 +- selinux/gruntmasterd.fc | 2 ++ selinux/gruntmasterd.te | 49 +++++++++++++++++++++++++++++---------- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/lib/Gruntmaster/Daemon.pm b/lib/Gruntmaster/Daemon.pm index 46da60b..40529b2 100644 --- a/lib/Gruntmaster/Daemon.pm +++ b/lib/Gruntmaster/Daemon.pm @@ -151,7 +151,7 @@ sub got_job{ } sub run{ - Log::Log4perl->init('log.conf'); + Log::Log4perl->init('/etc/gruntmasterd-log.conf'); get_logger->info("gruntmasterd $VERSION started"); chdir tempdir 'gruntmasterd.XXXX', CLEANUP => 1, TMPDIR => 1; SUBSCRIBE jobs => \&got_job; diff --git a/selinux/gruntmasterd.fc b/selinux/gruntmasterd.fc index c6aca36..6d67f32 100644 --- a/selinux/gruntmasterd.fc +++ b/selinux/gruntmasterd.fc @@ -1,4 +1,6 @@ /usr/(local/)?bin/gruntmasterd gen_context(system_u:object_r:gruntmasterd_exec_t, s0) /usr/(local/)?bin/gruntmaster-compile gen_context(system_u:object_r:gruntmaster_compile_exec_t, s0) /usr/(local/)?bin/gruntmaster-exec gen_context(system_u:object_r:gruntmaster_job_exec_t, s0) +/usr/(local/)?bin/gruntmaster-paged gen_context(system_u:object_r:gruntmaster_paged_exec_t, s0) +/etc/gruntmasterd-log.conf gen_context(system_u:object_r:gruntmasterd_etc_t, s0) /var/log/gruntmasterd gen_context(system_u:object_r:gruntmasterd_log_t, s0) diff --git a/selinux/gruntmasterd.te b/selinux/gruntmasterd.te index c6b4eed..ed878da 100644 --- a/selinux/gruntmasterd.te +++ b/selinux/gruntmasterd.te @@ -15,34 +15,45 @@ require{ type httpd_sys_content_t; type httpd_t; type httpd_tmp_t; + type port_t; type proc_t; type urandom_device_t; } # Types type gruntmasterd_t; +type gruntmasterd_etc_t; type gruntmasterd_exec_t; type gruntmasterd_log_t; +type gruntmasterd_tmp_t; type gruntmaster_job_t; type gruntmaster_job_exec_t; type gruntmaster_compile_t; type gruntmaster_compile_exec_t; +type gruntmaster_paged_t; +type gruntmaster_paged_exec_t; domain_type(gruntmaster_job_t) domain_entry_file(gruntmaster_job_t, gruntmaster_job_exec_t) role system_r types gruntmaster_job_t; -type_transition gruntmasterd_t gruntmaster_job_exec_t : process gruntmaster_job_t; domain_type(gruntmaster_compile_t) domain_entry_file(gruntmaster_compile_t, gruntmaster_compile_exec_t) role system_r types gruntmaster_compile_t; -type_transition gruntmasterd_t gruntmaster_compile_exec_t : process gruntmaster_compile_t; -type_transition gruntmaster_compile_t httpd_tmp_t : file gruntmaster_job_exec_t; +type_transition gruntmaster_compile_t gruntmasterd_tmp_t : file gruntmaster_job_exec_t; + +init_daemon_domain(gruntmaster_paged_t, gruntmaster_paged_exec_t) +type_transition gruntmaster_paged_t httpd_sys_content_t : { file dir } httpd_sys_content_rw_t; init_daemon_domain(gruntmasterd_t, gruntmasterd_exec_t) logging_log_file(gruntmasterd_log_t) logging_log_filetrans(gruntmasterd_t, gruntmasterd_log_t, file) logging_search_logs(gruntmasterd_t) +type_transition gruntmasterd_t gruntmaster_compile_exec_t : process gruntmaster_compile_t; +type_transition gruntmasterd_t gruntmaster_job_exec_t : process gruntmaster_job_t; +type_transition gruntmasterd_t tmp_t : dir gruntmasterd_tmp_t; +files_type(gruntmasterd_tmp_t) +files_type(gruntmasterd_etc_t) # Daemon permissions allow gruntmasterd_t { gruntmaster_compile_t gruntmaster_job_t } : process { sigkill siginh rlimitinh transition }; @@ -51,20 +62,23 @@ allow gruntmasterd_t self : process fork; allow gruntmasterd_t self:fifo_file everything_file_perms; allow gruntmasterd_t urandom_device_t:chr_file read_file_perms; allow gruntmasterd_t { gruntmaster_compile_exec_t gruntmaster_job_exec_t } : file execute; +allow gruntmasterd_t port_t:tcp_socket name_connect; +allow gruntmasterd_t self:tcp_socket { read write create ioctl connect }; dontaudit gruntmasterd_t { gruntmaster_compile_t gruntmaster_job_t } : process noatsecure; +allow gruntmasterd_t tmp_t : dir { getattr write search add_name }; + gruntmaster_read(bin_t) gruntmaster_read(gruntmaster_compile_exec_t) +gruntmaster_read(gruntmasterd_etc_t) +gruntmaster_read(gruntmaster_job_exec_t) gruntmaster_read(httpd_sys_content_t) gruntmaster_read(lib_t) gruntmaster_read(proc_t) gruntmaster_read(usr_t) -gruntmaster_everything(gruntmaster_job_exec_t) gruntmaster_everything(gruntmasterd_log_t) -gruntmaster_everything(httpd_sys_content_rw_t) -gruntmaster_everything(httpd_tmp_t) -gruntmaster_everything(tmp_t) +gruntmaster_everything(gruntmasterd_tmp_t) files_read_etc_files(gruntmasterd_t) files_search_etc(gruntmasterd_t) @@ -78,8 +92,8 @@ domain_read_files(gruntmaster_job_t, usr_t) allow gruntmaster_job_t gruntmaster_job_exec_t : file { execute execute_no_trans }; allow gruntmaster_job_t gruntmasterd_t:fd use; allow gruntmaster_job_t gruntmasterd_t:process sigchld; -allow gruntmaster_job_t httpd_tmp_t : dir read_dir_perms; -allow gruntmaster_job_t httpd_tmp_t : file { getattr ioctl read write }; +allow gruntmaster_job_t gruntmasterd_tmp_t : dir read_dir_perms; +allow gruntmaster_job_t gruntmasterd_tmp_t : file { getattr ioctl read write }; allow gruntmaster_job_t init_t:fd use; allow gruntmaster_job_t self:process setrlimit; allow gruntmaster_job_t urandom_device_t:chr_file read_file_perms; @@ -92,16 +106,15 @@ miscfiles_read_localization(gruntmaster_job_t) domain_everything_files(gruntmaster_compile_t, gruntmaster_job_exec_t) domain_everything_files(gruntmaster_compile_t, tmp_t) domain_read_files(gruntmaster_compile_t, bin_t) -domain_read_files(gruntmaster_compile_t, httpd_sys_content_rw_t) -domain_read_files(gruntmaster_compile_t, httpd_tmp_t) domain_read_files(gruntmaster_compile_t, lib_t) domain_read_files(gruntmaster_compile_t, proc_t) domain_read_files(gruntmaster_compile_t, proc_t) domain_read_files(gruntmaster_compile_t, usr_t) +domain_read_files(gruntmaster_compile_t, gruntmasterd_tmp_t) allow gruntmaster_compile_t gruntmasterd_t : fifo_file { read write ioctl }; allow gruntmaster_compile_t gruntmasterd_t:fd use; allow gruntmaster_compile_t gruntmasterd_t:process sigchld; -allow gruntmaster_compile_t httpd_tmp_t:dir { write add_name }; +allow gruntmaster_compile_t gruntmasterd_tmp_t:dir { write add_name }; allow gruntmaster_compile_t self : fifo_file { read write ioctl }; allow gruntmaster_compile_t self:process signal; allow gruntmaster_compile_t urandom_device_t:chr_file read_file_perms; @@ -110,3 +123,15 @@ allow gruntmaster_compile_t { bin_t lib_t } : file { execute execute_no_trans }; libs_use_ld_so(gruntmaster_compile_t) libs_use_shared_libs(gruntmaster_compile_t) miscfiles_read_localization(gruntmaster_compile_t) + +# Page generator permissions +domain_everything_files(gruntmaster_paged_t, httpd_sys_content_rw_t) +domain_read_files(gruntmaster_paged_t, usr_t) +domain_read_files(gruntmaster_paged_t, bin_t) +allow gruntmaster_paged_t urandom_device_t:chr_file read_file_perms; +allow gruntmaster_paged_t port_t:tcp_socket name_connect; +allow gruntmaster_paged_t self:tcp_socket { read write create ioctl connect }; + +libs_use_ld_so(gruntmaster_paged_t) +libs_use_shared_libs(gruntmaster_paged_t) +miscfiles_read_localization(gruntmaster_paged_t) -- 2.30.2