Linux系统 SELinux 安全管理与故障排查

一、SELinux 安全上下文管理

1. SELinux 简介

SELinux(Security-Enhanced Linux)是 Linux 内核的强制访问控制(MAC)安全子系统,通过基于标签的访问控制实现细粒度权限管理,遵循最小权限原则。

SELinux 有三种工作模式:

  • Enforcing:强制执行策略,拒绝非法操作并记录日志
  • Permissive:仅记录违规操作,不阻止(用于调试)
  • Disabled:完全关闭 SELinux(需重启生效)

2. 基础操作命令

查看 SELinux 状态

getenforce  # 查看当前模式
sestatus    # 详细状态信息

注意:setenforce 仅临时生效,永久修改需编辑/etc/selinux/config文件

切换工作模式

setenforce 0  # 切换到Permissive模式
setenforce 1  # 切换到Enforcing模式

3. 安全上下文管理

查看上下文

ls -Z /var/www/html  # 查看文件/目录的上下文
ps -Z -C httpd       # 查看进程的上下文

修改上下文

  1. chcon 命令(临时修改):
# 设置文件类型
sudo chcon -t httpd_sys_content_t /var/www/html/index.html# 递归修改目录
sudo chcon -R -t httpd_sys_content_t /var/www/html/# 参照文件上下文
sudo chcon --reference=file1 file2
  1. semanage 命令(永久修改):
# 为自定义目录设置默认上下文
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/webapps(/.*)?"
sudo restorecon -Rv /opt/webapps  # 应用更改

4. 常见 SELinux 问题解决

Web 服务器 403 错误

# 检查文件上下文
ls -Z /var/www/html# 修复上下文
restorecon -Rv /var/www/html

服务无法绑定非标准端口

# 将8080端口添加到HTTP服务端口列表
semanage port -a -t http_port_t -p tcp 8080

管理 SELinux 布尔值

# 查看Apache相关布尔值
getsebool -a | grep httpd# 永久启用HTTP访问用户家目录
setsebool -P httpd_enable_homedirs=on

二、常见 Linux 系统故障排查案例

1. GRUB 引导故障

故障现象:系统启动卡在 "GRUB>" 提示符,无法进入系统

解决步骤

  1. 在 GRUB 命令行执行以下命令临时启动系统:

plaintext

insmod xfs
set root=(hd0,msdos1)
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
initrd16 /initramfs-3.10.0-1160.el7.x86_64.img
boot
  1. 进入系统后重建 GRUB 配置:grub2-mkconfig -o /boot/grub2/grub.cfg

2. 文件系统只读故障

故障现象:无法创建文件,提示 "Read-only file system

解决方案

  1. 卸载分区:umount /dev/sda1
  2. 强制修复(ext 文件系统):fsck -y /dev/sda1
  3. 强制修复(xfs 文件系统):xfs_repair /dev/sda1
  4. 重新挂载:mount -a

3. OOM Killer 触发

故障现象:关键进程突然被终止,系统日志出现 "Killed process"

优化方案

  • 调整进程 OOM 优先级:echo -100 > /proc/[PID]/oom_score_adj
  • 修改内存分配策略:
vm.overcommit_memory = 2
vm.overcommit_ratio = 80

4. 磁盘空间耗尽

故障现象:服务异常,df 显示使用率 100%

