一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于eBPF对PAM认证模块监控的方法与流程

2022-11-30 16:09:22 来源:中国专利 TAG:

一种基于ebpf对pam认证模块监控的方法
技术领域
1.本发明属于网络安全认证技术领域,具体涉及一种基于ebpf对pam认证模块监控的方法。


背景技术:

2.服务器的系统安全至关重要,确认系统中使用应用程序或服务的用户确是用户本人、限制指定用户的访问服务的时间段、限制各种应用程序或服务对系统资源的使用率等都是系统安全的重要内容。linux系统在设计时采取将不同的底层认证机制集中到一个高层次的api中的策略,从而省去开发人员自己去设计和实现各种繁杂的认证机制的麻烦。具体而言,其使用了一种安全验证方式是基于模块化设计、具有可插入功能的一种独立于应用程序之外的验证方式,因此大部分的linux发行版在实现过程中集成了pam (pluggable authentication modules,可插拔认证模块)技术,所有应用程序统一由pam管理执行认证工作给,使得程序主体无需再关注认证问题。pam提供了对所有服务进行认证的中央机制,可适用于login,远程登录(telnet, rlogin, fsh, ftp, ppp),su等应用程序中。系统管理员通过pam配置文件来制定不同应用程序的不同认证策略,应用程序开发者通过在服务程序中使用pam api来实现对认证方法的调用,而pam服务模块的开发者则利用pam spi来编写模块(主要是引出一些函数pam_sm_xxxx( )供pam接口库调用),将不同的认证机制加入到系统中。pam接口库(libpam)则读取配置文件,将应用程序和相应的pam服务模块联系起来。
3.ebpf(extended berkeley packet filter,扩展的伯克利包过滤器)是一套通用执行引擎,提供了可基于系统或程序事件高效安全执行特定代码的通用能力,通用能力的使用者不再局限于内核开发者。ebpf 可由执行字节码指令、存储对象和 helper 帮助函数组成,字节码指令在内核执行前必须通过 bpf 验证器 verifier 的验证,同时在启用 bpf jit 模式的内核中,会直接将字节码指令转成内核可执行的本地指令运行。ebpf 也逐渐在观测(跟踪、性能调优等)、安全和网络等领域发挥重要的角色。facebook、netflix 、cloudflare 等知名互联网公司的内部都广泛采用基于 ebpf 技术的各种程序用于性能分析、排查问题、负载均衡、防范 ddos 攻击,据相关信息显示在 facebook 的机器上内置一系列 ebpf 的相关工具。ebpf 的观测类型有多种,其中uprobe类型主要用来对用户空间进行调试追踪, 属于比较轻量级的机制, 本质上是在指定的探测点(比如函数的某行, 函数的入口地址和出口地址, 或者内核的指定地址处)插入一组处理程序。内核执行到这组处理程序的时候就可以获取到当前正在执行的上下文信息, 比如当前的函数名, 函数处理的参数以及函数的返回值, 也可以获取到寄存器甚至全局数据结构的信息。
4.目前的现有技术主要从两个方面来实现对正在运行的pam认证事件的监控。一种是基于动态库修改的技术,通过修改动态库内部的相关逻辑,在原有的函数入口添加自己的监控代码来获取相关的参数、变量和内存数据等并编译生成新的pam动态库,在linux系统启动时有限加载这个新的pam动态库从而实现对原有pam函数的监控并记录,这种方法对
系统的侵入较大,不仅需要等待系统重启,不能及时生效,而且一旦这个新编译生成的pam动态库出错,就会导致系统启动失败;另一种是基于ptrace对正在运行的pam动态库进行挂钩hook,类似于gdb对pam模块中的认证函数设置断点,并获取当前的内存、寄存器和变量值等数据,但是这种方法的使用场景非常受限。


技术实现要素:

5.针对以上现有技术中存在的缺点和不足,本发明提出一种基于pam模块的pam_get_authtok接口功能和ebpf的基于系统或程序事件高效安全执行特定代码的通用能力实现的对pam认证模块监控的方法,以获得更高的速度和性能、低侵入性等效果。
6.为实现上述目的,本发明采用的技术方案为一种基于ebpf对pam认证模块监控的方法,包含以下步骤:s1:在linux系统中搜寻可插拔认证模块动态库文件libpam.so;s2:使用elf解析工具对搜寻到的libpam.so文件进行解析,获得elf header和各个elf section;s3:解析elf header中的各个section的类型,函数名保存在sh_type为sht_symtab和sht_dynamic的section中,遍历elf header的sh_type找到对应的section的位置,并根据这个位置提取出sht_symtab段和sht_dynamic段;s4:遍历sht_symtab段和sht_dynamic段,找到其中的pam认证模块、pam账户模块、pam会话模块和pam口令模块的函数位置;s5:关联经由编程、底层虚拟机编译、验证和即时编译生产的ebpf机器码程序和上述pam各个模块的函数位置,形成对内核中用户空间事件的ebpf观察器;s6:ebpf观察器接收内核探针触发的ebpf事件;s7:ebpf观察器读取ebpf的上下文数据;s8:对所述上下文数据进行解析,将相关数据赋值给pam模块的变量;s9:将所述pam模块的变量数据写入pam安全事件信息,实现对linux系统pam安全的监控。
7.鉴于linux系统的所有动态库文件都存在/lib目录、/usr/lib目录和/etc/ld.so.conf指定的其他目录中,因此步骤1中在搜寻可插拔认证模块动态库文件时,优先搜寻的目录包括/lib目录、/usr/lib目录和/etc/ld.so.conf。
8.步骤5中,所述ebpf机器码程序的生成包含以下步骤:s31:编写ebpf程序代码;s32:经过底层虚拟机编译,将前述ebpf程序代码编译成字节码程序;s33:经过验证器和jit即时编译器,对所述字节码程序进行编译,生成ebpf机器码程序。
9.进一步,步骤6中所述内核探针触发的ebpf事件包括login、passwd、ssh、su、sudo。
10.与现有技术相比,本发明具有以下的有益技术效果:1,具有更高的速度和性能。因为ebpf可以看做是一个最小“虚拟”机,带有ebpf解释器和jit编译器,监控pam口令的功能编译字节码后,将调用ebpf加载并执行,而不需要反复地调用字节码的新解释,因而在速度和性能上有了较大的提升。
11.2,更安全的低侵入性。因为ebpf程序是沙箱化的,该技术只能在安全的环境内有限地执行指定的监控pam的口令事件,因而内核源代码仍然受到保护并且没有改变,验证步骤能确保资源不会被运行无限循环的程序堵塞。
12.3,更便捷的编程性。使用 ebpf 有助于增加环境的特性丰富度,而无需添加额外的层。同样,由于代码直接在内核中运行,因此可以在 ebpf 事件之间存储数据,而不需要像其他追踪程序那样转储数据。
附图说明
13.图1为本发明的实施例的流程示意图。
具体实施方式
14.现结合附图对本发明作进一步详细的说明。
15.如图1所示,本发明的一个对pam认证模块监控的具体实施例的流程包含以下步骤:1,在linux系统中搜寻可插拔认证模块动态库libpam.so文件,因为linux系统的所有动态库文件都存在/lib目录、/usr/lib目录和/etc/ld.so.conf指定的其他目录中,因此首先搜索这三个目录,找到其中的可插拔动态库文件。
16.2,由于可插拔动态库文件是elf格式的,使用elf解析工具解析该动态库文件,获得其中的各个section和elf header。
17.3,解析elf header中的各个section的类型。根据linux系统的定义,函数名保存在sh_type为sht_symtab和sht_dynamic的section中,遍历elf头的sh_type找到对应的section的位置,根据这个位置提取出sht_symtab段和sht_dynamic段。
18.4,遍历sht_symtab段和sht_dynamic段,找到其中的认证模块、账户模块、会话模块和口令模块的函数位置。
19.5,关联ebpf机器码程序和pam各个模块的函数位置,形成对内核中用户空间事件的观察。
20.6,通过login/passwd/ssh/su/sudo内核探针触发ebpf事件。
21.7,使用ebpf观察器读取ebpf的上下文数据。
22.8,利用ebpf解析上下文数据,将相关数据赋值给pam模块的变量(包括用户名、口令等)。
23.9,将pam模块变量数据写入pam安全事件信息,实现对linux系统pam安全的监控。
24.其中,上述第5步中的ebpf机器码程序是经由以下三个步骤生成的:步骤1,首先编程ebpf程序,实现对应的功能。
25.步骤2,经过llvm(low level virtual machine,低级或低层虚拟机)编译,将ebpf程序编译成字节码程序。
26.步骤3,经过验证器和jit即时编译器,编译成为机器码程序。
27.如上述实施例所述,本发明有效解决了对linux系统身份验证的监控,即利用ebpf技术,在linux内核中运行针对pam身份验证监控的沙盒程序,在不修改内核源代码或加载内核模块的条件下,通过使linux内核可编程,实现了对linux系统中的login/passwd/ssh/
su/sudo等应用的监控记录,监控的内容包括身份验证、授权管理、会话开启和结束、口令更改等。
28.因为带有ebpf解释器和jit编译器,监控pam口令的功能编译字节码后,将调用ebpf加载并执行,而不需要反复地调用字节码的新解释,因而在速度和性能上有了较大的提升。ebpf程序是沙箱化的,该技术只能在安全的环境内有限地执行指定的监控pam的口令事件,因而内核源代码仍然受到保护并且没有改变,验证步骤确保资源不会被运行无限循环的程序堵塞。使用 ebpf 有助于增加环境的特性丰富度,而无需添加额外的层。同样,由于代码直接在内核中运行,因此可以在 ebpf 事件之间存储数据,而不像其他追踪程序那样转储数据。
29.需要说明的是,以上具体实施方式的描述并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献