【Linux复习】管理SELinux安全性

目录

1.核心概念:安全上下文

2.三种运行模式

3.日常管理三要素

[3-1 修复文件类型](#3-1 修复文件类型)

[3-2 查看和修改策略](#3-2 查看和修改策略)

[3-3 控制开关:布尔值](#3-3 控制开关:布尔值)


1.核心概念:安全上下文

在 RHEL 9 中,SELinux 提供了一套比传统 Linux 权限(DAC,自主访问控制)更精细、更强大的强制访问控制系统 (MAC)。它的核心思想 是:默认拒绝,意思是没有任何操作是被允许的,除非有明确的规则允许它 。

在传统的权限管理中,我们关注的是"哪个用户或组"。而 SELinux 关注的是一个更全的 SELinux 上下文 (Context) 。

一个典型的上下文格式如下:user_u:role_r:type_t:s0

User (SELinux 用户):映射一个或多个 Linux 用户。例如 system_u 代表系统进程,unconfined_u 代表无限制用户 。

Role (角色):用于"基于角色的访问控制 (RBAC)"。例如 object_r 用于文件,sysadm_r 用于系统管理员。

Type (类型) :这是最重要、最常用的一环。它是策略规则的核心,决定了"谁能访问谁"。所有类型的名字都以 _t 结尾。进程运行在 Domain 中 (如 httpd_t);文件、目录、端口等资源有其各自的 Type (如 /var/www/html 下的文件是 httpd_sys_content_t,SSH 端口是 ssh_port_t)。

Level (级别):用于实现多级安全 (MLS) 或多类别安全 (MCS),主要用于处理极高敏感度的数据分级。

所谓SELinux 的策略,就是一系列规则,定义了像 httpd_t 这样的 Domain 能否以及如何访问像 httpd_sys_content_t 这样的资源 。

它的判断逻辑是:只有当传统的 Linux 权限检查 (DAC) 和 SELinux 策略检查 (MAC) 都允许时,访问才会被放行。如果传统权限拒绝了,SELinux 甚至不会介入检查 。

2.三种运行模式

SELinux 有三种模式,可以通过**/etc/selinux/config** 文件或setenforce 命令切换。

(1)Enforcing (强制)模式:这是生产环境推荐使用 的模式,它会严格执行SELinux策略,拒绝所有未授权的访问并记录日志。

(2)Permissive (宽容)模式:该模式主要用于调试,它不会实际阻止访问,但会将所有违反策略的操作记录到审计日志中。

(3)Disabled (禁用)模式:此模式会完全关闭 SELinux子系统,仅在极少数特殊情况或老旧硬件上才考虑使用,一般情况下强烈不推荐

3.日常管理三要素

3-1 修复文件类型

当文件或目录被移动、创建或复制到错误位置时,它的 SELinux 类型可能会出错。restorecon 命令用于将文件或目录的类型恢复到其父目录或策略所指定的默认值 。

例如,我们可以使用下面的命令把 /var/www/html/ 下所有文件的类型恢复为正确值:

bash 复制代码
sudo restorecon -Rv /var/www/html/

这条命令中-R选项表示递归处理,-v选项表示显示详细信息。

3-2 查看和修改策略

当服务需要监听一个非标准端口时,需要将新端口添加到策略中,可以使用semanage 命令管理端口。下面给出一个典型的例子,要求允许 HTTP 服务器监听 8080 端口,需要完成以下三步:

bash 复制代码
# 1. 查看 HTTP 服务当前允许的端口
sudo semanage port -l | grep http_port_t

# 可能得到的反馈:
#http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

# 2. 将 8080 端口添加到 http_port_t 中
sudo semanage port -a -t http_port_t -p tcp 8080

3-3 控制开关:布尔值

布尔值是系统的开关,用于在不重写复杂策略规则的情况下,动态地改变某个特定服务的行为 。

例如,我们需要允许 httpd 访问用户主目录,可以使用下面的方式来实现:

bash 复制代码
# 1. 查看相关布尔值状态
sudo getsebool httpd_enable_homedirs
# httpd_enable_homedirs --> off


# 2. 临时开启 ,重启后会失效
sudo setsebool httpd_enable_homedirs on


# 3. 永久开启 :-P 参数会将设置写入策略文件
sudo setsebool -P httpd_enable_homedirs 1
相关推荐
不会就选b26 分钟前
linux之进程管理(二)--替换
linux·运维·服务器
倔强的石头10632 分钟前
【Linux指南】动静态库系列(二):从源码复用到目标文件复用:为什么需要把 .o 打包成库
linux·运维·服务器
码农学院38 分钟前
GEO与SEO协同:从传统搜索到生成式搜索的平滑迁移路径
服务器·前端·python
步步精BBJconn41 分钟前
从GPU服务器到数据中心:AI服务器高压连接器的应用与发展趋势
大数据·运维·服务器·人工智能·科技·物联网
码农学院3 小时前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
爱写代码的森9 小时前
鸿蒙三方库 | harmony-utils之ImageUtil图片保存到本地详解
服务器·华为·harmonyos·鸿蒙·huawei
大耳朵-小飞象12 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技12 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
HLC++13 小时前
Linux的进程间通信
android·linux·服务器