有没有办法查看应用于 SELinux 的所有自定义策略,最好将它们全部汇总到一个策略“包”中?
我花了大约一周的时间处理了一系列 SELinux 错误,这些错误是某个进程(awstats 从 logrotate 脚本更新,仅供参考)尝试运行时出现的。在 SELinux 处于宽容模式时,我会等待 logrotate 运行,查看审计日志中的 SELinux 块,运行 audit2allow 以创建允许策略,然后在第二天使用一整套新的相关错误列表重复该过程。最后,今天早上审计日志变得干净了,所以我认为我已经制定了所有必要的规则来允许脚本正常运行。
当然,我在执行此过程时没有考虑,因此我没有在此过程中创建的所有 .pp/.te 文件。因此,我想要做的是将所有当前活动的自定义策略从 SELinux 中拉出来,这样我就可以拥有一个备份副本,以便在其他机器上使用或进行恢复。这可能吗?
编辑:这是在运行 CentOS 6.7 的机器上,如果这有区别的话
答案1
从 RHEL 7 开始:
semanage export
应该导出所有本地配置更改。
答案2
这个答案借用自这个问题。尽管它不能准确回答查看应用于机器的所有自定义 SELinux 策略的问题,但它确实提供了您想要使用的一组工具,以便查看任何自定义策略或将其缩小一点。
获取此信息的一些命令是(示例使用httpd_log_t
):
seinfo
# seinfo -x --type=httpd_log_t /etc/selinux/default/policy/policy.26 httpd_log_t file_type non_security_file_type logfile
sesearch
# sesearch --dontaudit -t httpd_log_t /etc/selinux/default/policy/policy.26 | head Found 35 semantic av rules: dontaudit run_init_t file_type : dir { getattr search open } ; dontaudit staff_t non_security_file_type : file getattr ; dontaudit staff_t non_security_file_type : dir { ioctl read getattr lock search open } ; dontaudit staff_t non_security_file_type : lnk_file getattr ; dontaudit staff_t non_security_file_type : sock_file getattr ; dontaudit staff_t non_security_file_type : fifo_file getattr ; dontaudit unconfined_t non_security_file_type : file getattr ; dontaudit unconfined_t non_security_file_type : dir { ioctl read getattr lock search open } ; dontaudit unconfined_t non_security_file_type : lnk_file getattr ;
semanage
# semanage fcontext -l | grep httpd_log_t /etc/httpd/logs all files system_u:object_r:httpd_log_t:s0 /var/log/apache(2)?(/.*)? all files system_u:object_r:httpd_log_t:s0 /var/log/apache-ssl(2)?(/.*)? all files system_u:object_r:httpd_log_t:s0 /var/log/cacti(/.*)? all files system_u:object_r:httpd_log_t:s0 /var/log/cgiwrap\.log.* regular file system_u:object_r:httpd_log_t:s0 /var/log/horde2(/.*)? all files system_u:object_r:httpd_log_t:s0 /var/log/httpd(/.*)? all files system_u:object_r:httpd_log_t:s0 /var/log/lighttpd(/.*)? all files system_u:object_r:httpd_log_t:s0 /var/log/piranha(/.*)? all files system_u:object_r:httpd_log_t:s0 /var/www(/.*)?/logs(/.*)? all files system_u:object_r:httpd_log_t:s0