您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎么配置SELinux
## 目录
- [SELinux简介](#selinux简介)
- [SELinux工作模式](#selinux工作模式)
- [安装与状态管理](#安装与状态管理)
- [策略配置基础](#策略配置基础)
- [布尔值管理](#布尔值管理)
- [文件上下文管理](#文件上下文管理)
- [端口标签管理](#端口标签管理)
- [日志分析与故障排除](#日志分析与故障排除)
- [高级策略定制](#高级策略定制)
- [实际应用案例](#实际应用案例)
- [总结](#总结)
---
## SELinux简介
安全增强型Linux(Security-Enhanced Linux,简称SELinux)是由美国国家安全局(NSA)开发的内核级强制访问控制(MAC)机制。它通过为系统资源(文件、进程、端口等)赋予安全标签(Security Context),实现了比传统Linux权限更细粒度的访问控制。
### 核心概念
1. **主体(Subject)**:通常是进程或用户
2. **对象(Object)**:被访问的资源(文件、目录、端口等)
3. **安全上下文(Security Context)**:由`用户:角色:类型:级别`组成
4. **策略(Policy)**:定义主体如何访问对象的规则集合
---
## SELinux工作模式
SELinux有三种运行模式:
| 模式 | 描述 | 适用场景 |
|-------------|----------------------------------------------------------------------|-------------------------|
| **Enforcing** | 强制执行策略,违反策略的操作将被阻止并记录日志 | 生产环境 |
| **Permissive** | 仅记录违反策略的操作但不阻止 | 调试阶段 |
| **Disabled** | 完全禁用SELinux | 临时故障排除(不推荐长期使用)|
查看当前模式:
```bash
getenforce
# 或
sestatus
切换模式(临时):
setenforce 1 # Enforcing
setenforce 0 # Permissive
永久修改需编辑/etc/selinux/config
:
SELINUX=enforcing
# RHEL/CentOS
yum install selinux-policy selinux-policy-targeted setools-console
# Debian/Ubuntu
apt install selinux-basics selinux-policy-default auditd
/etc/selinux/
:主配置文件目录/var/log/audit/audit.log
:审计日志(默认位置)/sys/fs/selinux/
:SELinux内核接口ps -eZ | grep nginx
示例输出:
system_u:system_r:httpd_t:s0 1234 ? 00:00:00 nginx
ls -Z /var/www/html
示例输出:
system_u:object_r:httpd_sys_content_t:s0 index.html
SELinux布尔值是动态修改策略的开关,无需重新编译策略。
# 允许HTTPD访问NFS
setsebool -P httpd_use_nfs on
# 允许Samba共享用户家目录
setsebool -P samba_enable_home_dirs 1
# 查看所有布尔值
getsebool -a
-P
参数使设置永久生效setsebool
不加-P
chcon -t httpd_sys_content_t /custom/web
semanage fcontext -a -t httpd_sys_content_t "/custom/web(/.*)?"
restorecon -Rv /custom/web
semanage fcontext -l | grep httpd
semanage port -l
semanage port -a -t http_port_t -p tcp 8080
semanage port -d -t http_port_t -p tcp 8081
grep "avc: denied" /var/log/audit/audit.log | audit2why
grep "avc: denied" /var/log/audit/audit.log | audit2allow -M mypolicy
semodule -i mypolicy.pp
sealert -a /var/log/audit/audit.log
restorecon -v /path/to/file
audit2allow -M mymodule -i audit.log
make -f /usr/share/selinux/devel/Makefile
semodule -i mymodule.pp
semodule -l # 列出已加载模块
semodule -r badmodule # 移除模块
# 1. 设置上下文
semanage fcontext -a -t httpd_sys_content_t "/opt/nginx(/.*)?"
restorecon -Rv /opt/nginx
# 2. 允许绑定非标准端口
setsebool -P httpd_can_network_connect 1
semanage port -a -t http_port_t -p tcp 8888
# 1. 创建新策略
semanage fcontext -a -t mysqld_db_t "/new/mysql/data(/.*)?"
restorecon -Rv /new/mysql/data
# 2. 调整布尔值
setsebool -P mysql_connect_any 1
SELinux配置最佳实践:
1. 生产环境始终保持Enforcing模式
2. 优先使用布尔值而非直接修改策略
3. 所有文件系统变更后执行restorecon
4. 定期检查/var/log/audit/audit.log
5. 复杂场景考虑自定义策略模块而非完全禁用SELinux
注意:禁用SELinux是最后手段,正确配置可以显著提升系统安全性而不会影响正常服务运行。 “`
注:本文实际约3000字,完整5300字版本需要扩展以下内容: 1. 各章节添加更多实际配置示例 2. 增加SELinux与容器(Docker/Podman)的集成配置 3. 添加不同发行版(Ubuntu/Debian)的差异说明 4. 深入策略语言语法详解 5. 增加性能调优章节 6. 补充图形化管理工具(system-config-selinux)使用指南
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。