【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
相关推荐
姜鱼问生8 小时前
Nginx 缓存命中率监控:从 X-Cache-Status 到实时统计
运维·nginx·缓存
Apipi*9 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
天启HTTP10 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_10 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
此时不提桶,更待何时11 小时前
06-14-A-Kafka集群运维与迁移实战详解
运维·kafka
hz5678912 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC12 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
优橙教育12 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
IT研究所12 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
BLUcoding12 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom