【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
相关推荐
yz_aiks1 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
AI智图坊1 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
bjzhang752 小时前
CentOS下安装MySQL详解
linux·mysql·centos
Jason_chen4 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld4 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统
lizhihai_995 小时前
股市学习心得-AI 产业链核心标的梳理清单
大数据·服务器·人工智能·科技·学习
云计算磊哥@5 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
weixin_523185326 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
黄同学real6 小时前
解决 Visual Studio Web Deploy 远程发布报 401 未授权 (ERROR\_USER\_UNAUTHORIZED)
服务器