通过BPF加强SSH会话的安全审计

Teleport是一款Golang语言开发的用来替代sshd的ssh服务器,支持通过 SSH 或者 HTTPS 远程访问,支持集群、Web登陆、SSH历史记录还重放用以操作分享和安全审计,基于Golang ssh包构建开发,实现完全兼容OpenSSH。

最近Teleport 4.2版本中新增加ssh增强的回话记录功能用来接收非结构化的ssh会话,并将其通过结构化事件流来输出。该功能使用到了Linux内核中集成的一项新技术eBPF(简称为BPF)。用来完善Teleport审计功能的不足之处。本文虫虫就给大家介绍Teleport中是如何做的。

背景

Teleport的一个优势就是,可以对ssh会话全程记录。该功能可以捕获用户屏幕上显示的所有内容。之后,可以使用该记录回放还原所有操作,以便于审计。这些记录易于理解,并提供了有关用户在会话过程中所做操作和显示的信息

然而,和其他同类工具一样(堡垒机),Teleport也有不足之处,用户可以使用一些方法绕过会话记录。其中包括:

混淆命令:

比如通过加密或者其他方式对命令予以混淆。比如下面的语句,用base64编码对要执行的命令进行了混淆。

echo Y3VybCBodHRwOi8vd3d3LmV4YW1wbGUuY29tCg== | base64 -d | sh

这样实际的执行命令(curl example.com)不会直接被记录。

Shell脚本:

如果用户通过上传并执行脚本的方式,也不能捕获脚本中运行的命令,只能捕获脚本的输出。

终端控制:

ssh终端可以支持多种控件,比如用户可以禁用终端回显的控件,在一些应用程序通常会使用。例如sudo命令当它们提示用户输入密码时。这是也不能在ssh记录中捕获它们。

此外,由于TTY流是非结构化性质,会话记录在某种程度上可能难以捕获和监视。

技术实现

为了解决安全审计的这些不足,Teleport需要一种能将非结构化ssh会话转换为结构化事件流的方法。这就是本文要说的增强回话记录功能,具体功能展示如下:

技术选型

通过多种方法对比,包括了内容从正则表达式模式匹配之类的临时方法到自己解析原始SSH会话之类的方法,还探索了Linux提供的各种API和系统,例如Audit,fanotify和BPF等,在走技术对比时候,要考虑的两个标准是准确性和性能问题:

减少误报,最好减少到零。监控系统(安全审计),首先要考虑是的准确性问题,如果报警很多,则对警报的关注度就会减少。可能会导致严重问题被忽略掉。

减少由监控引起的任何性能影响,最好为零。监控系统要尽量避免影响系统的性能。

多种方法中,误报问题都很严重。无法对构成SSH会话的字节流进行准确的解析和解释,不能防止警报疲劳。

还有一些方法,会有性能问题。比如Linux Audit。

通过查看文件系统访问,有一些替代方法。最突出的两个是inotify和fanotify。inotify不错,做为了初始备选项,但是其缺少递归目录监视功。fanotify更有希望,也存在两个问题。

布伦丹.格雷格在BPF性能工具书中提到,在重负载时,opensnoop比对fanotify,fanotify 占了67%的CPU,而opensnoop只用到1%。

Linux内核最近合并到一个补丁,以提高fanotify的性能,使其更适合于对整个文件系统监视,这样可以在Teleport中的使用更加紧密地契合。然而,补丁需要在Linux 5.1中才被合并,目前还没有开箱即用的主流发行版支持。

考虑到这些考虑因素,Teleport最终选择了基于BPF程序链构建的解决方案,该解决方案减少了误报并且对性能的影响最小。

BPF介绍

BPF,原本是Unix的一个包过滤器,伯克利包过滤器(Berkeley Packet Filter)。后来被移植到了Linux中。2013 年,Alexei Starovoitov 对 BPF 做完善和改进,新版本被命名为 eBPF (extended BPF),简写为BPF,而将老的BPF叫做cBPF(classic BPF)。eBPF在增加了映射和尾调用等新特性,并且还重写了JIT 编译器。新版语言比 cBPF 更接近原生机器语言。BPF允许用户空间程序以安全和高效的方式从内核中的某些位置挂接并发出事件。

安全意味着BPF程序不会陷入无限循环而导致系统瘫痪。BPF程序不太可能像内核模块一样可能使整个操作系统崩溃。

BPF程序也很有效,如果不能足够快地使用它们,则丢弃事件,而不是拖累整个系统的性能。

目前Linux中有大量的系统工具都是基于BPF进行了重构(比如iptables),布伦丹.格雷格的书《BPF高性能工具》中(blog中)介绍了大量的工具可以供大家学习。

Teleport对接BPF

Teleport中使用了三个BPF程序:execsnoop捕获程序执行,opensnoop捕获程序打开的文件,tcpconnect捕获程序建立的TCP连接。

为了更好地理解这些BPF程序的功能,可以运行时查看execsnoop的输出man ls。

看起来,简单地运行man二进制文件似乎是在幕后执行了许多其他程序。

Teleport 将这些程序嵌入其二进制文件中,并且在启用”增强的会话记录”功能后,它将生成并运行它们。

这些程序本身是调试和跟踪的出色工具,它能给出系统上正在执行什么操作,而不仅限于一个用户。

要将程序执行与特定的SSH会话相关联,还使用了cgroups(尤其是cgroupv2)。Teleport启动SSH会话时,它将首先重新启动自身并将其置于cgroup中。这不仅允许该进程,而且可以使用唯一ID跟踪Teleport启动的所有将来进程。Teleport运行的BPF程序已更新,还可以发出执行它们的程序的cgroup ID。这样就可以将事件与特定的SSH会话和身份相关联。

局限性

目前Teleport没有完成增强的会话记录。仍然存在一些差距,将以后版本解决。

值得指出的是,通过会话记录,Teleport可以捕获由于其特权位置而构成会话的字节流(字节流必须流过Teleport)。至关重要的是,会话记录的完整性不依赖于主机自己报告的任何信息。但是,增强的审核功能依赖于主机准确地向Teleport报告信息。如果主机的完整性受到损害,则增强审核的完整性也会收到影响。此外,Teleport仅监控系统中最关键的部分系统调用,而不是全部调用。

目前,增强的会话记录最适合非root用户,对有权访问root的用户可以通过多种方式禁用增强会话记录。

实践

在没有背景的情况下,可以使用下面的脚本进行增强的会话记录。

首先启动Ubuntu 19.04或RHEL/CentOS 8 VM,然后运行上面的脚本。该脚本会安装内核头文件和bcc-tools,这是运行增强会话记录的先决条件。此外,脚本还安装jq,一个命令的json解析工具(虫虫以前文章介绍过,可以参考),这有助于可视化结构化事件流。

按照说明输入终端后,屏幕上看到以下类似的信息:

由此可见,curl程序是由用户以两种方式执行的。首先是程序本身的执行。第二个是程序的行为,curl发出了网络请求,也可以看到它。你可以尝试执行其他操作,例如混淆的命令,或者脚本方式执行等,应该在日志中查看执行结果。

要求

Teleport增强会话记录的最低要求需要启动BPF支持的 Linux内核4.18 。目前有多个发行版本可直接使用它,包括Ubuntu 19.04,Debian 10和RHEL/CentOS 8。

还需要安装内核头文件和bcc-tools。对于上面列出的操作系统,发行版的包管理器中安装它们,比如对Centos 8只需运行

yum install -y kernel-headers bcc-tools

或者Ubuntu下执行

apt install -y linux-headers-$(uname -r) bpfcc-tools

如果尚未打包bcc-tools,则必须从源代码构建它们。

要在Teleport中启用增强的会话记录,只需在文件配置中将其启用即可,如下所示:

ssh_service:
enhanced_recording:
enabled: yes

结论

尽管没有任何监控系统是绝对可靠的,但采用具有多种防护措施的纵深防御策略可以帮助发现问题并采取适当的措施。Teleport的增强型会话记录功能可以为系统上运行的命令的安全审计,提供更强大的记录和操作可见性。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/223335.html<

(0)
运维的头像运维
上一篇2025-04-15 22:12
下一篇 2025-04-15 22:13

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注