温馨提示×

centos selinux是什么

小樊
41
2026-09-14 22:10:46
栏目: 智能运维

CentOS 中的 SELinux 是什么?

SELinux(Security-Enhanced Linux) 是由美国国家安全局(NSA)开发、后来并入 Linux 内核的一种强制访问控制(MAC,Mandatory Access Control)安全机制。在 CentOS(以及 RHEL、Rocky、Alma 等衍生系统)中,SELinux 是默认启用的重要安全组件。


一、SELinux 解决什么问题?

传统 Linux 使用 DAC(自主访问控制)

  • 用户/组/权限(rwx) 控制
  • 缺点:root 用户几乎可以为所欲为,一旦服务被入侵,攻击者可横向控制整个系统

SELinux 在 DAC 之上增加一层 MAC 控制

  • 即使你是 root,也只能做策略允许的事
  • 每个进程、文件、端口都有“安全标签(context)”
  • 进程能否访问文件,不看你是谁,而看“你被允许做什么”

二、CentOS 中 SELinux 的三种状态

getenforce

常见状态:

  1. Enforcing(强制) ✅(CentOS 默认)
    • 违反策略直接拒绝
  2. Permissive(宽容)
    • 只记录不拦截(排错用)
  3. Disabled(关闭)
    • 完全关闭(不推荐)

临时切换:

setenforce 0   # 临时改为 Permissive
setenforce 1   # 临时改为 Enforcing

永久修改:

vi /etc/selinux/config
SELINUX=enforcing

三、SELinux 的核心概念(通俗版)

1. 安全上下文(Security Context)

查看:

ls -Z /var/www/html
ps -Z

格式示例:

system_u:object_r:httpd_sys_content_t:s0
  • user
  • role
  • type(最重要)
  • level

2. 类型强制(Type Enforcement)

  • 进程类型:httpd_t
  • 文件类型:httpd_sys_content_t
  • 只有策略允许 httpd_thttpd_sys_content_t 才行

3. 布尔值(Booleans)

开关式策略:

getsebool -a | grep httpd
setsebool -P httpd_can_network_connect on

四、CentOS 中常见 SELinux 问题场景

场景 1:Web 服务无法访问文件

chcon -R -t httpd_sys_content_t /data/www

或恢复默认:

restorecon -Rv /var/www

场景 2:端口被拒绝

semanage port -a -t http_port_t -p tcp 8080

场景 3:排错神器

ausearch -m avc -ts recent
setroubleshoot

五、CentOS 7 / 8 / Stream 中的 SELinux

  • CentOS 7:SELinux 成熟稳定
  • CentOS 8 / Stream:策略更细,工具更完善
  • 不建议直接 Disabled,会影响系统安全和部分软件行为

六、一句话总结

CentOS 的 SELinux 是“比 root 还管得住 root”的内核级安全机制,用来防止程序越权,是服务器安全的重要防线。

如果你愿意,我可以:

  • 给你 SELinux 排错实战示例
  • 对比 SELinux vs 防火墙
  • 教你 最小权限配置方法

0