快速定位与解决

  1. 查找未释放空间的进程:lsof -n | grep deleted
  2. 定位大文件:du -xh --max-depth=1 / | sort -hr
  3. 常见清理:
    • 日志清理:journalctl --vacuum-size=100M
    • 临时文件清理:rm -rf /tmp/*.tmp

5. SSH 登录缓慢

故障现象:SSH 连接延迟超过 10 秒

优化配置

  1. 编辑 sshd_config:
    • 设置UseDNS no
    • 关闭GSSAPIAuthentication no
  2. 重启 sshd 服务使配置生效

6.root密码遗忘

在RHEL/CentOS 7及更新版本中,如果忘记root密码,可以通过以下步骤重置(需物理/虚拟控制台访问权限):

方法原理

通过修改GRUB2启动参数进入单用户模式,绕过身份验证直接获取root权限

详细操作步骤

  1. 重启系统并中断引导

# 当系统启动到GRUB菜单时,快速按下方向键阻止自动引导
# 选择默认内核条目(通常第一条)按 `e` 键进入编辑模式
  1. 修改内核参数

# 在linux16行(或linux行)末尾追加:
rd.break enforcing=0
​
# 修改后的完整行示例:
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/rhel-root rw rd.break enforcing=0
  1. 进入紧急模式

# 按 Ctrl+X 启动系统,进入紧急救援模式的shell环境
# 此时文件系统挂载在/sysroot(只读模式)
  1. 切换根目录

chroot /sysroot
  1. 修改root密码

# 此时已获得完整root权限:
passwd root
# 输入新密码两次(不会显示输入内容)
  1. 修复SELinux上下文

# 强制重新标记文件系统(重要!):
touch /.autorelabel
  1. 退出并重启

exit
reboot

关键参数说明

参数作用
rd.break在内核加载初期中断启动流程
enforcing=0临时禁用SELinux强制模式

注意事项

  1. 磁盘加密系统:若启用了LUKS加密,需先解密再操作

  2. 云服务器:部分云平台需通过VNC或救援模式操作

  3. 时间控制.autorelabel会导致首次重启时间较长(约5-15分钟)

  4. UEFI系统:可能需要关闭Secure Boot功能

  5. 审计日志:系统日志会记录密码修改操作(/var/log/audit/audit.log)


替代方案(适用于不同场景)

  1. init方法

    # 在GRUB的linux行后追加:
    init=/bin/bash
  2. systemd方法

    systemctl edit --force --full rescue.target

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922159.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解密完全二叉树顺序存储之堆结构

前言:各位老铁好,在前面博客中,笔者分享了有关二叉树的博客,在那篇博客中,笔者讲到了完全二叉树的存储结构中有两种存储方式,一种是顺序存储,一种是链式存储,链式存储笔者已经带各位老铁实现过了…

通过针刺!鹏辉能源移动电源电池革新之作 Secu 系列:不燃电解液加持,充电宝安全新选择

9月11日,鹏辉能源对外发布新一代移动电源高安全电池Secu系列。该产品通过采用不燃的电解液破解移动电源产品安全难题,直击当下移动电源安全事故频发的行业痛点,为移动电源行业带来更安全、更可靠的半固态电池解决方案。数字化时代&#xff0c…

软件定义汽车(SDV)与区域电子电气架构(Zonal EEA)的技术革新

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

在 Docker Compose 中解决文件权限不足的问题

在使用 Docker 和 Docker Compose 构建应用时,由于容器中的文件权限不足而导致某些容器可能无法访问宿主机上的文件,或者容器内的文件系统无法正确读取或写入文件。问题描述在我的项目中,我使用 Docker Compose 来启动多个服务,并…

认知语义学对人工智能自然语言处理的深层语义分析:理论启示与实践路径

摘要随着人工智能(AI)技术的飞速发展,自然语言处理(NLP)已成为其核心驱动力之一。然而,尽管以大型语言模型(LLMs)为代表的现代NLP系统在处理语言任务上取得了前所未有的成功&#xf…

React19 中的交互操作

需要安装的库 antd-mobile、use-immer在App.jsx 中引入组件 Actionimport "./App.css" import Action from "./pages/action" function App() {return (<><Action></Action></>) }export default Appaction.jsx 组件import LearnI…

仓颉编程语言青少年基础教程:数组类型

仓颉编程语言青少年基础教程&#xff1a;数组类型 数组本质上是有序、同类型数据的集合容器&#xff0c;其核心作用是高效组织、访问和处理批量数据&#xff0c;同时结合语言特性&#xff0c;为开发者提供简洁、高性能的数据管理方式。例如&#xff1a; main() { let v1: …

C++微基础蓝桥杯之旅9.9-9.12

这里主要还是强制类型转换的使用//打印字符ASCII码值 //输入一个除空格以外的可见字符 //输出其ASCII值--十进制整数 #include <iostream> using namespace std;int main() {char ch;cin >> ch;//字符cout << (int)ch << endl; return 0; }//打印字符…

逻辑漏洞(上)- 突破功能限制漏洞、用户信息泄露(逻辑漏洞入门)

漏洞介绍&#xff1a; 在网络攻防实战中&#xff0c;常会遇到各种前端限制&#xff0c;绕过限制的方法大多是改包或者修改前端代码来实现的。 漏洞环境&#xff1a;docker docker-compose up -d 启动环境后&#xff1a;访问 http://127.0.0.1:8983/web/# 发现查询按钮是无法使用…

tsv文件简介

初步了解tsv文件在很多 OCR&#xff08;光学字符识别&#xff09;项目中&#xff0c;.tsv文件是标准的训练数据标注文件&#xff0c;主要用于存储 “图像路径 - 对应文本标签” 的映射关系&#xff0c;同时可能包含图像尺寸、文本长度等辅助信息&#xff0c;方便模型读取训练数…

apache poi 导出复杂的excel表格

如何导出复杂的excel 表格 如图表格&#xff0c;存在行和列的合并&#xff0c;边框&#xff0c;样式&#xff0c;颜色等。依赖<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><arti…

下载 Eclipse Temurin 的 OpenJDK 提示 “无法访问此网站 github.com 的响应时间过长”

打开 Eclipse Temurin 的 OpenJDK 的官网下载地址&#xff1a; https://adoptium.net/zh-CN/temurin/releases 问 deepseek&#xff1a; 国内网络&#xff0c;打不开github.com网页&#xff0c;提示github.com 的响应时间过长。 国内无法访问 GitHub 或访问缓慢&#xff0c;通…

C/C++类型转换

C/C类型转换 1. C类型转换 C 语言中的类型转换主要分为两种&#xff1a;隐式类型转换 (Implicit Conversion) - 由编译器自动完成。显式类型转换 (Explicit Conversion) - 由程序员强制指定&#xff0c;也称为强制类型转换。1.2 隐式类型转换 编译器在编译时自动进行的转换&…

【Java】Windows切换Java8和Java11

现在有些项目要升级到Java17, 所以需要切换不同的java版本。 如何安装Java8 由于已经安装了jJava8, 之前的安装文章&#xff1a;【Java】jdk8安装——英文版 如何安装Java17 Java17下载地址 https://www.oracle.com/java/technologies/downloads/#java17-windows 下载到电…

SQLite 数据库核心知识与 C 语言编程

一、数据库基础概念1.1 数据库分类根据规模和应用场景&#xff0c;数据库可分为以下几类&#xff1a;大型数据库&#xff1a;Oracle&#xff08;适用于企业级高并发、大容量场景&#xff09;中型数据库&#xff1a;MySQL、MSSQL&#xff08;适用于中小型系统、Web 应用&#xf…

Netty 调优篇:实战配置、性能监控与常见坑

&#x1f680; Netty 调优篇&#xff1a;实战配置、性能监控与常见坑前面我们已经深入了 Netty 的 线程模型、Pipeline、EventLoop、内存池、零拷贝和背压机制。 但在实际工作中&#xff0c;很多人踩坑的地方不是“源码没看懂”&#xff0c;而是 调优没做好。 今天我们就从三个…

Linux Node.js 安装及环境配置详细教程

如果您喜欢此文章&#xff0c;请收藏、点赞、评论&#xff0c;谢谢&#xff0c;祝您快乐每一天。 一、Node.js是什么 Node.js是一个基于Chrome V8引擎的[JavaScript运行环境]。 Node.js使用了一个事件驱动、非阻塞式I/O 的模型。 Node.js是一个让JavaScript运行在服务端的开…

呼叫中心系统IVR流程设计的心理学

呼叫中心的 IVR&#xff08;交互式语音应答&#xff09;系统看似是 “机器与用户的对话”&#xff0c;实则暗藏对用户心理的精准把握。其设计需围绕降低焦虑、提升效率、强化信任三大核心目标&#xff0c;背后依托认知心理学、行为心理学、情感心理学等理论支撑。一、认知负荷理…

一些开源或免费的网络管理工具

整理开源及免费网络管理工具推荐,涵盖监控、配置、安全、流量分析等场景,适用于不同规模的网络环境: ​一、网络监控与性能分析​ 1. ​Zabbix​ ​特点​:企业级监控方案,支持SNMP、IPMI、JMX等多种协议,提供实时仪表盘、告警通知和自动化发现功能。 ​适用场景​:服…

谷粒商城项目-P16快速开发-人人开源搭建后台管理系统

1.对脚手架工程进行改造 此项目选用的脚手架工程是人人开源 地址&#xff1a;人人开源 选择的是下图标红的renren-fast作为后端&#xff0c;renren-fast-vue作为前端 克隆上述两个项目 2.后端改造 2.1将renrenfast项目的git文件夹删除后&#xff0c;拖进后端代码文件夹中 2…