当前位置: 首页 > article >正文

linux笔记(selinux)

一、概述

  1. 定义
    SELinux(Security - Enhanced Linux)是一种基于 Linux 内核的强制访问控制(MAC)安全机制。它为 Linux 系统提供了更细粒度的安全策略,增强了系统的安全性。
  2. 目的
    主要目的是限制进程对系统资源(如文件、目录、网络端口等)的访问权限,防止恶意软件、非法用户或错误配置导致的安全漏洞,即使应用程序或用户权限被非法提升,也能有效控制其访问范围。

二、工作模式

  1. 强制模式(Enforcing)
    • 在这种模式下,SELinux 会强制执行安全策略。如果违反了安全策略,相应的操作将被阻止,并在系统日志(如/var/log/messages)中记录相关的审计信息。这是生产环境中最常用的模式,能最大程度保障系统安全。
  2. 宽容模式(Permissive)
    • 在宽容模式下,SELinux 不阻止违反安全策略的操作,但会记录审计信息。这种模式常用于调试和测试新的安全策略,以便在不影响系统正常运行的情况下检查策略的正确性。
  3. 禁用模式(Disabled)
    • SELinux 完全不工作,系统没有任何 SELinux 相关的安全保护。不建议在生产环境中使用此模式,因为会使系统面临较大安全风险。

 

三、安全上下文(Security Context)

  1. 组成部分
    安全上下文一般由四个部分组成
    用户(user)、角色(role)、类型(type)和级别(level),格式为user:role:type:level
    • 用户(user):SELinux 用户,不是传统 Linux 用户,如system_uuser_u等。不同的 SELinux 用户有不同的访问权限。
    • 角色(role):定义了用户在 SELinux 中的角色,如system_ruser_r等。角色用于控制对不同类型资源的访问。
    • 类型(type):这是安全上下文的核心部分,决定了对象(如文件、目录、进程)的主要分类和访问规则。例如httpd_sys_content_t表示与 HTTP 服务器相关的内容类型。
    • 级别(level):用于多级安全策略,如s0s1等。不同的安全级别可能允许或禁止不同的访问操作。
  2. 查看安全上下文
    • 可以使用ls -Z命令查看文件和目录的安全上下文。例如,ls -Z /etc会显示/etc目录下文件和目录的安全上下文信息。对于进程,可以使用ps -eZ命令查看进程的安全上下文。

    3.过程

  • 解释:

    • 当主体(进程)访问目标(文件)时,首先和 SELinux 中定义好的策略进行匹配

    • 若符合定义的规则,且主体的安全上下文和目标的安全上下文匹配则允许访问文件

    • 若安全上下文比较失败,则拒绝访问,并通过 AVC(Access Vector Cache,访问向量缓存,主要用于记录所有和 SELinux 相关的访问统计信息)生成拒绝访问信息

    • 注意:最终是否可以访问到目标文件,还要匹配产生进程(主体)的用户是否对目标文件拥有合理的rwx权限

四、策略类型

  1. 目标策略(Targeted Policy)
    • 这是最常用的策略类型。在目标策略中,SELinux 只对特定类型的进程和资源进行保护,而不是对整个系统进行全面控制。例如,它通常会保护网络服务(如 Apache、Nginx、SSH 等)、数据库服务器等关键应用相关的进程和资源,减少了系统的复杂性和管理难度。
  2. 严格策略(Strict Policy)
    • 严格策略对整个系统实施全面的强制访问控制,包括所有的进程、文件、网络等。这种策略提供了最高级别的安全保障,但需要更复杂的配置和管理,因为它可能会影响系统中许多正常的操作,一般用于对安全要求极高的环境。

五、SELinux 相关命令

  1. getenforce
    • 用于查看当前 SELinux 的工作模式,输出结果为EnforcingPermissiveDisabled
  2. setenforce
    • 用于临时改变 SELinux 的工作模式。例如,setenforce 0将 SELinux 设置为宽容模式,setenforce 1将其设置为强制模式。此命令的修改在系统重启后失效。
  3. semanage
    • 这是一个功能强大的 SELinux 管理工具。例如:
      • semanage port -a -t http_port_t -p tcp 8080:将 TCP 端口 8080 添加到http_port_t类型,使得相关的 HTTP 服务可以使用该端口(假设安全策略允许)。
      • semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?":为/var/www/html目录及其下所有文件设置安全上下文类型为httpd_sys_content_t
  4. restorecon
    • 用于恢复文件或目录的默认安全上下文。例如,如果文件的安全上下文被意外修改,可以使用restorecon -Rv /var/www/html来恢复/var/www/html目录及其子目录下所有文件的安全上下文到默认值。

六、故障排除与日志分析

  1. auditd服务与日志
    • SELinux 的审计信息通常由auditd服务记录auditd服务的日志文件一般位于/var/log/audit/audit.log。当出现 SELinux 相关的访问拒绝问题时,可以通过分析此日志文件来查找原因。
  2. 常见问题解决步骤
    • 首先,查看/var/log/messages/var/log/audit/audit.log日志,确定是 SELinux 导致的问题(通常会有AVC(Access Vector Cache)拒绝信息)。
    • 然后,根据日志中的提示信息,确定是哪个进程、文件或端口受到了影响,以及违反了哪种安全策略。
    • 可以尝试使用setenforce 0临时关闭 SELinux(仅用于测试,不建议长期使用),如果问题消失,那么很可能是 SELinux 相关问题。
    • 通过seinfosesearch等工具进一步分析安全策略,或者使用semanage等命令调整相关的安全上下文和策略来解决问题。

http://www.kler.cn/a/388902.html

相关文章:

  • 微服务架构面试内容整理-API 网关-Gateway
  • LLMs 如何处理相互矛盾的指令?指令遵循优先级实验
  • python高效处理大数据:将Excel10万数据分批插入MySQL数据库的实战代码
  • 【嵌入式开发】单片机CAN配置详解
  • ABC334
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • 欢迎 Stable Diffusion 3.5 Large 加入 Diffusers
  • Android MavenCentral 仓库更新问题
  • 【9692】基于springcloud+vue的智慧养老平台
  • Linux:理解动静态库
  • Linux安装与配置 Gitblit 1.9.3 服务
  • 如何在 Linux 服务器上安装 Git
  • Linux——入门
  • 搭建监控系统Prometheus + Grafana
  • 独立站 API 接口的性能优化策略
  • CALL处 F8的“bug“
  • 7个常用的JavaScript数组操作进阶用法
  • Spring MVC(一)
  • 事件组(本质,车辆协同,改进姿态控制)
  • DICOM标准:DICOM医学影像中的覆盖层(Overlay)概念详解
  • Webpack 深度解析与实战指南
  • Notepad++ 最新官网中文版在线下载 附文本编辑器安装与基础使用教程
  • 区块链应用第1讲:基于区块链的智慧货运平台
  • 【算法】(Python)动态规划
  • 网络安全不知道怎么学,看完这篇,中学生都能学会
  • 【SpringBoot】——Spring Validation之用户注册、JWT令牌之用户登入