[原创]关于 Linux 终端安全监控

6 月 26 日
 erbin

关于 Linux 终端安全监控


心血来潮,梳理出这篇文章,且看且珍惜吧,若有不足,也感谢大佬指点一二。

最近两年笔者对于 Linux 的应用层监控和内核层监控基本全研究了一遍并落地了两套,如果有屏幕前的你也在调研此方面的技术,那么可以做个参考,能少走很多弯路,现在的就业形式一言难尽,笔者在这上面花费了大量精力,到头来却发现无用武之地,所以没必要在这上面浪费太多精力。笔者的两套方案具体如下:


应用层


Preload

Preload 的本质就是劫持动态库符号表,使我们的符号优先于系统库( glibc )中的符号被找到并使用。


ptrace

ptrace 就是我们平时使用的 strace 、gdb 的底层核心接口。当时我觉得既然 strace 可以追踪系统调用、gdb 调试过程中又可以阻塞应用,那么 ptrace 肯定可以追踪并挂起即将执行的系统调用。事实证明我觉得没错,但是!


fanotify

这其实是我最后发现的一种监控方式,支持简单的文件访问控制。如果不追求极致的安全,笔者十分建议采用这种方式。由于笔者没有深入的使用,以下仅是个人推断。


内核层


eBPF

关于 eBPF 前期调研过程中就被我 pass 了。


kprobe


lsm

这也被 pass 掉了,原因是收集了一些系统平台去做编译测试,部分信创系统唯独缺少关于 lsm 的编译环境和条件,导致编译不通过,由于未深度使用,以下优缺点仅仅是个人推断。


FTrace

这是个好方法,但是唯独架构支持不全。


LivePatch

这有点杀鸡用牛刀了。


tracepoint

这个很赞。


syscall_table

差点把它忘了。


后期优化思路

准备模仿 eBPF 的 CO-RE 机制,让大部分符号都动态查寻获取。然后引入 英伟达 的驱动思路,让底座开源,核心代码闭源为弱符号的二进制使内核平台无关。如若成功,将无需再逐内核编译适配了。


上述部分应用层方案已开源,若感兴趣可自行查看

2231 次点击
所在节点    信息安全
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1223023

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX