Dan Walsh 6554bb
diff -up serefpolicy-3.10.0/policy/modules/kernel/domain.if.apache serefpolicy-3.10.0/policy/modules/kernel/domain.if
Dan Walsh 6554bb
diff -up serefpolicy-3.10.0/policy/modules/kernel/domain.te.apache serefpolicy-3.10.0/policy/modules/kernel/domain.te
Dan Walsh 6554bb
diff -up serefpolicy-3.10.0/policy/modules/services/apache.if.apache serefpolicy-3.10.0/policy/modules/services/apache.if
Dan Walsh 6554bb
--- serefpolicy-3.10.0/policy/modules/services/apache.if.apache	2011-10-11 10:17:05.262944711 -0400
Dan Walsh 6554bb
+++ serefpolicy-3.10.0/policy/modules/services/apache.if	2011-10-11 10:17:13.416929487 -0400
Dan Walsh 2a89df
@@ -16,55 +16,43 @@ template(`apache_content_template',`
Dan Walsh 2a89df
 		attribute httpd_exec_scripts, httpd_script_exec_type;
Dan Walsh 2a89df
 		type httpd_t, httpd_suexec_t, httpd_log_t;
Dan Walsh 2a89df
 		type httpd_sys_content_t;
Dan Walsh 2a89df
+		attribute httpd_script_type, httpd_content_type;
Dan Walsh 2a89df
 	')
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 	#This type is for webpages
Dan Walsh 2a89df
 	type httpd_$1_content_t; # customizable;
Dan Walsh 2a89df
+	typeattribute httpd_$1_content_t httpd_content_type;
Dan Walsh 2a89df
 	typealias httpd_$1_content_t alias httpd_$1_script_ro_t;
Dan Walsh 2a89df
 	files_type(httpd_$1_content_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 	# This type is used for .htaccess files
Dan Walsh 2a89df
-	type httpd_$1_htaccess_t; # customizable;
Dan Walsh 2a89df
+	type httpd_$1_htaccess_t, httpd_content_type; # customizable;
Dan Walsh 2a89df
+	typeattribute httpd_$1_htaccess_t httpd_content_type;
Dan Walsh 2a89df
 	files_type(httpd_$1_htaccess_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 	# Type that CGI scripts run as
Dan Walsh 2a89df
-	type httpd_$1_script_t;
Dan Walsh 2a89df
+	type httpd_$1_script_t,	httpd_script_type;
Dan Walsh 2a89df
 	domain_type(httpd_$1_script_t)
Dan Walsh 2a89df
 	role system_r types httpd_$1_script_t;
Dan Walsh 2a89df
 
Dan Walsh 2a89df
-	search_dirs_pattern(httpd_$1_script_t, httpd_sys_content_t, httpd_script_exec_type)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
 	# This type is used for executable scripts files
Dan Walsh 2a89df
 	type httpd_$1_script_exec_t, httpd_script_exec_type; # customizable;
Dan Walsh 2a89df
-	corecmd_shell_entry_type(httpd_$1_script_t)
Dan Walsh 2a89df
+	typeattribute httpd_$1_script_exec_t httpd_content_type;
Dan Walsh 2a89df
 	domain_entry_file(httpd_$1_script_t, httpd_$1_script_exec_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 	type httpd_$1_rw_content_t; # customizable
Dan Walsh 2a89df
+	typeattribute httpd_$1_rw_content_t httpd_content_type;
Dan Walsh 2a89df
 	typealias httpd_$1_rw_content_t alias { httpd_$1_script_rw_t httpd_$1_content_rw_t };
Dan Walsh 2a89df
 	files_type(httpd_$1_rw_content_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
-	type httpd_$1_ra_content_t; # customizable
Dan Walsh 2a89df
+	type httpd_$1_ra_content_t, httpd_content_type; # customizable
Dan Walsh 2a89df
+	typeattribute httpd_$1_ra_content_t httpd_content_type;
Dan Walsh 2a89df
 	typealias httpd_$1_ra_content_t alias { httpd_$1_script_ra_t httpd_$1_content_ra_t };
Dan Walsh 2a89df
 	files_type(httpd_$1_ra_content_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
-	read_files_pattern(httpd_t, httpd_$1_content_t, httpd_$1_htaccess_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	allow httpd_t { httpd_$1_content_t httpd_$1_rw_content_t httpd_$1_script_exec_t }:dir search_dir_perms;
Dan Walsh 2a89df
-	allow httpd_suexec_t { httpd_$1_content_t httpd_$1_rw_content_t httpd_$1_script_exec_t }:dir search_dir_perms;
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	allow httpd_$1_script_t self:fifo_file rw_file_perms;
Dan Walsh 2a89df
-	allow httpd_$1_script_t self:unix_stream_socket connectto;
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	allow httpd_$1_script_t httpd_t:fifo_file write;
Dan Walsh 2a89df
-	# apache should set close-on-exec
Dan Walsh 2a89df
-	apache_dontaudit_leaks(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
 	# Allow the script process to search the cgi directory, and users directory
Dan Walsh 2a89df
 	allow httpd_$1_script_t httpd_$1_content_t:dir search_dir_perms;
Dan Walsh 2a89df
 
Dan Walsh 2a89df
-	append_files_pattern(httpd_$1_script_t, httpd_log_t, httpd_log_t)
Dan Walsh 2a89df
-	logging_search_logs(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
 	can_exec(httpd_$1_script_t, httpd_$1_script_exec_t)
Dan Walsh 2a89df
 	allow httpd_$1_script_t httpd_$1_script_exec_t:dir list_dir_perms;
Dan Walsh 2a89df
 
Dan Walsh 2a89df
@@ -83,27 +71,6 @@ template(`apache_content_template',`
Dan Walsh 2a89df
 	manage_fifo_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
Dan Walsh 2a89df
 	manage_sock_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
-	kernel_dontaudit_search_sysctl(httpd_$1_script_t)
Dan Walsh 2a89df
-	kernel_dontaudit_search_kernel_sysctl(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	dev_read_rand(httpd_$1_script_t)
Dan Walsh 2a89df
-	dev_read_urand(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	corecmd_exec_all_executables(httpd_$1_script_t)
Dan Walsh 2a89df
-	application_exec_all(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	files_exec_etc_files(httpd_$1_script_t)
Dan Walsh 2a89df
-	files_read_etc_files(httpd_$1_script_t)
Dan Walsh 2a89df
-	files_search_home(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	libs_exec_ld_so(httpd_$1_script_t)
Dan Walsh 2a89df
-	libs_exec_lib_files(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	miscfiles_read_fonts(httpd_$1_script_t)
Dan Walsh 2a89df
-	miscfiles_read_public_files(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	seutil_dontaudit_search_config(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
 	# Allow the web server to run scripts and serve pages
Dan Walsh 2a89df
 	tunable_policy(`httpd_builtin_scripting',`
Dan Walsh 2a89df
 		manage_dirs_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
Dan Walsh 2a89df
@@ -111,19 +78,11 @@ template(`apache_content_template',`
Dan Walsh 2a89df
 		manage_lnk_files_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
Dan Walsh 2a89df
 		rw_sock_files_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_ra_content_t:dir { list_dir_perms add_entry_dir_perms };
Dan Walsh 2a89df
+		allow httpd_t httpd_$1_ra_content_t:dir { add_entry_dir_perms };
Dan Walsh 2a89df
 		read_files_pattern(httpd_t, httpd_$1_ra_content_t, httpd_$1_ra_content_t)
Dan Walsh 2a89df
 		append_files_pattern(httpd_t, httpd_$1_ra_content_t, httpd_$1_ra_content_t)
Dan Walsh 2a89df
 		read_lnk_files_pattern(httpd_t, httpd_$1_ra_content_t, httpd_$1_ra_content_t)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_content_t:dir list_dir_perms;
Dan Walsh 2a89df
-		read_files_pattern(httpd_t, httpd_$1_content_t, httpd_$1_content_t)
Dan Walsh 2a89df
-		read_lnk_files_pattern(httpd_t, httpd_$1_content_t, httpd_$1_content_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_content_t:dir list_dir_perms;
Dan Walsh 2a89df
-		read_files_pattern(httpd_t, httpd_$1_content_t, httpd_$1_content_t)
Dan Walsh 2a89df
-		read_lnk_files_pattern(httpd_t, httpd_$1_content_t, httpd_$1_content_t)
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_script_t:unix_stream_socket connectto;
Dan Walsh 2a89df
 	')
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 	tunable_policy(`httpd_enable_cgi',`
Dan Walsh 2a89df
@@ -138,49 +97,6 @@ template(`apache_content_template',`
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 		# apache runs the script:
Dan Walsh 2a89df
 		domtrans_pattern(httpd_t, httpd_$1_script_exec_t, httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_script_exec_t:file read_file_perms;
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_script_exec_t:lnk_file read_lnk_file_perms;
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_script_t:process { signal sigkill sigstop };
Dan Walsh 2a89df
-		allow httpd_t httpd_$1_script_exec_t:dir list_dir_perms;
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		allow httpd_$1_script_t self:process { setsched signal_perms };
Dan Walsh 2a89df
-		allow httpd_$1_script_t self:unix_stream_socket create_stream_socket_perms;
Dan Walsh 2a89df
-		allow httpd_$1_script_t self:unix_dgram_socket create_socket_perms;
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		allow httpd_$1_script_t httpd_t:fd use;
Dan Walsh 2a89df
-		allow httpd_$1_script_t httpd_t:process sigchld;
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		dontaudit httpd_$1_script_t httpd_t:tcp_socket { read write };
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		kernel_read_system_state(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		dev_read_urand(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		fs_getattr_xattr_fs(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		files_read_etc_runtime_files(httpd_$1_script_t)
Dan Walsh 2a89df
-		files_read_usr_files(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		libs_read_lib_files(httpd_$1_script_t)
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-		miscfiles_read_localization(httpd_$1_script_t)
Dan Walsh 2a89df
-		allow httpd_$1_script_t httpd_sys_content_t:dir search_dir_perms;
Dan Walsh 2a89df
-	')
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	optional_policy(`
Dan Walsh 2a89df
-		tunable_policy(`httpd_enable_cgi && allow_ypbind',`
Dan Walsh 2a89df
-			nis_use_ypbind_uncond(httpd_$1_script_t)
Dan Walsh 2a89df
-		')
Dan Walsh 2a89df
-	')
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	optional_policy(`
Dan Walsh 2a89df
-		postgresql_unpriv_client(httpd_$1_script_t)
Dan Walsh 2a89df
-	')
Dan Walsh 2a89df
-
Dan Walsh 2a89df
-	optional_policy(`
Dan Walsh 2a89df
-		nscd_socket_use(httpd_$1_script_t)
Dan Walsh 2a89df
 	')
Dan Walsh 2a89df
 ')
Dan Walsh 2a89df
 
Dan Walsh 6554bb
diff -up serefpolicy-3.10.0/policy/modules/services/apache.te.apache serefpolicy-3.10.0/policy/modules/services/apache.te
Dan Walsh 6554bb
--- serefpolicy-3.10.0/policy/modules/services/apache.te.apache	2011-10-11 10:17:05.263944709 -0400
Dan Walsh 6554bb
+++ serefpolicy-3.10.0/policy/modules/services/apache.te	2011-10-11 10:17:13.418929446 -0400
Dan Walsh 6554bb
@@ -217,10 +217,12 @@ gen_tunable(allow_httpd_sys_script_anon_
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 attribute httpdcontent;
Dan Walsh 2a89df
 attribute httpd_user_content_type;
Dan Walsh 2a89df
+attribute httpd_content_type;
Dan Walsh 2a89df
 
Dan Walsh 2a89df
 # domains that can exec all users scripts
Dan Walsh 2a89df
 attribute httpd_exec_scripts;
Dan Walsh 2a89df
 
Dan Walsh 2a89df
+attribute httpd_script_type;
Dan Walsh 2a89df
 attribute httpd_script_exec_type;
Dan Walsh 2a89df
 attribute httpd_user_script_exec_type;
Dan Walsh 2a89df
 
Dan Walsh 2a89df
@@ -293,6 +295,10 @@ files_tmp_file(httpd_suexec_tmp_t)
Dan Walsh 2a89df
 # setup the system domain for system CGI scripts
Dan Walsh 2a89df
 apache_content_template(sys)
Dan Walsh 2a89df
 
Dan Walsh 2a89df
+optional_policy(`
Dan Walsh 2a89df
+	postgresql_unpriv_client(httpd_sys_script_t)
Dan Walsh 2a89df
+')
Dan Walsh 2a89df
+
Dan Walsh 2a89df
 typeattribute httpd_sys_content_t httpdcontent; # customizable
Dan Walsh 2a89df
 typeattribute httpd_sys_rw_content_t httpdcontent; # customizable
Dan Walsh 2a89df
 typeattribute httpd_sys_ra_content_t httpdcontent; # customizable
Dan Walsh 2a89df
@@ -1308,3 +1314,91 @@ systemd_passwd_agent_dev_template(httpd)
Dan Walsh 2a89df
 domtrans_pattern(httpd_t, httpd_passwd_exec_t, httpd_passwd_t)
Dan Walsh 2a89df
 dontaudit httpd_passwd_t httpd_config_t:file read;
Dan Walsh 2a89df
 
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+search_dirs_pattern(httpd_script_type, httpd_sys_content_t, httpd_script_exec_type)
Dan Walsh 2a89df
+corecmd_shell_entry_type(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+allow httpd_script_type self:fifo_file rw_file_perms;
Dan Walsh 2a89df
+allow httpd_script_type self:unix_stream_socket connectto;
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+allow httpd_script_type httpd_t:fifo_file write;
Dan Walsh 2a89df
+# apache should set close-on-exec
Dan Walsh 2a89df
+apache_dontaudit_leaks(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+append_files_pattern(httpd_script_type, httpd_log_t, httpd_log_t)
Dan Walsh 2a89df
+logging_search_logs(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+kernel_dontaudit_search_sysctl(httpd_script_type)
Dan Walsh 2a89df
+kernel_dontaudit_search_kernel_sysctl(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+dev_read_rand(httpd_script_type)
Dan Walsh 2a89df
+dev_read_urand(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+corecmd_exec_all_executables(httpd_script_type)
Dan Walsh 2a89df
+application_exec_all(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+files_exec_etc_files(httpd_script_type)
Dan Walsh 2a89df
+files_read_etc_files(httpd_script_type)
Dan Walsh 2a89df
+files_search_home(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+libs_exec_ld_so(httpd_script_type)
Dan Walsh 2a89df
+libs_exec_lib_files(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+miscfiles_read_fonts(httpd_script_type)
Dan Walsh 2a89df
+miscfiles_read_public_files(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+seutil_dontaudit_search_config(httpd_script_type)
Dan Walsh 2a89df
+allow httpd_t httpd_script_type:unix_stream_socket connectto;
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+allow httpd_t httpd_script_exec_type:file read_file_perms;
Dan Walsh 2a89df
+allow httpd_t httpd_script_exec_type:lnk_file read_lnk_file_perms;
Dan Walsh 2a89df
+allow httpd_t httpd_script_type:process { signal sigkill sigstop };
Dan Walsh 2a89df
+allow httpd_t httpd_script_exec_type:dir list_dir_perms;
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+allow httpd_script_type self:process { setsched signal_perms };
Dan Walsh 2a89df
+allow httpd_script_type self:unix_stream_socket create_stream_socket_perms;
Dan Walsh 2a89df
+allow httpd_script_type self:unix_dgram_socket create_socket_perms;
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+allow httpd_script_type httpd_t:fd use;
Dan Walsh 2a89df
+allow httpd_script_type httpd_t:process sigchld;
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+dontaudit httpd_script_type httpd_t:tcp_socket { read write };
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+kernel_read_system_state(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+dev_read_urand(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+fs_getattr_xattr_fs(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+files_read_etc_runtime_files(httpd_script_type)
Dan Walsh 2a89df
+files_read_usr_files(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+libs_read_lib_files(httpd_script_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+miscfiles_read_localization(httpd_script_type)
Dan Walsh 2a89df
+allow httpd_script_type httpd_sys_content_t:dir search_dir_perms;
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+tunable_policy(`httpd_enable_cgi && allow_ypbind',`
Dan Walsh 2a89df
+	nis_use_ypbind_uncond(httpd_script_type)
Dan Walsh 2a89df
+')
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+optional_policy(`
Dan Walsh 2a89df
+	nscd_socket_use(httpd_script_type)
Dan Walsh 2a89df
+')
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+read_files_pattern(httpd_t, httpd_content_type, httpd_content_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+tunable_policy(`httpd_builtin_scripting',`
Dan Walsh 2a89df
+	allow httpd_t httpd_content_type:dir search_dir_perms;
Dan Walsh 2a89df
+	allow httpd_suexec_t httpd_content_type:dir search_dir_perms;
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+	allow httpd_t httpd_content_type:dir list_dir_perms;
Dan Walsh 2a89df
+	read_files_pattern(httpd_t, httpd_content_type, httpd_content_type)
Dan Walsh 2a89df
+	read_lnk_files_pattern(httpd_t, httpd_content_type, httpd_content_type)
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+	allow httpd_t httpd_content_type:dir list_dir_perms;
Dan Walsh 2a89df
+	read_files_pattern(httpd_t, httpd_content_type, httpd_content_type)
Dan Walsh 2a89df
+	read_lnk_files_pattern(httpd_t, httpd_content_type, httpd_content_type)
Dan Walsh 2a89df
+')
Dan Walsh 2a89df
+
Dan Walsh 2a89df
+