温馨提示×

centos selinux怎样管理

小樊
35
2026-10-08 16:57:48
栏目: 智能运维

在 CentOS(以及 RHEL 系列)中,SELinux(Security-Enhanced Linux) 是一种强制访问控制(MAC)安全机制。下面从查看状态、模式管理、策略与布尔值、文件上下文、端口、排错、关闭风险等方面系统说明如何管理 SELinux。


一、查看 SELinux 状态

# 查看当前 SELinux 状态
getenforce

# 查看详细状态
sestatus

输出示例:

  • Enforcing:强制模式(拦截并记录)
  • Permissive:宽容模式(只记录不拦截)
  • Disabled:禁用

二、临时切换 SELinux 模式

重启后失效

# 临时改为 Permissive
setenforce 0

# 临时改为 Enforcing
setenforce 1

三、永久修改 SELinux 模式

编辑配置文件:

vi /etc/selinux/config

常见配置:

SELINUX=enforcing
SELINUXTYPE=targeted

可选值:

  • enforcing
  • permissive
  • disabled

⚠️ 改为 disabled 后必须重启系统才生效
⚠️ 从 disabled 改为 enforcing 可能需要重新打标签(见后文)


四、SELinux 策略类型

常见类型(SELINUXTYPE):

  • targeted(默认,保护常见服务)
  • mls(多级安全,较少用)

一般使用 targeted 即可。


五、管理 SELinux 布尔值(Booleans)

布尔值用于控制服务行为。

查看布尔值

getsebool -a

查看某个服务相关

getsebool -a | grep httpd

临时修改

setsebool httpd_can_network_connect on

永久修改

setsebool -P httpd_can_network_connect on

六、文件与目录的 SELinux 上下文

查看上下文

ls -Z
ps -Z

修改上下文

chcon -t httpd_sys_content_t /var/www/html/index.html

恢复默认上下文

restorecon -Rv /var/www/html

永久规则( semanage )

semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
restorecon -Rv /web

七、管理网络端口

查看端口上下文

semanage port -l

添加端口(如 8080 给 httpd)

semanage port -a -t http_port_t -p tcp 8080

八、SELinux 日志与排错

日志位置

/var/log/audit/audit.log
/var/log/messages

使用 sealert 分析

yum install setroubleshoot-server
sealert -a /var/log/audit/audit.log

快速生成策略模块(慎用)

grep httpd /var/log/audit/audit.log | audit2allow -M myhttp
semodule -i myhttp.pp

九、重置 SELinux 标签(重要)

当系统从 disabled 切回 enforcing 时:

touch /.autorelabel
reboot

系统重启后会自动重新标记文件系统。


十、生产环境建议

✅ 推荐:

  • 使用 Enforcing
  • 使用 setsebool -P
  • 使用 semanage 而非 chcon

❌ 不推荐:

  • 直接 disabled
  • 盲目 audit2allow

如果你有具体场景(如 Nginx / MySQL / FTP / Docker / 自定义端口),我可以给你对应的 SELinux 配置示例。

0 踩