CentOS定制SELinux规则的核心步骤如下,需按顺序操作并注意安全风险:
确认SELinux状态
getenforce # 查看当前模式(Enforcing/Permissive/Disabled)
setenforce 0(Permissive)/ setenforce 1(Enforcing)。/etc/selinux/config,设置 SELINUX=模式,重启生效。安装工具包
sudo yum install policycoreutils-python selinux-policy-devel # 编译策略所需工具
若需针对特定应用优化,先在Permissive模式下运行程序,收集被拒绝的访问日志:
sudo setenforce 0 # 临时设为Permissive模式
# 运行应用程序触发相关操作
sudo ausearch -m avc -ts recent # 查看拒绝日志
方法1:使用audit2allow工具
基于日志自动生成策略(推荐新手):
sudo ausearch -m avc -ts recent | audit2allow -M my_custom_policy # 生成 .te 和 .pp 文件
方法2:手动编写策略文件
.te 文件(如 myapp.te),定义类型、规则和依赖:policy_module(myapp, 1.0)
type myapp_t;
type myapp_exec_t;
init_daemon_domain(myapp_t) # 定义进程域
allow myapp_t myapp_exec_t:file { read execute }; # 允许执行文件
.fc 文件(可选),指定文件上下文映射(如路径与类型的关联)。# 编译策略(若手动编写 .te/.fc)
checkmodule -M -m -o myapp.mod myapp.te
semodule_package -o myapp.pp -m myapp.mod
# 安装策略模块
sudo semodule -i myapp.pp
sudo semodule -l | grep myapp。sudo setsebool -P httpd_can_network_connect on # 允许httpd访问网络
sudo getsebool -a | grep httpd # 查看httpd相关布尔值
sudo chcon -t httpd_sys_content_t /path/to/file # 临时修改
sudo restorecon -Rv /path/to/dir # 恢复默认上下文
sepolicy generate工具生成初始策略)。以上步骤参考自,可根据实际需求选择自动化工具或手动编写策略。