diff --git a/policy/modules/services/passenger.fc b/policy/modules/services/passenger.fc new file mode 100644 index 000000000..545518dd9 --- /dev/null +++ b/policy/modules/services/passenger.fc @@ -0,0 +1,11 @@ +/usr/lib/ruby/gems/.*/passenger-.*/ext/apache2/ApplicationPoolServerExecutable -- gen_context(system_u:object_r:passenger_exec_t,s0) +/usr/lib/ruby/gems/.*/passenger-.*/agents/PassengerWatchdog -- gen_context(system_u:object_r:passenger_exec_t,s0) +/usr/lib/ruby/gems/.*/passenger-.*/agents/PassengerLoggingAgent -- gen_context(system_u:object_r:passenger_exec_t,s0) +/usr/lib/ruby/gems/.*/passenger-.*/agents/apache2/PassengerHelperAgent -- gen_context(system_u:object_r:passenger_exec_t,s0) + +/var/lib/passenger(/.*)? gen_context(system_u:object_r:passenger_var_lib_t,s0) + +/var/log/passenger(/.*)? gen_context(system_u:object_r:passenger_log_t,s0) +/var/log/passenger.* -- gen_context(system_u:object_r:passenger_log_t,s0) + +/var/run/passenger(/.*)? gen_context(system_u:object_r:passenger_var_run_t,s0) diff --git a/policy/modules/services/passenger.if b/policy/modules/services/passenger.if new file mode 100644 index 000000000..f68b57356 --- /dev/null +++ b/policy/modules/services/passenger.if @@ -0,0 +1,39 @@ +## Ruby on rails deployment for Apache and Nginx servers. + +###################################### +## +## Execute passenger in the passenger domain. +## +## +## +## Domain allowed to transition. +## +## +# +interface(`passenger_domtrans',` + gen_require(` + type passenger_t, passenger_exec_t; + ') + + domtrans_pattern($1, passenger_exec_t, passenger_t) +') + +######################################## +## +## Read passenger lib files +## +## +## +## Domain allowed access. +## +## +# +interface(`passenger_read_lib_files',` + gen_require(` + type passenger_var_lib_t; + ') + + read_files_pattern($1, passenger_var_lib_t, passenger_var_lib_t) + read_lnk_files_pattern($1, passenger_var_lib_t, passenger_var_lib_t) + files_search_var_lib($1) +') diff --git a/policy/modules/services/passenger.te b/policy/modules/services/passenger.te new file mode 100644 index 000000000..3470036de --- /dev/null +++ b/policy/modules/services/passenger.te @@ -0,0 +1,77 @@ +policy_module(passanger, 1.0.0) + +######################################## +# +# Declarations +# + +type passenger_t; +type passenger_exec_t; +domain_type(passenger_t) +domain_entry_file(passenger_t, passenger_exec_t) +role system_r types passenger_t; + +type passenger_log_t; +logging_log_file(passenger_log_t) + +type passenger_tmp_t; +files_tmp_file(passenger_tmp_t) + +type passenger_var_lib_t; +files_type(passenger_var_lib_t) + +type passenger_var_run_t; +files_pid_file(passenger_var_run_t) + +######################################## +# +# passanger local policy +# + +allow passenger_t self:capability { chown dac_override fsetid fowner kill setuid setgid sys_nice }; +allow passenger_t self:process { setpgid setsched sigkill signal }; +allow passenger_t self:fifo_file rw_fifo_file_perms; +allow passenger_t self:unix_stream_socket { create_stream_socket_perms connectto }; + +can_exec(passenger_t, passenger_exec_t) + +manage_dirs_pattern(passenger_t, passenger_log_t, passenger_log_t) +manage_files_pattern(passenger_t, passenger_log_t, passenger_log_t) +logging_log_filetrans(passenger_t, passenger_log_t, file) + +manage_dirs_pattern(passenger_t, passenger_var_lib_t, passenger_var_lib_t) +manage_files_pattern(passenger_t, passenger_var_lib_t, passenger_var_lib_t) +files_search_var_lib(passenger_t) + +manage_dirs_pattern(passenger_t, passenger_var_run_t, passenger_var_run_t) +manage_files_pattern(passenger_t, passenger_var_run_t, passenger_var_run_t) +manage_fifo_files_pattern(passenger_t, passenger_var_run_t, passenger_var_run_t) +manage_sock_files_pattern(passenger_t, passenger_var_run_t, passenger_var_run_t) +files_pid_filetrans(passenger_t, passenger_var_run_t, { file dir sock_file }) + +kernel_read_system_state(passenger_t) +kernel_read_kernel_sysctls(passenger_t) + +corenet_all_recvfrom_netlabel(passenger_t) +corenet_all_recvfrom_unlabeled(passenger_t) +corenet_tcp_sendrecv_generic_if(passenger_t) +corenet_tcp_sendrecv_generic_node(passenger_t) +corenet_tcp_connect_http_port(passenger_t) + +corecmd_exec_bin(passenger_t) +corecmd_exec_shell(passenger_t) + +dev_read_urand(passenger_t) + +files_read_etc_files(passenger_t) + +auth_use_nsswitch(passenger_t) + +miscfiles_read_localization(passenger_t) + +userdom_dontaudit_use_user_terminals(passenger_t) + +optional_policy(` + apache_append_log(passenger_t) + apache_read_sys_content(passenger_t) +')