现在你也许已经了解了BPF程序的功能了,简单的“man”命令,原来后面有这么多其他的程序在执行。
Teleport已将这三个程序的代码嵌入在了自己的库中,当我们启用了增强型会话记录功能之后,它便会执行这些程序。
就其本身而言,这些程序都是用于调试和跟踪的优秀工具,因为它们可以告诉我们整个系统在执行哪些操作。事实上,这就是我们最开始选择这些工具的目的:我们使用它们来调试Teleport遇到的一些问题,而这些问题可能会导致它在某些场景中耗尽文件描述符。但是,我们使用Teleport的目的各有不同,我们有时需要将程序执行与SSH会话以及标识符关联起来。
为了将程序执行与特定的SSH会话关联起来,我们选择使用cgroup(cgroupv2)。当Teleport启动SSH会话时,它首先会重新启动并将自己放置在cgroup中。这将允许程序对当前进程以及Teleport将要启动的所有进程进行跟踪,并分配唯一标识ID。Teleport所运行的BPF程序还可以发出执行它们的程序的cgroup ID,这允许我们将事件与特定的SSH会话和标识关联起来。
切入主题
了解了关于BPF的相关内容之后,你也可以将增强型会话记录功能引入你自己的程序之中,脚本代码已托管至GitHub:***b93f4d119ed。
首先启动Ubuntu 19.04或RHEL/CentOS 8 VM并运行上面链接提供的脚本。该脚本只会安装内核头和bcc-tools,这些都是增强型会话记录运行的前提条件。除此之外,它还会安装jq,这样更有助于可视化查看结构化事件流。
安装命令如下:
yum install -y kernel-headers bcc-tools
或
apt install -y linux-headers-$(uname -r) bpfcc-tools
如需启用Teleport中的增强型会话记录功能,请将下列内容添加至配置文件中:
ssh_service: enhanced_recording: enabled: yes
当你以本文说明的方式在终端中执行“curl ”时,你将会看到下列输出内容:
{ "argv": [ "http://www.gravitational.com" ], "cgroup_id": 4294967355, "code": "T4000I", "ei": 15, "event": "session.command", "login": "root", "namespace": "default", "path": "/bin/curl", "pid": 2315, "ppid": 2294, "program": "curl", "return_code": 0, "server_id": "e56dc762-0171-4d6e-aa56-24f2ae268c7f", "sid": "72aabcd8-38c8-11ea-af55-42010a800031", "time": "2020-01-17T01:27:05.07Z", "uid": "4b493296-7df2-4ec7-9282-a19c0d98e261", "user": "test-user" } { "cgroup_id": 4294967355, "code": "T4002I", "dst_addr": "104.24.97.116", "dst_port": 80, "ei": 0, "event": "session.network", "login": "root", "namespace": "default", "pid": 2315, "program": "curl", "server_id": "e56dc762-0171-4d6e-aa56-24f2ae268c7f", "sid": "72aabcd8-38c8-11ea-af55-42010a800031", "src_addr": "10.128.0.49", "time": "2020-01-17T01:27:05.145Z", "uid": "42831223-1da2-4b26-a783-08060fd8d7b1", "user": "test-user", "version": 4 }
此时,我们可以看到用户将以两种方式运行curl程序。第一种就是程序执行本身shell脚本切换用户,第二种方法就是程序的行为,curl将会发送一个网络请求。
当然了,你也可以尝试运行其他内容,比如说经过混淆处理的命令等等,你同样可以在日志中查看到执行结果。
执行演示
下面演示的是增强型会话记录如何将一个非结构化的SSH会话转换成了一个结构化事件流:
*参考来源:gravitational,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM
来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!