Hier ist meine komplette Lösung:
Zuerst habe ich das audit.log visuell geprüft. Um die richtigen Dinge und nur die richtigen zu erfassen, habe ich audit2allow
eine Richtlinie und eine Durchsetzungsregel erstellt.
grep mount /var/log/audit/audit.log | audit2allow -R -M mounts3fs
Ich grep zum Mount und bekomme nur die richtigen Dinge.
Dadurch wurde eine Datei mounts3fs.pp und mounts3fs.te erstellt. Die mounts3fs.te sieht so aus:
policy_module(mounts3fs, 1.0) require { type file_t; type var_t; type mount_t; type cert_t; class dir { write remove_name add_name }; class file { create unlink link setattr }; } #============= mount_t ============== #!!!! The source type 'mount_t' can write to a 'dir' of the following types: # user_home_t, etc_runtime_t, var_run_t, mount_var_run_t, mount_tmp_t, user_home_dir_t, etc_t, nfs_t, tmpfs_t, tmp_t, var_t allow mount_t cert_t:dir { write remove_name add_name }; allow mount_t cert_t:file { create unlink }; allow mount_t file_t:dir { remove_name add_name }; allow mount_t file_t:file { unlink link setattr }; allow mount_t var_t:file link;
Zur Installation der Richtlinie führe ich Folgendes aus:
semodule -i mounts3fs.pp
Ich habe festgestellt, dass dies für bestimmte Vorgänge nicht völlig ausreichend ist. Daher habe ich eine zusätzliche Richtlinie wie diese erstellt:
module s3fs 1.0; require { type file_t; type mount_t; class dir create; class file create; } #============= mount_t ============== #!!!! This avc is allowed in the current policy allow mount_t file_t:dir create; allow mount_t file_t:file create;
selinux
kann immer noch direkt zur Hölle gehen.