commit: c3625775bab1d65ad6af09a06097b4fbbe8646d2
Author: Dave Sugar <dsugar <AT> tresys <DOT> com>
AuthorDate: Mon Apr 16 20:07:53 2018 +0000
Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sun Apr 22 11:46:18 2018 +0000
URL:
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=c3625775
Interface to read /run/systemd/resolve/resolv.conf
With systemd, /etc/resolv.conf is a symlink to /run/systemd/resolve/resolv.conf
allow domains with access to read network configuration to read this file.
Please note, this can't be in optional due to tunable_policy in
nis_authenticate interface.
type=AVC msg=audit(1523455881.596:214): avc: denied { search } for pid=944
comm="chronyd" name="resolve" dev="tmpfs" ino=14267
scontext=system_u:system_r:chronyd_t:s0
tcontext=system_u:object_r:systemd_resolved_var_run_t:s0 tclass=dir
type=AVC msg=audit(1523455881.596:214): avc: denied { read } for pid=944
comm="chronyd" name="resolv.conf" dev="tmpfs" ino=14277
scontext=system_u:system_r:chronyd_t:s0
tcontext=system_u:object_r:systemd_resolved_var_run_t:s0 tclass=file
type=AVC msg=audit(1523455881.596:214): avc: denied { open } for pid=944
comm="chronyd" path="/run/systemd/resolve/resolv.conf" dev="tmpfs" ino=14277
scontext=system_u:system_r:chronyd_t:s0
tcontext=system_u:object_r:systemd_resolved_var_run_t:s0 tclass=file
type=AVC msg=audit(1523455881.596:215): avc: denied { getattr } for pid=944
comm="chronyd" path="/run/systemd/resolve/resolv.conf" dev="tmpfs" ino=14277
scontext=system_u:system_r:chronyd_t:s0
tcontext=system_u:object_r:systemd_resolved_var_run_t:s0 tclass=file
Signed-off-by: Dave Sugar <dsugar <AT> tresys.com>
policy/modules/system/sysnetwork.if | 2 ++
policy/modules/system/systemd.if | 19 +++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/policy/modules/system/sysnetwork.if
b/policy/modules/system/sysnetwork.if
index 53c806a5..e9dc5401 100644
--- a/policy/modules/system/sysnetwork.if
+++ b/policy/modules/system/sysnetwork.if
@@ -348,6 +348,8 @@ interface(`sysnet_read_config',`
files_search_etc($1)
allow $1 net_conf_t:file read_file_perms;
+ systemd_read_resolved_runtime($1)
+
ifdef(`distro_debian',`
files_search_pids($1)
allow $1 net_conf_t:dir list_dir_perms;
diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if
index f6e34102..866838fe 100644
--- a/policy/modules/system/systemd.if
+++ b/policy/modules/system/systemd.if
@@ -715,3 +715,22 @@ interface(`systemd_tmpfilesd_managed',`
allow systemd_tmpfiles_t $1:$2 { setattr relabelfrom relabelto create };
')
+
+#######################################
+## <summary>
+## Allow domain to read resolv.conf file generated by systemd_resolved
+## </summary>
+## <param name="domain">
+## <summary>
+## domain allowed access
+## </summary>
+## </param>
+#
+interface(`systemd_read_resolved_runtime',`
+ gen_require(`
+ type systemd_resolved_var_run_t;
+ ')
+
+ read_files_pattern($1, systemd_resolved_var_run_t,
systemd_resolved_var_run_t)
+')
+