commit:     1f93b453311d3c6def34ad4da5041af7f43b44f7
Author:     Russell Coker <russell <AT> coker <DOT> com <DOT> au>
AuthorDate: Wed Aug  6 14:52:22 2025 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Tue Sep  2 22:04:48 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=1f93b453

miscnetwork (#1004)

* A collection of small networking related patches

Signed-off-by: Russell Coker <russell <AT> coker.com.au>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 policy/modules/admin/netutils.te        |  5 +++++
 policy/modules/kernel/corenetwork.te.in |  2 +-
 policy/modules/services/apache.te       |  3 ++-
 policy/modules/services/dovecot.te      |  2 +-
 policy/modules/services/exim.te         |  1 +
 policy/modules/services/ntp.if          |  2 +-
 policy/modules/services/spamassassin.fc |  2 +-
 policy/modules/services/ssh.if          | 18 ++++++++++++++++++
 policy/modules/services/ssh.te          | 12 ++++++++++++
 policy/modules/services/sympa.te        |  5 ++++-
 policy/modules/system/opensnitch.fc     |  2 +-
 policy/modules/system/sysnetwork.if     | 18 ++++++++++++++++++
 12 files changed, 65 insertions(+), 7 deletions(-)

diff --git a/policy/modules/admin/netutils.te b/policy/modules/admin/netutils.te
index d3e372717..ac11d1c99 100644
--- a/policy/modules/admin/netutils.te
+++ b/policy/modules/admin/netutils.te
@@ -98,6 +98,11 @@ optional_policy(`
        nis_use_ypbind(netutils_t)
 ')
 
+optional_policy(`
+       # because arping chooses ~sshd as a target for chroot
+       ssh_search_sshd_runtime(netutils_t)
+')
+
 optional_policy(`
        vmware_append_log(netutils_t)
 ')

diff --git a/policy/modules/kernel/corenetwork.te.in 
b/policy/modules/kernel/corenetwork.te.in
index b083746ec..6902c41f0 100644
--- a/policy/modules/kernel/corenetwork.te.in
+++ b/policy/modules/kernel/corenetwork.te.in
@@ -270,7 +270,7 @@ network_port(smtp, tcp,25,s0, tcp,465,s0, tcp,587,s0)
 network_port(snmp, udp,161,s0, udp,162,s0, tcp,199,s0, tcp,1161,s0)
 network_port(socks) # no defined portcon
 network_port(soundd, tcp,8000,s0, tcp,9433,s0, tcp, 16001, s0)
-network_port(spamd, tcp,783,s0, tcp,11333,s0)
+network_port(spamd, tcp,783,s0, tcp,11332,s0, tcp,11333,s0, tcp,11334,s0, 
tcp,11335,s0)
 network_port(speech, tcp,8036,s0)
 network_port(squid, udp,3401,s0, tcp,3401,s0, udp,4827,s0, tcp,4827,s0) # snmp 
and htcp
 network_port(ssdp, tcp,1900,s0, udp,1900,s0)

diff --git a/policy/modules/services/apache.te 
b/policy/modules/services/apache.te
index af2251560..4848af400 100644
--- a/policy/modules/services/apache.te
+++ b/policy/modules/services/apache.te
@@ -432,7 +432,7 @@ files_tmp_filetrans(httpd_t, httpd_tmp_t, { file dir 
lnk_file sock_file })
 userdom_user_tmp_filetrans(httpd_t, httpd_tmp_t, dir)
 
 manage_dirs_pattern(httpd_t, httpd_tmpfs_t, httpd_tmpfs_t)
-manage_files_pattern(httpd_t, httpd_tmpfs_t, httpd_tmpfs_t)
+mmap_manage_files_pattern(httpd_t, httpd_tmpfs_t, httpd_tmpfs_t)
 manage_lnk_files_pattern(httpd_t, httpd_tmpfs_t, httpd_tmpfs_t)
 manage_fifo_files_pattern(httpd_t, httpd_tmpfs_t, httpd_tmpfs_t)
 manage_sock_files_pattern(httpd_t, httpd_tmpfs_t, httpd_tmpfs_t)
@@ -899,6 +899,7 @@ optional_policy(`
 ')
 
 optional_policy(`
+       sympa_connect_runtime_sock_files(httpd_t)
        sympa_manage_runtime_sock_files(httpd_t)
        sympa_map_var_files(httpd_t)
        sympa_read_conf(httpd_t)

diff --git a/policy/modules/services/dovecot.te 
b/policy/modules/services/dovecot.te
index 546e1030c..1a7c31851 100644
--- a/policy/modules/services/dovecot.te
+++ b/policy/modules/services/dovecot.te
@@ -262,7 +262,7 @@ manage_files_pattern(dovecot_auth_t, dovecot_auth_tmp_t, 
dovecot_auth_tmp_t)
 files_tmp_filetrans(dovecot_auth_t, dovecot_auth_tmp_t, { file dir })
 
 allow dovecot_auth_t dovecot_runtime_t:dir list_dir_perms;
-allow dovecot_auth_t dovecot_runtime_t:file manage_file_perms;
+allow dovecot_auth_t dovecot_runtime_t:file mmap_manage_file_perms;
 allow dovecot_auth_t dovecot_runtime_t:fifo_file write_fifo_file_perms;
 manage_sock_files_pattern(dovecot_auth_t, dovecot_runtime_t, dovecot_runtime_t)
 

diff --git a/policy/modules/services/exim.te b/policy/modules/services/exim.te
index 975c1ec1f..1ed887a87 100644
--- a/policy/modules/services/exim.te
+++ b/policy/modules/services/exim.te
@@ -102,6 +102,7 @@ files_tmp_filetrans(exim_t, exim_tmp_t, { dir file })
 
 manage_files_pattern(exim_t, exim_var_lib_t, exim_var_lib_t)
 
+kernel_getattr_proc(exim_t)
 kernel_read_kernel_sysctls(exim_t)
 kernel_read_network_state(exim_t)
 kernel_dontaudit_read_system_state(exim_t)

diff --git a/policy/modules/services/ntp.if b/policy/modules/services/ntp.if
index ebcd11b78..66067b456 100644
--- a/policy/modules/services/ntp.if
+++ b/policy/modules/services/ntp.if
@@ -192,7 +192,7 @@ interface(`ntp_filetrans_drift',`
        ')
 
        files_search_var_lib($1)
-       files_var_lib_filetrans($1, ntp_drift_t, dir)
+       files_var_lib_filetrans($1, ntp_drift_t, dir, "ntpsec")
 ')
 
 ########################################

diff --git a/policy/modules/services/spamassassin.fc 
b/policy/modules/services/spamassassin.fc
index 670521434..4d94c334b 100644
--- a/policy/modules/services/spamassassin.fc
+++ b/policy/modules/services/spamassassin.fc
@@ -16,7 +16,7 @@ HOME_DIR/\.spamd(/.*)?                        
gen_context(system_u:object_r:spamd_home_t,s0)
 /usr/bin/spamd                 --      
gen_context(system_u:object_r:spamd_exec_t,s0)
 /usr/bin/spampd                        --      
gen_context(system_u:object_r:spamd_exec_t,s0)
 /usr/bin/sa-update             --      
gen_context(system_u:object_r:spamd_update_exec_t,s0)
-/usr/bin/rspamd-[^/]+  --      gen_context(system_u:object_r:spamd_exec_t,s0)
+/usr/bin/rspamd[^/]+   --      gen_context(system_u:object_r:spamd_exec_t,s0)
 /usr/bin/rspamc-[^/]+  --      gen_context(system_u:object_r:spamc_exec_t,s0)
 /usr/bin/rspamadm-[^/]+        --      
gen_context(system_u:object_r:spamc_exec_t,s0)
 

diff --git a/policy/modules/services/ssh.if b/policy/modules/services/ssh.if
index ac8f8e030..39fd11294 100644
--- a/policy/modules/services/ssh.if
+++ b/policy/modules/services/ssh.if
@@ -950,3 +950,21 @@ interface(`ssh_dontaudit_agent_tmp',`
 
        dontaudit $1 ssh_agent_tmp_t:dir list_dir_perms;
 ')
+
+#######################################
+## <summary>
+##     allow search the ssh runtime dir
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain to permit
+##     </summary>
+## </param>
+#
+interface(`ssh_search_sshd_runtime',`
+       gen_require(`
+               type sshd_runtime_t;
+       ')
+
+       allow $1 sshd_runtime_t:dir search_dir_perms;
+')

diff --git a/policy/modules/services/ssh.te b/policy/modules/services/ssh.te
index 53edd405e..1f6f8d943 100644
--- a/policy/modules/services/ssh.te
+++ b/policy/modules/services/ssh.te
@@ -208,6 +208,11 @@ tunable_policy(`user_tcp_server',`
        corenet_tcp_bind_generic_node(ssh_t)
 ')
 
+optional_policy(`
+       cron_read_pipes(ssh_t)
+       cron_rw_tmp_files(ssh_t)
+')
+
 optional_policy(`
        tunable_policy(`ssh_use_gpg_agent',`
                gpg_stream_connect_agent(ssh_t)
@@ -283,6 +288,8 @@ ifdef(`distro_debian',`
 ifdef(`init_systemd',`
        auth_use_pam_systemd(sshd_t)
        init_dbus_chat(sshd_t)
+       # dynamic users
+       init_stream_connect(sshd_t)
        init_rw_stream_sockets(sshd_t)
        systemd_write_inherited_logind_sessions_pipes(sshd_t)
 ')
@@ -306,6 +313,11 @@ tunable_policy(`allow_polyinstantiation',`
        seutil_exec_setfiles(sshd_t)
 ')
 
+optional_policy(`
+       # for /var/lib/unattended-upgrades
+       apt_read_db(sshd_t)
+')
+
 optional_policy(`
        daemontools_service_domain(sshd_t, sshd_exec_t)
 ')

diff --git a/policy/modules/services/sympa.te b/policy/modules/services/sympa.te
index b2aea679d..fb417b733 100644
--- a/policy/modules/services/sympa.te
+++ b/policy/modules/services/sympa.te
@@ -30,7 +30,8 @@ allow sympa_t self:capability { chown dac_override setgid 
setuid };
 allow sympa_t self:fifo_file rw_fifo_file_perms;
 allow sympa_t self:tcp_socket create_socket_perms;
 allow sympa_t self:unix_dgram_socket create_socket_perms;
-allow sympa_t self:process signull;
+allow sympa_t self:process { signull signal };
+allow sympa_t self:udp_socket create_socket_perms;
 
 allow sympa_t sympa_etc_t:dir list_dir_perms;
 allow sympa_t sympa_etc_t:file read_file_perms;
@@ -55,6 +56,8 @@ corecmd_bin_entry_type(sympa_t)
 corecmd_exec_bin(sympa_t)
 corecmd_exec_shell(sympa_t)
 
+corenet_udp_bind_generic_node(sympa_t)
+
 dev_read_urand(sympa_t)
 
 files_read_etc_files(sympa_t)

diff --git a/policy/modules/system/opensnitch.fc 
b/policy/modules/system/opensnitch.fc
index 86a158046..6110d981c 100644
--- a/policy/modules/system/opensnitch.fc
+++ b/policy/modules/system/opensnitch.fc
@@ -1,3 +1,3 @@
 /usr/bin/opensnitchd           --      
gen_context(system_u:object_r:opensnitchd_exec_t,s0)
-/var/log/opensnitchd\.log      --      
gen_context(system_u:object_r:opensnitchd_log_t,s0)
+/var/log/opensnitchd\.log.*    --      
gen_context(system_u:object_r:opensnitchd_log_t,s0)
 /etc/opensnitchd(/.*)?                 
gen_context(system_u:object_r:opensnitchd_conf_t,s0)

diff --git a/policy/modules/system/sysnetwork.if 
b/policy/modules/system/sysnetwork.if
index 13928ab62..8eb9bf6cd 100644
--- a/policy/modules/system/sysnetwork.if
+++ b/policy/modules/system/sysnetwork.if
@@ -615,6 +615,24 @@ interface(`sysnet_watch_config_dirs',`
        allow $1 net_conf_t:dir watch;
 ')
 
+#######################################
+## <summary>
+##     Watch a network config dir
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`sysnet_watch_config_dir',`
+       gen_require(`
+               type net_conf_t;
+       ')
+
+       allow $1 net_conf_t:dir watch;
+')
+
 #######################################
 ## <summary>
 ##     Read dhcp client runtime files.

Reply via email to