diff --git a/policy/modules/apps/telepathy.fc b/policy/modules/apps/telepathy.fc new file mode 100644 index 000000000..90d238e8a --- /dev/null +++ b/policy/modules/apps/telepathy.fc @@ -0,0 +1,15 @@ +HOME_DIR/\.cache/\.mc_connections -- gen_context(system_u:object_r:telepathy_mission_control_cache_home_t, s0) +HOME_DIR/\.cache/telepathy/gabble(/.*)? gen_context(system_u:object_r:telepathy_gabble_cache_home_t, s0) +HOME_DIR/\.cache/wocky(/.*)? gen_context(system_u:object_r:telepathy_gabble_cache_home_t, s0) +HOME_DIR/\.mission-control(/.*)? gen_context(system_u:object_r:telepathy_mission_control_home_t, s0) +HOME_DIR/\.telepathy-sunshine(/.*)? gen_context(system_u:object_r:telepathy_sunshine_home_t, s0) + +/usr/libexec/mission-control-5 -- gen_context(system_u:object_r:telepathy_mission_control_exec_t, s0) +/usr/libexec/telepathy-butterfly -- gen_context(system_u:object_r:telepathy_msn_exec_t, s0) +/usr/libexec/telepathy-gabble -- gen_context(system_u:object_r:telepathy_gabble_exec_t, s0) +/usr/libexec/telepathy-haze -- gen_context(system_u:object_r:telepathy_msn_exec_t, s0) +/usr/libexec/telepathy-idle -- gen_context(system_u:object_r:telepathy_idle_exec_t, s0) +/usr/libexec/telepathy-salut -- gen_context(system_u:object_r:telepathy_salut_exec_t, s0) +/usr/libexec/telepathy-sofiasip -- gen_context(system_u:object_r:telepathy_sofiasip_exec_t, s0) +/usr/libexec/telepathy-stream-engine -- gen_context(system_u:object_r:telepathy_stream_engine_exec_t, s0) +/usr/libexec/telepathy-sunshine -- gen_context(system_u:object_r:telepathy_sunshine_exec_t, s0) diff --git a/policy/modules/apps/telepathy.if b/policy/modules/apps/telepathy.if new file mode 100644 index 000000000..caba58a2b --- /dev/null +++ b/policy/modules/apps/telepathy.if @@ -0,0 +1,179 @@ +## Telepathy communications framework. + +####################################### +## +## Creates basic types for telepathy +## domain +## +## +## +## Prefix for the domain. +## +## +# +# +template(`telepathy_domain_template',` + + gen_require(` + attribute telepathy_domain; + attribute telepathy_executable; + ') + + type telepathy_$1_t, telepathy_domain; + type telepathy_$1_exec_t, telepathy_executable; + application_domain(telepathy_$1_t, telepathy_$1_exec_t) + ubac_constrained(telepathy_$1_t) + + type telepathy_$1_tmp_t; + files_tmp_file(telepathy_$1_tmp_t) + ubac_constrained(telepathy_$1_tmp_t) +') + +####################################### +## +## Role access for telepathy domains +### that executes via dbus-session +## +## +## +## The role associated with the user domain. +## +## +## +## +## The type of the user domain. +## +## +# +template(`telepathy_role', ` + gen_require(` + attribute telepathy_domain; + type telepathy_gabble_t, telepathy_sofiasip_t, telepathy_idle_t; + type telepathy_mission_control_t, telepathy_salut_t, telepathy_sunshine_t; + type telepathy_stream_engine_t, telepathy_msn_t, telepathy_gabble_exec_t; + type telepathy_sofiasip_exec_t, telepathy_idle_exec_t; + type telepathy_mission_control_exec_t, telepathy_salut_exec_t; + type telepathy_sunshine_exec_t,telepathy_stream_engine_exec_t; + type telepathy_msn_exec_t; + ') + + role $1 types telepathy_domain; + + allow $2 telepathy_domain:process signal_perms; + ps_process_pattern($2, telepathy_domain) + + telepathy_gabble_stream_connect($2) + telepathy_msn_stream_connect($2) + telepathy_salut_stream_connect($2) + + dbus_session_domain($3, telepathy_gabble_exec_t, telepathy_gabble_t) + dbus_session_domain($3, telepathy_sofiasip_exec_t, telepathy_sofiasip_t) + dbus_session_domain($3, telepathy_idle_exec_t, telepathy_idle_t) + dbus_session_domain($3, telepathy_mission_control_exec_t, telepathy_mission_control_t) + dbus_session_domain($3, telepathy_salut_exec_t, telepathy_salut_t) + dbus_session_domain($3, telepathy_sunshine_exec_t, telepathy_sunshine_t) + dbus_session_domain($3, telepathy_stream_engine_exec_t, telepathy_stream_engine_t) + dbus_session_domain($3, telepathy_msn_exec_t, telepathy_msn_t) +') + +######################################## +## +## Stream connect to Telepathy Gabble +## +## +## +## Domain allowed access. +## +## +# +interface(`telepathy_gabble_stream_connect', ` + gen_require(` + type telepathy_gabble_t, telepathy_gabble_tmp_t; + ') + + stream_connect_pattern($1, telepathy_gabble_tmp_t, telepathy_gabble_tmp_t, telepathy_gabble_t) + files_search_tmp($1) +') + +######################################## +## +## Send DBus messages to and from +## Telepathy Gabble. +## +## +## +## Domain allowed access. +## +## +# +interface(`telepathy_gabble_dbus_chat', ` + gen_require(` + type telepathy_gabble_t; + class dbus send_msg; + ') + + allow $1 telepathy_gabble_t:dbus send_msg; + allow telepathy_gabble_t $1:dbus send_msg; +') + +######################################## +## +## Read telepathy mission control state. +## +## +## +## Prefix to be used. +## +## +## +## +## Domain allowed access. +## +## +# +interface(`telepathy_mission_control_read_state',` + gen_require(` + type telepathy_mission_control_t; + ') + + kernel_search_proc($1) + ps_process_pattern($1, telepathy_mission_control_t) +') + +####################################### +## +## Stream connect to telepathy MSN managers +## +## +## +## Domain allowed access. +## +## +# +interface(`telepathy_msn_stream_connect', ` + gen_require(` + type telepathy_msn_t, telepathy_msn_tmp_t; + ') + + stream_connect_pattern($1, telepathy_msn_tmp_t, telepathy_msn_tmp_t, telepathy_msn_t) + files_search_tmp($1) +') + +######################################## +## +## Stream connect to Telepathy Salut +## +## +## +## Domain allowed access. +## +## +# +interface(`telepathy_salut_stream_connect', ` + gen_require(` + type telepathy_salut_t, telepathy_salut_tmp_t; + ') + + stream_connect_pattern($1, telepathy_salut_tmp_t, telepathy_salut_tmp_t, telepathy_salut_t) + files_search_tmp($1) +') diff --git a/policy/modules/apps/telepathy.te b/policy/modules/apps/telepathy.te new file mode 100644 index 000000000..d27b92758 --- /dev/null +++ b/policy/modules/apps/telepathy.te @@ -0,0 +1,344 @@ +policy_module(telepathy, 1.0.0) + +######################################## +# +# Declarations. +# + +## +## +## Allow the Telepathy connection managers +## to connect to any generic TCP port. +## +## +gen_tunable(telepathy_tcp_connect_generic_network_ports, false) + +## +## +## Allow the Telepathy connection managers +## to connect to any network port. +## +## +gen_tunable(telepathy_connect_all_ports, false) + +attribute telepathy_domain; +attribute telepathy_executable; + +telepathy_domain_template(gabble) + +type telepathy_gabble_cache_home_t; +userdom_user_home_content(telepathy_gabble_cache_home_t) + +telepathy_domain_template(idle) +telepathy_domain_template(mission_control) + +type telepathy_mission_control_home_t; +userdom_user_home_content(telepathy_mission_control_home_t) + +type telepathy_mission_control_cache_home_t; +userdom_user_home_content(telepathy_mission_control_cache_home_t) + +telepathy_domain_template(msn) +telepathy_domain_template(salut) +telepathy_domain_template(sofiasip) +telepathy_domain_template(stream_engine) +telepathy_domain_template(sunshine) + +type telepathy_sunshine_home_t; +userdom_user_home_content(telepathy_sunshine_home_t) + +####################################### +# +# Telepathy Gabble local policy. +# + +allow telepathy_gabble_t self:tcp_socket create_stream_socket_perms; +allow telepathy_gabble_t self:unix_dgram_socket { create_socket_perms sendto }; + +manage_dirs_pattern(telepathy_gabble_t, telepathy_gabble_tmp_t, telepathy_gabble_tmp_t) +manage_sock_files_pattern(telepathy_gabble_t, telepathy_gabble_tmp_t, telepathy_gabble_tmp_t) +files_tmp_filetrans(telepathy_gabble_t, telepathy_gabble_tmp_t, { dir sock_file }) + +corenet_all_recvfrom_netlabel(telepathy_gabble_t) +corenet_all_recvfrom_unlabeled(telepathy_gabble_t) +corenet_tcp_sendrecv_generic_if(telepathy_gabble_t) +corenet_tcp_sendrecv_generic_node(telepathy_gabble_t) +corenet_tcp_connect_http_port(telepathy_gabble_t) +corenet_tcp_connect_jabber_client_port(telepathy_gabble_t) +corenet_tcp_connect_vnc_port(telepathy_gabble_t) +corenet_sendrecv_http_client_packets(telepathy_gabble_t) +corenet_sendrecv_jabber_client_client_packets(telepathy_gabble_t) +corenet_sendrecv_vnc_client_packets(telepathy_gabble_t) + +dev_read_rand(telepathy_gabble_t) + +files_read_config_files(telepathy_gabble_t) +files_read_usr_files(telepathy_gabble_t) + +fs_getattr_all_fs(telepathy_gabble_t) + +miscfiles_read_all_certs(telepathy_gabble_t) + +tunable_policy(`telepathy_connect_all_ports',` + corenet_tcp_connect_all_ports(telepathy_gabble_t) + corenet_tcp_sendrecv_all_ports(telepathy_gabble_t) + corenet_udp_sendrecv_all_ports(telepathy_gabble_t) +') + +tunable_policy(`telepathy_tcp_connect_generic_network_ports',` + corenet_tcp_connect_generic_port(telepathy_gabble_t) + corenet_sendrecv_generic_client_packets(telepathy_gabble_t) +') + +tunable_policy(`use_nfs_home_dirs',` + fs_manage_nfs_dirs(telepathy_gabble_t) + fs_manage_nfs_files(telepathy_gabble_t) +') + +tunable_policy(`use_samba_home_dirs',` + fs_manage_cifs_dirs(telepathy_gabble_t) + fs_manage_cifs_files(telepathy_gabble_t) +') + +optional_policy(` + dbus_system_bus_client(telepathy_gabble_t) +') + +####################################### +# +# Telepathy Idle local policy. +# + +corenet_all_recvfrom_netlabel(telepathy_idle_t) +corenet_all_recvfrom_unlabeled(telepathy_idle_t) +corenet_tcp_sendrecv_generic_if(telepathy_idle_t) +corenet_tcp_sendrecv_generic_node(telepathy_idle_t) +corenet_tcp_connect_gatekeeper_port(telepathy_idle_t) +corenet_tcp_connect_ircd_port(telepathy_idle_t) +corenet_sendrecv_ircd_client_packets(telepathy_idle_t) + +dev_read_rand(telepathy_idle_t) + +files_read_etc_files(telepathy_idle_t) + +tunable_policy(`telepathy_connect_all_ports',` + corenet_tcp_connect_all_ports(telepathy_idle_t) + corenet_tcp_sendrecv_all_ports(telepathy_idle_t) + corenet_udp_sendrecv_all_ports(telepathy_idle_t) +') + +tunable_policy(`telepathy_tcp_connect_generic_network_ports',` + corenet_tcp_connect_generic_port(telepathy_idle_t) + corenet_sendrecv_generic_client_packets(telepathy_idle_t) +') + +####################################### +# +# Telepathy Mission-Control local policy. +# + +manage_dirs_pattern(telepathy_mission_control_t, telepathy_mission_control_home_t, telepathy_mission_control_home_t) +manage_files_pattern(telepathy_mission_control_t, telepathy_mission_control_home_t, telepathy_mission_control_home_t) +userdom_user_home_dir_filetrans(telepathy_mission_control_t, telepathy_mission_control_home_t, { dir file }) + +dev_read_rand(telepathy_mission_control_t) + +fs_getattr_all_fs(telepathy_mission_control_t) + +files_read_etc_files(telepathy_mission_control_t) +files_read_usr_files(telepathy_mission_control_t) + +tunable_policy(`use_nfs_home_dirs',` + fs_manage_nfs_dirs(telepathy_mission_control_t) + fs_manage_nfs_files(telepathy_mission_control_t) +') + +tunable_policy(`use_samba_home_dirs',` + fs_manage_cifs_dirs(telepathy_mission_control_t) + fs_manage_cifs_files(telepathy_mission_control_t) +') + +####################################### +# +# Telepathy Butterfly and Haze local policy. +# + +allow telepathy_msn_t self:process setsched; +allow telepathy_msn_t self:unix_dgram_socket { write create connect }; + +manage_dirs_pattern(telepathy_msn_t, telepathy_msn_tmp_t, telepathy_msn_tmp_t) +manage_files_pattern(telepathy_msn_t, telepathy_msn_tmp_t, telepathy_msn_tmp_t) +manage_sock_files_pattern(telepathy_msn_t, telepathy_msn_tmp_t, telepathy_msn_tmp_t) +files_tmp_filetrans(telepathy_msn_t, telepathy_msn_tmp_t, { dir file sock_file }) +userdom_user_tmp_filetrans(telepathy_msn_t, telepathy_msn_tmp_t, { dir file sock_file }) + +corenet_all_recvfrom_netlabel(telepathy_msn_t) +corenet_all_recvfrom_unlabeled(telepathy_msn_t) +corenet_tcp_sendrecv_generic_if(telepathy_msn_t) +corenet_tcp_sendrecv_generic_node(telepathy_msn_t) +corenet_tcp_bind_generic_node(telepathy_msn_t) +corenet_tcp_connect_http_port(telepathy_msn_t) +corenet_tcp_connect_mmcc_port(telepathy_msn_t) +corenet_tcp_connect_msnp_port(telepathy_msn_t) +corenet_tcp_connect_sip_port(telepathy_msn_t) +corenet_sendrecv_http_client_packets(telepathy_msn_t) +corenet_sendrecv_mmcc_client_packets(telepathy_msn_t) +corenet_sendrecv_msnp_client_packets(telepathy_msn_t) + +corecmd_exec_bin(telepathy_msn_t) +corecmd_exec_shell(telepathy_msn_t) +corecmd_read_bin_symlinks(telepathy_msn_t) + +files_read_etc_files(telepathy_msn_t) +files_read_usr_files(telepathy_msn_t) + +libs_exec_ldconfig(telepathy_msn_t) + +logging_send_syslog_msg(telepathy_msn_t) + +miscfiles_read_all_certs(telepathy_msn_t) + +tunable_policy(`telepathy_connect_all_ports',` + corenet_tcp_connect_all_ports(telepathy_msn_t) + corenet_tcp_sendrecv_all_ports(telepathy_msn_t) + corenet_udp_sendrecv_all_ports(telepathy_msn_t) +') + +tunable_policy(`telepathy_tcp_connect_generic_network_ports',` + corenet_tcp_connect_generic_port(telepathy_msn_t) + corenet_sendrecv_generic_client_packets(telepathy_msn_t) +') + +optional_policy(` + dbus_system_bus_client(telepathy_msn_t) + + optional_policy(` + networkmanager_dbus_chat(telepathy_msn_t) + ') +') + +####################################### +# +# Telepathy Salut local policy. +# + +allow telepathy_salut_t self:tcp_socket create_stream_socket_perms; + +manage_sock_files_pattern(telepathy_salut_t, telepathy_salut_tmp_t, telepathy_salut_tmp_t) +files_tmp_filetrans(telepathy_salut_t, telepathy_salut_tmp_t, sock_file) + +corenet_all_recvfrom_netlabel(telepathy_salut_t) +corenet_all_recvfrom_unlabeled(telepathy_salut_t) +corenet_tcp_sendrecv_generic_if(telepathy_salut_t) +corenet_tcp_sendrecv_generic_node(telepathy_salut_t) +corenet_tcp_bind_generic_node(telepathy_salut_t) +corenet_tcp_bind_presence_port(telepathy_salut_t) +corenet_tcp_connect_presence_port(telepathy_salut_t) +corenet_sendrecv_presence_server_packets(telepathy_salut_t) + +files_read_etc_files(telepathy_salut_t) + +tunable_policy(`telepathy_connect_all_ports',` + corenet_tcp_connect_all_ports(telepathy_salut_t) + corenet_tcp_sendrecv_all_ports(telepathy_salut_t) + corenet_udp_sendrecv_all_ports(telepathy_salut_t) +') + +tunable_policy(`telepathy_tcp_connect_generic_network_ports',` + corenet_tcp_connect_generic_port(telepathy_salut_t) + corenet_sendrecv_generic_client_packets(telepathy_salut_t) +') + +optional_policy(` + dbus_system_bus_client(telepathy_salut_t) + + optional_policy(` + avahi_dbus_chat(telepathy_salut_t) + ') +') + +####################################### +# +# Telepathy Sofiasip local policy. +# + +allow telepathy_sofiasip_t self:rawip_socket { create_socket_perms listen }; +allow telepathy_sofiasip_t self:tcp_socket create_stream_socket_perms; + +corenet_all_recvfrom_netlabel(telepathy_sofiasip_t) +corenet_all_recvfrom_unlabeled(telepathy_sofiasip_t) +corenet_tcp_sendrecv_generic_if(telepathy_sofiasip_t) +corenet_raw_sendrecv_generic_if(telepathy_sofiasip_t) +corenet_raw_sendrecv_generic_node(telepathy_sofiasip_t) +corenet_tcp_sendrecv_generic_node(telepathy_sofiasip_t) +corenet_tcp_bind_generic_node(telepathy_sofiasip_t) +corenet_raw_bind_generic_node(telepathy_sofiasip_t) +corenet_tcp_bind_all_unreserved_ports(telepathy_sofiasip_t) +corenet_dontaudit_tcp_bind_all_ports(telepathy_sofiasip_t) +corenet_tcp_connect_sip_port(telepathy_sofiasip_t) +corenet_sendrecv_sip_client_packets(telepathy_sofiasip_t) + +kernel_request_load_module(telepathy_sofiasip_t) + +tunable_policy(`telepathy_connect_all_ports',` + corenet_tcp_connect_all_ports(telepathy_sofiasip_t) + corenet_tcp_sendrecv_all_ports(telepathy_sofiasip_t) + corenet_udp_sendrecv_all_ports(telepathy_sofiasip_t) +') + +tunable_policy(`telepathy_tcp_connect_generic_network_ports',` + corenet_tcp_connect_generic_port(telepathy_sofiasip_t) + corenet_sendrecv_generic_client_packets(telepathy_sofiasip_t) +') + +####################################### +# +# Telepathy Sunshine local policy. +# + +manage_dirs_pattern(telepathy_sunshine_t, telepathy_sunshine_home_t, telepathy_sunshine_home_t) +manage_files_pattern(telepathy_sunshine_t, telepathy_sunshine_home_t, telepathy_sunshine_home_t) +userdom_user_home_dir_filetrans(telepathy_sunshine_t, telepathy_sunshine_home_t, { dir file }) +userdom_search_user_home_dirs(telepathy_sunshine_t) + +manage_files_pattern(telepathy_sunshine_t, telepathy_sunshine_tmp_t, telepathy_sunshine_tmp_t) +exec_files_pattern(telepathy_sunshine_t, telepathy_sunshine_tmp_t, telepathy_sunshine_tmp_t) +files_tmp_filetrans(telepathy_sunshine_t, telepathy_sunshine_tmp_t, file) + +corecmd_exec_bin(telepathy_sunshine_t) + +files_read_etc_files(telepathy_sunshine_t) +files_read_usr_files(telepathy_sunshine_t) + +optional_policy(` + xserver_read_xdm_pid(telepathy_sunshine_t) + xserver_stream_connect(telepathy_sunshine_t) +') + +####################################### +# +# telepathy domains common policy +# + +allow telepathy_domain self:process { getsched signal sigkill }; +allow telepathy_domain self:fifo_file rw_fifo_file_perms; +allow telepathy_domain self:tcp_socket create_socket_perms; +allow telepathy_domain self:udp_socket create_socket_perms; + +dev_read_urand(telepathy_domain) + +kernel_read_system_state(telepathy_domain) + +fs_search_auto_mountpoints(telepathy_domain) + +auth_use_nsswitch(telepathy_domain) + +miscfiles_read_localization(telepathy_domain) + +optional_policy(` + automount_dontaudit_getattr_tmp_dirs(telepathy_domain) +') + +optional_policy(` + xserver_rw_xdm_pipes(telepathy_domain) +') diff --git a/policy/modules/kernel/corenetwork.te.in b/policy/modules/kernel/corenetwork.te.in index e38ce9fca..42b436e1c 100644 --- a/policy/modules/kernel/corenetwork.te.in +++ b/policy/modules/kernel/corenetwork.te.in @@ -168,6 +168,7 @@ network_port(postfix_policyd, tcp,10031,s0) network_port(postgresql, tcp,5432,s0) network_port(postgrey, tcp,60000,s0) network_port(prelude, tcp,4690,s0, udp,4690,s0) +network_port(presence, tcp,5298-5299,s0, udp,5298-5299,s0) network_port(printer, tcp,515,s0) network_port(ptal, tcp,5703,s0) network_port(pulseaudio, tcp,4713,s0)
+## Allow the Telepathy connection managers +## to connect to any generic TCP port. +##
+## Allow the Telepathy connection managers +## to connect to any network port. +##