centos selinux系统加固方法

1. 确认并设置SELinux为Enforcing模式SELinux的核心价值在于强制访问控制(MAC),需确保其处于Enforcing模式(强制执行策略)才能发挥作用。检查当前状态:通过sestatus(显示详细模式及策略类型)或getenforce(仅显示当前模式)命令确认状态。临时切换模式:使用setenforce 1切换至Enforcing模式(立即生效,重启后失效);setenfor

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服务可访问类型);
    • 永久修改:
      1. semanage fcontext添加默认上下文规则(如semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?",将/data/web目录及子目录设为HTTP类型);
      2. 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,需执行以下步骤:
    1. 设置目录SELinux类型:semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
    2. 还原上下文:restorecon -Rv /data/web
    3. 若服务需访问网络(如PHP连接数据库),开启布尔值:setsebool -P httpd_can_network_connect on
  • FTP匿名上传配置:若需允许FTP用户向/var/ftp目录上传文件,需:
    1. 设置目录上下文:semanage fcontext -a -t public_content_rw_t "/var/ftp(/.*)?"
    2. 还原上下文:restorecon -Rv /var/ftp
    3. 允许匿名上传:setsebool -P ftpd_anon_write on

注意事项

  • 避免禁用SELinux:禁用会彻底丧失强制访问控制的保护,仅在测试环境或遇到无法解决的兼容性问题时临时使用(需确认风险)。
  • 测试环境验证:在生产环境启用或修改SELinux策略前,务必在测试环境中验证,避免影响业务正常运行。
  • 监控日志:定期通过ausearchaureport等工具分析SELinux日志,及时发现并处理潜在的安全威胁。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1447052.html

(0)
派派
上一篇 2025-11-05
下一篇 2025-11-05

发表回复

登录后才能评论