centos selinux系统加固方法
导读:1. 确认并设置SELinux为Enforcing模式 SELinux的核心价值在于强制访问控制(MAC),需确保其处于Enforcing模式(强制执行策略)才能发挥作用。 检查当前状态:通过sestatus(显示详细模式及策略类型)或g...
1. 确认并设置SELinux为Enforcing模式
SELinux的核心价值在于强制访问控制(MAC),需确保其处于Enforcing模式(强制执行策略)才能发挥作用。
- 检查当前状态:通过
sestatus(显示详细模式及策略类型)或getenforce(仅显示当前模式)命令确认状态。 - 临时切换模式:使用
setenforce 1切换至Enforcing模式(立即生效,重启后失效);setenforce 0切换至Permissive模式(仅记录违规,不阻止)。 - 永久修改模式:编辑
/etc/selinux/config文件,将SELINUX=后的值改为enforcing(强制)或permissive(宽容),保存后重启系统使更改生效。
2. 管理SELinux策略与布尔值
SELinux策略通过布尔值(Boolean)控制常见服务的访问权限,需根据业务需求调整:
- 查看所有布尔值:使用
semanage boolean -l命令列出所有可配置的布尔值(如httpd_can_network_connect控制Apache/Nginx是否能访问网络)。 - 临时修改布尔值:用
setsebool 布尔值 on/off(如setsebool httpd_can_network_connect on)临时开启/关闭权限(重启服务后可能失效)。 - 永久修改布尔值:添加
-P参数(如setsebool -P httpd_can_network_connect on),修改会持久化保存(无需重启服务)。
3. 调整文件与进程的安全上下文
SELinux通过安全上下文(格式:user:role:type:level)控制进程与文件的访问权限,需确保上下文正确:
- 查看上下文:
- 文件/目录:
ls -Z /path/to/file(如unconfined_u:object_r:httpd_sys_content_t:s0); - 进程:
ps -eZ | grep 服务名(如httpd进程的上下文)。
- 文件/目录:
- 修改文件上下文:
- 临时修改(重启后失效):用
chcon命令(如chcon -t httpd_sys_content_t /var/www/html/index.html,将index.html设为HTTP服务可访问类型); - 永久修改:
- 用
semanage fcontext添加默认上下文规则(如semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?",将/data/web目录及子目录设为HTTP类型); - 用
restorecon还原上下文(如restorecon -Rv /data/web,递归恢复目录下所有文件的默认上下文)。
- 用
- 临时修改(重启后失效):用
4. 处理SELinux违规日志并生成自定义策略
当服务因SELinux策略被拦截时,需通过日志分析并生成自定义策略:
- 查看违规日志:使用
ausearch -m avc -ts recent(查看最近1小时的AVC拒绝事件)或grep avc /var/log/audit/audit.log(过滤AVC日志)命令获取违规详情。 - 生成自定义策略:用
audit2allow工具分析日志并生成策略模块(如grep nginx /var/log/audit/audit.log | audit2allow -M nginx_policy,生成nginx_policy.te(策略源码)和nginx_policy.pp(编译后的模块)); - 安装自定义策略:用
semodule -i nginx_policy.pp命令安装模块,使自定义策略生效(解决特定服务的访问问题)。
5. 常见场景配置示例
- Web服务无法访问自定义目录:若将网站根目录从
/var/www/html迁移至/data/web,需执行以下步骤:- 设置目录SELinux类型:
semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"; - 还原上下文:
restorecon -Rv /data/web; - 若服务需访问网络(如PHP连接数据库),开启布尔值:
setsebool -P httpd_can_network_connect on。
- 设置目录SELinux类型:
- FTP匿名上传配置:若需允许FTP用户向
/var/ftp目录上传文件,需:- 设置目录上下文:
semanage fcontext -a -t public_content_rw_t "/var/ftp(/.*)?"; - 还原上下文:
restorecon -Rv /var/ftp; - 允许匿名上传:
setsebool -P ftpd_anon_write on。
- 设置目录上下文:
注意事项
- 避免禁用SELinux:禁用会彻底丧失强制访问控制的保护,仅在测试环境或遇到无法解决的兼容性问题时临时使用(需确认风险)。
- 测试环境验证:在生产环境启用或修改SELinux策略前,务必在测试环境中验证,避免影响业务正常运行。
- 监控日志:定期通过
ausearch、aureport等工具分析SELinux日志,及时发现并处理潜在的安全威胁。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos selinux系统加固方法
本文地址: https://pptw.com/jishu/743529.html
