Răsfoiți Sursa

jabber: add policy module

Helmut Pozimski 4 ani în urmă
părinte
comite
9e6d19a436
3 a modificat fișierele cu 345 adăugiri și 0 ștergeri
  1. 28 0
      jabber.fc
  2. 122 0
      jabber.if
  3. 195 0
      jabber.te

+ 28 - 0
jabber.fc

@@ -0,0 +1,28 @@
+/etc/rc\.d/init\.d/((jabber)|(ejabberd)|(jabberd))	--	gen_context(system_u:object_r:jabberd_initrc_exec_t,s0)
+
+/usr/bin/router	--	gen_context(system_u:object_r:jabberd_router_exec_t,s0)
+/usr/bin/c2s	--	gen_context(system_u:object_r:jabberd_router_exec_t,s0)
+/usr/bin/s2s	--	gen_context(system_u:object_r:jabberd_exec_t,s0)
+/usr/bin/sm	--	gen_context(system_u:object_r:jabberd_exec_t,s0)
+
+/usr/sbin/ejabberd	--	gen_context(system_u:object_r:jabberd_exec_t,s0)
+/usr/sbin/ejabberdctl	--	gen_context(system_u:object_r:jabberd_exec_t,s0)
+/usr/sbin/jabberd	--	gen_context(system_u:object_r:jabberd_exec_t,s0)
+
+/var/lock/ejabberdctl(/.*)	gen_context(system_u:object_r:jabberd_lock_t,s0)
+
+/var/log/ejabberd(/.*)?	gen_context(system_u:object_r:jabberd_log_t,s0)
+/var/log/jabber(/.*)?	gen_context(system_u:object_r:jabberd_log_t,s0)
+
+/var/lib/ejabberd(/.*)?	gen_context(system_u:object_r:jabberd_var_lib_t,s0)
+/var/lib/ejabberd/spool(/.*)?	gen_context(system_u:object_r:jabberd_spool_t,s0)
+/var/lib/jabber(/.*)?	gen_context(system_u:object_r:jabberd_var_lib_t,s0)
+/var/lib/jabberd(/.*)?	gen_context(system_u:object_r:jabberd_var_lib_t,s0)
+/var/lib/jabberd/log(/.*)?	gen_context(system_u:object_r:jabberd_log_t,s0)
+/var/lib/jabberd/pid(/.*)?	gen_context(system_u:object_r:jabberd_var_run_t,s0)
+
+/var/run/ejabber\.pid	--	gen_context(system_u:object_r:jabberd_var_run_t,s0)
+/var/run/jabber\.pid	--	gen_context(system_u:object_r:jabberd_var_run_t,s0)
+/var/run/ejabberd(/.*)?		gen_context(system_u:object_r:jabberd_var_run_t,s0)
+
+/var/cache/ejabberd(/.*)?	gen_context(system_u:object_r:jabberd_var_cache_t,s0)

+ 122 - 0
jabber.if

