CentOS镜像中的SELinux配置指南
CentOS镜像中SELinux配置指南
一、SELinux基础认知
SELinux(Security-Enhanced Linux)是Linux内核级安全模块,通过强制访问控制(MAC)限制进程、文件、网络端口等资源的访问权限,弥补传统DAC(用户/组权限)模型的不足。CentOS镜像默认集成SELinux,但多数场景下默认处于Permissive模式(仅记录违规不阻止),需根据需求调整配置以平衡安全与功能。
二、查看SELinux状态
1. 查看当前模式(Enforcing/Permissive/Disabled)
使用getenforce
命令快速获取SELinux运行模式:
getenforce
输出示例:Enforcing(强制模式)、Permissive(宽容模式)、Disabled(禁用)
2. 查看详细状态(包括策略类型、加载状态)
使用sestatus
命令查看更全面的SELinux信息:
sestatus
输出示例:
SELinux status: enabled
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
3. 查看SELinux策略模块
使用semodule -l
命令列出已安装的SELinux策略模块:
semodule -l
输出示例:httpd ssh samba ...
三、修改SELinux模式(临时/永久)
1. 临时更改模式(立即生效,重启失效)
使用setenforce
命令切换模式,参数1
为Enforcing(强制),0
为Permissive(宽容):
sudo setenforce 1 切换到强制模式
sudo setenforce 0 切换到宽容模式
2. 永久更改模式(重启后生效)
编辑SELinux配置文件/etc/selinux/config
,修改SELINUX
参数:
sudo vi /etc/selinux/config
找到SELINUX=
行,修改为以下值之一:
SELINUX=enforcing
(强制模式,推荐生产环境使用)SELINUX=permissive
(宽容模式,用于调试应用兼容性)SELINUX=disabled
(禁用SELinux,不推荐,会降低系统安全性)
保存后重启系统使更改生效:
sudo reboot
四、SELinux策略配置
1. 管理SELinux布尔值(开关特定功能)
SELinux布尔值用于控制特定功能的访问权限(如HTTP服务访问网络、FTP服务允许匿名上传)。使用setsebool
命令修改,-P
参数表示永久生效:
查看所有布尔值
semanage boolean -l
允许HTTP服务访问网络(适用于Web服务器)
sudo setsebool -P httpd_can_network_connect 1
允许FTP服务匿名上传
sudo setsebool -P ftpd_anon_write 1
2. 更改文件/目录安全上下文
文件或目录的安全上下文(Security Context)决定了SELinux对其的访问控制,格式为user:role:type:level
(如httpd_sys_content_t
)。使用chcon
命令临时更改,restorecon
命令恢复默认上下文:
将/var/www/html目录的上下文设置为httpd_sys_content_t(适用于Web文件)
sudo chcon -t httpd_sys_content_t /var/www/html
恢复/var/www/html目录的默认上下文
sudo restorecon -Rv /var/www/html -R递归处理,-v显示详细信息
3. 管理SELinux策略模块
(1)安装预定义策略模块
使用semodule
命令安装.pp
格式的策略模块(如自定义的my_policy.pp
):
sudo semodule -i my_policy.pp
(2)删除策略模块
sudo semodule -r my_policy my_policy为模块名称(非文件名)
(3)从日志生成自定义策略
当应用出现SELinux拒绝(AVC)时,可通过audit2allow
工具生成自定义策略模块:
查看最近的AVC拒绝日志
sudo ausearch -m avc -ts recent
从日志生成策略模块(my_custom_policy)
sudo ausearch -m avc -ts recent | audit2allow -M my_custom_policy
安装生成的策略模块
sudo semodule -i my_custom_policy.pp
五、常见应用场景配置示例
1. Web服务器(Nginx/Apache)
确保Web目录的上下文正确,允许HTTP服务访问:
设置Web目录上下文(以/var/www/html为例)
sudo chcon -R -t httpd_sys_content_t /var/www/html
允许HTTP服务绑定80/443端口
sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443
2. FTP服务器(vsftpd)
允许FTP用户上传文件,修改目录上下文及布尔值:
允许FTP匿名上传
sudo setsebool -P ftpd_anon_write 1
设置上传目录上下文(以/var/ftp/pub为例)
sudo chcon -t public_content_rw_t /var/ftp/pub
3. 数据库服务器(MySQL)
允许Web应用访问数据库端口(3306):
允许HTTP服务访问MySQL端口
sudo semanage port -a -t mysqld_port_t -p tcp 3306
六、注意事项
- 禁用SELinux的风险:禁用SELinux会移除强制访问控制,增加系统遭受攻击的风险,仅在测试环境或有特殊需求时使用。
- 模式切换的影响:从
Enforcing
切换到Disabled
需重启系统,且会清除SELinux策略;Permissive
模式不会阻止操作,但会记录违规日志。 - 备份配置文件:修改SELinux配置前,备份
/etc/selinux/config
文件,以便恢复。 - 日志分析:当应用无法正常运行时,优先查看
/var/log/audit/audit.log
中的AVC拒绝日志,定位问题根源。
通过以上步骤,可完成CentOS镜像中SELinux的基本配置,根据实际应用场景调整策略,实现安全与功能的平衡。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS镜像中的SELinux配置指南
本文地址: https://pptw.com/jishu/714965.html