长期支持版本

    社区创新版本

      safeguard简介

      针对操作系统、内核安全,safeguard 是一个基于 eBPF 的 Linux 安全防护系统,可以实现安全操作的拦截及审计记录。项目采用 libbpfgo 库,使用go语言实现顶层控制。目前项目已在 openEuler sig-ebpf 社区开源,链接:https://gitee.com/openeuler/safeguard。

      KRSI(eBPF+LSM)

      eBPF 是扩展的伯克利包过滤器(extended Berkeley Packet Filter)的缩写,它是一种可以在内核空间运行沙箱化程序的技术。eBPF 程序可以在不修改或重新编译内核,也不需要加载内核模块的情况下,动态地增加内核的能力。通过 eBPF,可以实现网络、观测、跟踪和安全等多种用例。

      LSM 是 Linux 安全模块(Linux Security Module)的缩写,它是一种提供可插拔的安全框架的机制,可以让不同的安全模块在内核中注册并实施自己的安全策略。LSM 提供了一系列的钩子(hooks),可以在系统调用或其他关键操作之前或之后执行安全检查。

      eBPF 和 LSM 可以结合使用,形成一种基于 eBPF 的 LSM 扩展,叫做 KRSI(eBPF+LSM)。它允许用户在运行时使用 eBPF 程序实现和执行自定义的安全策略和审计规则。它的优点是不需要修改或重新编译内核,也不需要配置现有的 LSM 模块。它的工作原理是将 eBPF 程序加载到 LSM 钩子中,然后在调用路径中执行这些程序,对系统资源的访问进行检查和控制。

      特性

      • 审计:记录配置文件范围内的行为,并输出日志。
      • 控制:针对文件,进程,网络的安全访问控制。
      • 行为分析:收集信息,进行资源,热点,异常等分析。

      应用场景

      safeguard 是一种基于 KRSI(eBPF+LSM) 的 Linux 安全审计和管控解决方案,可以实现对系统的全面监控和保护。下面是一些可能的应用场景:

      • 容器安全:safeguard 可以对容器内部的行为进行审计和控制,例如记录容器的进程、文件、网络活动,限制容器访问特定的资源或端口,检测容器的异常行为等。这样可以有效地防止容器被恶意攻击或滥用,提高容器的安全性和稳定性。
      • 云服务安全:safeguard 可以对云服务提供商的客户机进行审计和控制,例如记录客户机的操作系统、应用程序、用户等信息,限制客户机执行特定的命令或系统调用,检测客户机的恶意行为或漏洞利用等。这样可以有效地保护云服务提供商的资源和信誉,防止客户机被黑客入侵或破坏。
      • 安全合规: safeguard 可以对系统的安全合规性进行审计和控制,例如记录系统的配置、权限、日志等信息,限制系统修改特定的设置或文件,检测系统的违规行为或异常事件等。这样可以有效地满足各种安全标准和法规要求,提高系统的可信度和合法性。

      项目功能

      审计控制

      文件:

      • 追踪文件系统的活动,包括文件的打开、关闭、读写、删除等。
      • 修改文件系统的行为,例如拦截某些文件操作,或者实现自定义的安全策略。 安全策略:
        1. 拦截或重定向某些文件操作,使用 eBPF 来拦截对敏感文件的读写操作,或者重定向对某些文件的访问到其他位置。
        2. 实现自定义的访问控制,使用 eBPF 来检查对文件的访问者的身份、权限、环境等信息,然后根据一些规则来允许或拒绝访问。
        3. 实现自定义的审计和监控,使用 eBPF 来记录对某些文件的操作的详细信息,如操作者、时间、内容等,并将这些信息输出到日志。

      进程:

      • 追踪进程的生命周期,例如进程的创建、终止、调度、上下文切换等。
      • 修改进程的行为,例如注入或修改某些系统调用,或者实现自定义的调度策略。

      网络:

      • 追踪网络的活动,例如网络包的发送、接收、转发、丢弃等。
      • 修改网络的行为,例如过滤或重写某些网络包,或者实现自定义的路由策略。

      特性列表

      针对文件,网络,进程的审计控制

      • 文件

        功能: 配置允许访问的文件列表。 配置禁止访问的文件列表并拦截相关操作。 文件打开的日志记录,包括操作命令,主机名称,PID,UID 等信息。

        影响的操作: 打开文件或目录,包括创建、读取、写入、执行等模式。 修改文件或目录的权限或属性。 映射文件或目录到内存。

      • 网络

        功能: 可配置 CIDR 允许以及拒绝的列表。 可配置域名允许以及拒绝的列表。 可配置操作命令允许以及拒绝的列表。 可配置 UID 允许以及拒绝的列表。 可配置 GID 允许以及拒绝的列表。 网络连接的日志记录,包括 CGroupID,PID,主机名,操作命令等。

        影响的操作: 网络连接相关操作,创建 socket。 当一个 socket 调用 connect() 或 sendto() 函数时,且目标地址不是 NULL。 当一个 socket 调用 accept()或recvfrom() 函数时,且源地址不是 NULL。 当一个 socket 调用 getpeername() 函数时,且返回的地址不是 NULL。

      • 进程

        功能:

        进程创建的日志记录,包括 PID,PPID,主机名,操作命令等。

        影响的操作包括:

        进程创建相关操作,包括 fork,vfork,clone 等。

      日志

      配置日志格式为 json 或 text。 配置日志文件输出路径。 配置日志文件轮转大小,超出后自动创建新的日志文件,默认大小为100M。 配置日志文件轮转时间限制,超出后自动创建新的日志文件,默认时间为365天。 配置日志标签。 配置日志级别,DEBUG(10)、INFO(20)、WARNING(30)、ERROR(40)、CRITICAL(50)。

      配置

      配置文件,进程,网络,日志模块的打开或关闭以及对应模块子配置。 配置模式,可以选择监控或拦截,只有在拦截模式下才会阻止相关操作(如拒绝访问的文件列表)。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份