CentOS中配置SELinux主要涉及修改配置文件和策略管理,核心操作如下:
配置文件路径为 /etc/selinux/config
,需使用root权限编辑(如sudo vim
),关键参数包括:
enforcing
(强制模式,违反策略会被阻止)permissive
(宽容模式,仅记录违规日志,不阻止操作)disabled
(禁用模式,需重启生效,生产环境不推荐)targeted
(针对性保护,推荐);mls
为多级安全策略,需深入配置。示例:设置为强制模式
sudo vim /etc/selinux/config
# 修改为
SELINUX=enforcing
SELINUXTYPE=targeted
生效方式:修改后需重启系统生效;临时切换模式可用命令:
sudo setenforce 1
sudo setenforce 0
查看策略状态
sestatus # 查看当前模式及策略信息
修改文件/目录安全上下文
sudo chcon -t<类型> <文件/目录路径> # 临时修改上下文
sudo restorecon -Rv <路径> # 恢复默认上下文
示例:将Web目录设为HTTP服务可访问类型
sudo chcon -t httpd_sys_content_t /var/www/html
管理布尔规则
布尔规则控制特定服务的访问权限,可通过setsebool
命令修改:
sudo setsebool -P <规则名> <on/off> # 永久修改(如允许HTTP访问网络)
sudo getsebool -a | grep <规则名> # 查看规则状态
示例:允许Apache访问网络
sudo setsebool -P httpd_can_network_connect 1
自定义策略模块
若需更细粒度控制,可编写策略文件(需安装policycoreutils-devel
工具):
# 创建策略文件(如myapp.te)
sudo nano /root/myapp.te
# 编写规则(示例:允许用户访问特定文件)
module myapp 1.0;
require {
type user_home_t;
class file { read write };
}
allow user_t user_home_t:file { read write };
# 编译并加载策略
sudo checkmodule -M -m -o myapp.mod myapp.te
sudo semodule_package -o myapp.pp -m myapp.mod
sudo semodule -i myapp.pp
sudo cp /etc/selinux/config /etc/selinux/config.bak
)。disabled
模式。以上操作可参考官方文档:CentOS SELinux Guide。