SELinux策略在CentOS中的更新方法
在更新策略前,需确认SELinux是否启用及当前模式(Enforcing/Permissive/Disabled)。常用命令:
sestatus:显示详细状态(如SELinux status: enabled、Current mode: enforcing);getenforce:快速查看当前模式(返回Enforcing、Permissive或Disabled)。CentOS系统通常会通过包管理器自动更新SELinux策略,但也可手动更新以确保获取最新版本。
手动更新步骤:
使用yum(或dnf,CentOS 8+)命令更新SELinux核心策略包及关联组件:
sudo yum update selinux-policy selinux-policy-targeted selinux-policy-default
更新完成后,需重新加载策略以应用更改:
sudo restorecon -Rv /
该命令会递归恢复文件系统的安全上下文,确保新策略生效。
若系统日志中出现SELinux拒绝记录(如avc: denied),需通过audit2allow工具生成自定义策略模块。
具体步骤:
/var/log/audit/audit.log中的AVC拒绝记录,并分析原因:sudo cat /var/log/audit/audit.log | grep AVC | audit2why
此命令会输出拒绝的原因(如缺少权限、布尔值未开启)。httpd访问用户目录),生成策略模块文件(.te→.pp):sudo ausearch -c 'httpd' --raw | audit2allow -M my_httpd_policy
其中,my_httpd_policy.pp是生成的策略模块文件。sudo semodule -i my_httpd_policy.pp
加载后,新策略会立即生效。SELinux布尔值是可开关的策略选项,用于快速调整服务权限(如允许HTTP服务连接网络)。
常用操作:
sudo semanage boolean -l | less
sudo setsebool ftpd_anon_write on
-P参数,使设置在重启后仍有效:sudo setsebool -P ftpd_anon_write on
布尔值的调整无需重新加载策略,修改后立即生效。SELinux模式决定了策略的执行严格程度,可通过以下方式修改:
setenforce命令(重启后失效):
sudo setenforce 0
sudo setenforce 1
/etc/selinux/config文件,修改SELINUX=行:sudo vi /etc/selinux/config
将SELINUX=enforcing改为permissive或disabled,保存后重启系统:sudo reboot
注意:禁用SELinux会降低系统安全性,仅建议在测试环境中使用。若需部署第三方或自行编译的SELinux策略模块(.pp文件),可使用semodule命令:
sudo semodule -i custom_policy.pp
sudo semodule -r custom_policy
sudo semodule -l
自定义模块需符合SELinux策略语法,建议在测试环境中验证后再部署到生产环境。