@@ -0,0 +1,122 @@
+## <summary>Jabber instant messaging servers.</summary>
+
+#######################################
+## <summary>
+##	The template to define a jabber domain.
+## </summary>
+## <param name="domain_prefix">
+##	<summary>
+##	Domain prefix to be used.
+##	</summary>
+## </param>
+#
+template(`jabber_domain_template',`
+	gen_require(`
+		attribute jabberd_domain;
+	')
+
+	type $1_t, jabberd_domain;
+	type $1_exec_t;
+	init_daemon_domain($1_t, $1_exec_t)
+')
+
+########################################
+## <summary>
+##	Create, read, write, and delete
+##	jabber lib files.
+## </summary>
+## <param name="domain">
+##	<summary>
+##	Domain allowed access.
+##	</summary>
+## </param>
+#
+interface(`jabber_manage_lib_files',`
+	gen_require(`
+		type jabberd_var_lib_t;
+	')
+
+	files_search_var_lib($1)
+	manage_files_pattern($1, jabberd_var_lib_t, jabberd_var_lib_t)
+')
+
+########################################
+## <summary>
+##	Connect to jabber over a TCP socket  (Deprecated)
+## </summary>
+## <param name="domain">
+##	<summary>
+##	Domain allowed access.
+##	</summary>
+## </param>
+#
+interface(`jabber_tcp_connect',`
+	refpolicywarn(`$0($*) has been deprecated.')
+')
+
+########################################
+## <summary>
+##	All of the rules required to
+##	administrate an jabber environment.
+## </summary>
+## <param name="domain">
+##	<summary>
+##	Domain allowed access.
+##	</summary>
+## </param>
+## <param name="role">
+##	<summary>
+##	Role allowed access.
+##	</summary>
+## </param>
+## <rolecap/>
+#
+interface(`jabber_admin',`
+	gen_require(`
+		attribute jabberd_domain;
+		type jabberd_lock_t, jabberd_log_t, jabberd_spool_t;
+		type jabberd_var_lib_t, jabberd_var_run_t, jabberd_initrc_exec_t;
+	')
+
+	allow $1 jabberd_domain:process { ptrace signal_perms };
+	ps_process_pattern($1, jabberd_domain)
+
+	init_labeled_script_domtrans($1, jabberd_initrc_exec_t)
+	domain_system_change_exemption($1)
+	role_transition $2 jabberd_initrc_exec_t system_r;
+	allow $2 system_r;
+
+	files_search_locks($1)
+	admin_pattern($1, jabberd_lock_t)
+
+	logging_search_logs($1)
+	admin_pattern($1, jabberd_log_t)
+
+	files_search_spool($1)
+	admin_pattern($1, jabberd_spool_t)
+
+	files_search_var_lib($1)
+	admin_pattern($1, jabberd_var_lib_t)
+
+	files_search_pids($1)
+	admin_pattern($1, jabberd_var_run_t)
+')
+
+########################################
+## <summary>
+##      Execute ejabberd with a domain transition.
+## </summary>
+## <param name="domain">
+##      <summary>
+##      Domain allowed to transition.
+##      </summary>
+## </param>
+#
+interface(`jabber_domtrans',`
+        gen_require(`
+                type jabberd_t, jabberd_exec_t;
+        ')
+
+        corecmd_search_bin($1)
+        domtrans_pattern($1, jabberd_exec_t, jabberd_t)
+')

+ 195 - 0
jabber.te

@@ -0,0 +1,195 @@
+policy_module(jabber, 1.11.8)
+
+########################################
+#
+# Declarations
+#
+
+attribute jabberd_domain;
+
+jabber_domain_template(jabberd)
+jabber_domain_template(jabberd_router)
+
+type jabberd_initrc_exec_t;
+init_script_file(jabberd_initrc_exec_t)
+
+type jabberd_lock_t;
+files_lock_file(jabberd_lock_t)
+
+type jabberd_log_t;
+logging_log_file(jabberd_log_t)
+
+type jabberd_spool_t;
+files_type(jabberd_spool_t)
+
+type jabberd_var_cache_t;
+files_type(jabberd_var_cache_t)
+
+type jabberd_var_lib_t;
+files_type(jabberd_var_lib_t)
+
+type jabberd_var_run_t;
+files_pid_file(jabberd_var_run_t)
+
+########################################
+#
+# Common local policy
+#
+
+allow jabberd_domain self:process signal_perms;
+allow jabberd_domain self:fifo_file rw_fifo_file_perms;
+allow jabberd_domain self:tcp_socket { accept listen };
+allow jabberd_t self:netlink_route_socket create;
+
+manage_files_pattern(jabberd_domain, jabberd_var_lib_t, jabberd_var_lib_t)
+
+kernel_read_system_state(jabberd_domain)
+
+corenet_all_recvfrom_unlabeled(jabberd_domain)
+corenet_all_recvfrom_netlabel(jabberd_domain)
+corenet_tcp_sendrecv_generic_if(jabberd_domain)
+corenet_tcp_sendrecv_generic_node(jabberd_domain)
+corenet_tcp_bind_generic_node(jabberd_domain)
+corenet_udp_bind_generic_node(jabberd_domain)
+corenet_udp_bind_all_unreserved_ports(jabberd_domain)
+
+dev_read_urand(jabberd_domain)
+dev_read_sysfs(jabberd_domain)
+
+fs_getattr_all_fs(jabberd_domain)
+
+logging_send_syslog_msg(jabberd_domain)
+
+miscfiles_read_localization(jabberd_domain)
+
+optional_policy(`
+	nis_use_ypbind(jabberd_domain)
+')
+
+optional_policy(`
+	seutil_sigchld_newrole(jabberd_domain)
+')
+
+########################################
+#
+# Local policy
+#
+
+allow jabberd_t self:capability dac_override;
+dontaudit jabberd_t self:capability sys_tty_config;
+allow jabberd_t self:tcp_socket create_socket_perms;
+allow jabberd_t self:udp_socket create_socket_perms;
+allow jabberd_t self:capability { setuid audit_write setgid };
+allow jabberd_t self:netlink_audit_socket { write nlmsg_relay create read };
+allow jabberd_t self:netlink_selinux_socket { bind create };
+allow jabberd_t self:process { setsched getsched };
+
+
+gen_require(`
+	class passwd passwd;
+')
+allow jabberd_t self:passwd passwd;
+
+manage_files_pattern(jabberd_t, jabberd_lock_t, jabberd_lock_t)
+files_lock_filetrans(jabberd_t, jabberd_lock_t, file)
+
+manage_dirs_pattern(jabberd_t, jabberd_log_t, jabberd_log_t)
+manage_files_pattern(jabberd_t, jabberd_log_t, jabberd_log_t)
+logging_log_filetrans(jabberd_t, jabberd_log_t, { file dir })
+
+manage_dirs_pattern(jabberd_t, jabberd_var_cache_t, jabberd_var_cache_t)
+manage_files_pattern(jabberd_t, jabberd_var_cache_t, jabberd_var_cache_t)
+type_transition jabberd_t jabberd_var_cache_t:{ file dir } jabberd_var_cache_t;
+
+manage_files_pattern(jabberd_domain, jabberd_spool_t, jabberd_spool_t)
+
+manage_files_pattern(jabberd_t, jabberd_var_run_t, jabberd_var_run_t)
+files_pid_filetrans(jabberd_t, jabberd_var_run_t, file)
+
+files_search_var_lib(jabberd_t)
+files_read_usr_files(jabberd_t)
+
+kernel_read_kernel_sysctls(jabberd_t)
+kernel_read_vm_sysctls(jabberd_t)
+kernel_read_vm_overcommit_sysctl(jabberd_t)
+
+corenet_sendrecv_jabber_client_server_packets(jabberd_t)
+corenet_tcp_bind_jabber_client_port(jabberd_t)
+corenet_tcp_sendrecv_jabber_client_port(jabberd_t)
+
+corenet_sendrecv_jabber_interserver_server_packets(jabberd_t)
+corenet_tcp_bind_jabber_interserver_port(jabberd_t)
+corenet_tcp_sendrecv_jabber_interserver_port(jabberd_t)
+
+corenet_tcp_bind_epmd_port(jabberd_t)
+corenet_tcp_connect_epmd_port(jabberd_t)
+
+corenet_tcp_bind_all_unreserved_ports(jabberd_t)
+corenet_tcp_connect_all_unreserved_ports(jabberd_t)
+dev_read_rand(jabberd_t)
+
+corenet_tcp_connect_ldap_port(jabberd_t)
+
+domain_use_interactive_fds(jabberd_t)
+
+files_read_etc_files(jabberd_t)
+files_read_etc_runtime_files(jabberd_t)
+files_manage_generic_tmp_dirs(jabberd_t)
+
+fs_search_auto_mountpoints(jabberd_t)
+
+sysnet_read_config(jabberd_t)
+
+userdom_dontaudit_use_unpriv_user_fds(jabberd_t)
+userdom_dontaudit_search_user_home_dirs(jabberd_t)
+
+corecmd_read_bin_symlinks(jabberd_t)
+corecmd_exec_bin(jabberd_t)
+corecmd_exec_shell(jabberd_t)
+
+init_read_state(jabberd_t)
+init_read_utmp(jabberd_t)
+
+su_exec(jabberd_t)
+selinux_compute_access_vector(jabberd_t)
+auth_read_shadow(jabberd_t)
+miscfiles_read_generic_certs(jabberd_t)
+
+optional_policy(`
+	udev_read_db(jabberd_t)
+')
+
+optional_policy(`
+	gen_require(`
+		type rabbitmq_epmd_exec_t;
+	')
+	can_exec(jabberd_t, rabbitmq_epmd_exec_t)
+')
+
+optional_policy(`
+	gen_require(`
+		type rabbitmq_beam_exec_t;
+	')
+	can_exec(jabberd_t, rabbitmq_beam_exec_t)
+')
+
+########################################
+#
+# Router local policy
+#
+
+manage_dirs_pattern(jabberd_router_t, jabberd_var_lib_t, jabberd_var_lib_t)
+
+kernel_read_network_state(jabberd_router_t)
+
+corenet_sendrecv_jabber_client_server_packets(jabberd_router_t)
+corenet_tcp_bind_jabber_client_port(jabberd_router_t)
+corenet_tcp_sendrecv_jabber_client_port(jabberd_router_t)
+
+# corenet_sendrecv_jabber_router_server_packets(jabberd_router_t)
+# corenet_tcp_bind_jabber_router_port(jabberd_router_t)
+# corenet_sendrecv_jabber_router_client_packets(jabberd_router_t)
+# corenet_tcp_connect_jabber_router_port(jabberd_router_t)
+# corenet_tcp_sendrecv_jabber_router_port(jabberd_router_t)
+
+auth_use_nsswitch(jabberd_router_t)