首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >bpflock:基于eBPF实现的Linux设备安全审计工具

bpflock:基于eBPF实现的Linux设备安全审计工具

作者头像
FB客服
发布于 2023-03-30 11:24:43
发布于 2023-03-30 11:24:43
1.2K150
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

 关于bpflock 

bpflock是一款基于eBPF驱动的Linux设备安全审计工具,该工具使用了eBPF来帮助广大研究人员增强Linux设备的安全性。通过限制对各种Linux功能的访问,bpflock能够减少攻击面并阻止一些众所周知的攻击技术。

bpflock只允许类似容器管理器、systemd和其他以主机PID或网络命名空间运行的容器/程序访问完整的Linux功能,并限制那些以自己命名空间运行的容器或程序。如果bpflock在受限配置文件下运行,则所有程序/容器(包括特权程序/容器)都将被拒绝访问。

除此之外,bpflock还可以通过各种安全功能来保护Linux设备安全,比如说Linux安全模块+BPF等等。

 功能介绍 

1、内存保护:内核镜像锁定、内核模块保护、BPF保护; 2、进程保护:无文件内存执行、命名空间保护; 3、硬件攻击测试:USB保护; 4、系统和应用程序跟踪:跟踪应用程序执行、跟踪特权系统操作; 5、文件系统保护:只读Root文件系统保护、sysfs保护; 6、网络保护;

 工具开发 

依赖组件

bpflock需要使用下列组件:

1、Linux内核版本 >= 5.13,相关配置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CONFIG_BPF_SYSCALL=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_KPROBES=y
CONFIG_LSM="...,bpf"
CONFIG_BPF_LSM=y

2、一个启用了BTF的内核

启用BPF LSM支持

1、使用高级权限打开/etc/default/grub文件;

2、将下列内容添加到GRUB_CMDLINE_LINUX变量并保存:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"lsm=lockdown,capability,yama,apparmor,bpf"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GRUB_CMDLINE_LINUX="lsm=lockdown,capability,yama,apparmor,bpf"

3、更新grub配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo update-grub2

4、重启设备

Docker使用

下列命令可以使用默认的配置文件运行工具:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name bpflock -it --rm --cgroupns=host \
  --pid=host --privileged \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

无文件代码执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_FILELESSLOCK_PROFILE=restricted" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

内核模块执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_KMODLOCK_PROFILE=restricted" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

使用样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo unshare -p -n -f
# modprobe xfs
modprobe: ERROR: could not insert 'xfs': Operation not permitted

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
time="2022-02-07T06:50:25+01:00" level=info msg="event=syscall_execve tgid=52323 pid=52323 ppid=52288 uid=0 cgroupid=7014 comm=modprobe pcomm=bash filename=/usr/sbin/modprobe retval=0" bpfprog=execsnoop subsys=bpf


time="2022-02-07T06:50:25+01:00" level=info msg="event=lsm_kernel_read_file operation=loading module tgid=52323 pid=52323 ppid=52288 uid=0 cgroupid=7014 comm=modprobe pcomm=bash filename=xfs.ko retval=-1 reason=denied (restricted)" bpfprog=kmodlock subsys=bpf

内核镜像锁定

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_KIMGLOCK_PROFILE=baseline" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

使用样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo unshare -f -p -n bash
# head -c 1 /dev/mem
head: cannot open '/dev/mem' for reading: Operation not permitted

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
time="2022-02-07T06:57:22+01:00" level=info msg="event=syscall_execve tgid=52428 pid=52428 ppid=52288 uid=0 cgroupid=7014 comm=head pcomm=bash filename=/usr/bin/head retval=0" bpfprog=execsnoop subsys=bpf


time="2022-02-07T06:57:22+01:00" level=info msg="event=lsm_locked_down operation=/dev/mem,kmem,port tgid=52428 pid=52428 ppid=52288 uid=0 cgroupid=7014 comm=head pcomm=bash retval=-1 reason=denied (baseline)" bpfprog=kimglock subsys=bpf

BPF保护

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_BPFRESTRICT_PROFILE=baseline" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

使用样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo unshare -f -p -n bash
# bpftool prog
Error: can't get next program: Operation not permitted

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
time="2022-02-04T15:40:56Z" level=info msg="event=lsm_bpf tgid=2378 pid=2378 ppid=2364 uid=0 cgroupid=9458 comm=bpftool pcomm=bash filename= retval=-1 reason=baseline" bpfprog=bpfrestrict subsys=bpf


time="2022-02-04T15:40:56Z" level=info msg="event=lsm_bpf tgid=2378 pid=2378 ppid=2364 uid=0 cgroupid=9458 comm=bpftool pcomm=bash filename= retval=-1 reason=baseline" bpfprog=bpfrestrict subsys=bpf

 工具配置&环境配置 

假设你项目的bpflock目录中已经包含了 bpflock.yaml和bpf.d这两个配置文件了,接下来运行下列命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ls bpflock/
  bpf.d  bpflock.d  bpflock.yaml
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -v $(pwd)/bpflock/:/etc/bpflock \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

我们也可以使用“--env-file”命令来传递环境变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  --env-file bpflock.env.list \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

https://github.com/linux-lock/bpflock

参考资料

https://ebpf.io/

https://man7.org/linux/man-pages/man7/namespaces.7.html

https://docs.kernel.org/bpf/prog_lsm.html

https://github.com/linux-lock/bpflock/tree/main/deploy/configs/

https://github.com/linux-lock/bpflock/tree/main/docs/

https://github.com/linux-lock/bpflock/tree/main/docs/memory-protections.md#3-bpf-protection

https://github.com/libbpf/bpftool

https://go.dev/doc/install

https://docs.docker.com/develop/develop-images/build_enhancements/

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
15 条评论
热度
最新
文章中部分内容未更新,请各位开发者按照腾讯云IM官网文档指引操作:https://cloud.tencent.com/document/product/269/75291?from_wecom=1
文章中部分内容未更新,请各位开发者按照腾讯云IM官网文档指引操作:https://cloud.tencent.com/document/product/269/75291?from_wecom=1
回复回复2举报
新版本的解压缩工具链接挂了
新版本的解压缩工具链接挂了
回复回复点赞举报
clog解压缩工具又不能下载了,求上新
clog解压缩工具又不能下载了,求上新
22点赞举报
https://cloud.tencent.com/developer/article/2079442
https://cloud.tencent.com/developer/article/2079442
回复回复点赞举报
已更新,谢谢反馈
已更新,谢谢反馈
回复回复点赞举报
clog解压缩工具链接下载不了
clog解压缩工具链接下载不了
22点赞举报
https://cloud.tencent.com/developer/article/2079442
https://cloud.tencent.com/developer/article/2079442
回复回复点赞举报
已更新,谢谢反馈
已更新,谢谢反馈
回复回复点赞举报
TRTC的日志现在是clog扩展名不是xlog扩展名了,提供的工具已经不适用的样子
TRTC的日志现在是clog扩展名不是xlog扩展名了,提供的工具已经不适用的样子
22点赞举报
是的,最新的clog文件
是的,最新的clog文件
回复回复点赞举报
文档已更新
文档已更新
回复回复点赞举报
IM解析日志脚本无法正常下载
IM解析日志脚本无法正常下载
11点赞举报
好的,地址过期了,已更新下载地址。
好的,地址过期了,已更新下载地址。
回复回复点赞举报
所以呢?真机调试的时候,怎么导出日志
所以呢?真机调试的时候,怎么导出日志
11点赞举报
是啊,我也想知道
是啊,我也想知道
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
TRTC/MLVB/IM案例:SDK用户日志提取与管理的一种实现方案
音视频SDK(实时音视频TRTC/移动直播MLVB)、即时通信SDK都有默认把sdk运行的log输出到本地文件。本地文件详细记录了SDK各模块的操作和质量信息,在遇到问题需要分析,很多时候需要获取本地日志文件配合问题定位。但是,往往位于用户手机本地的文件,受限于用户的it知识,很难从手机里取出来并发送给运营人员。因此本文提供一种参考方案,供用户方便上传日志文件。
singleli
2020/10/25
1.8K0
TRTC/MLVB/IM案例:SDK用户日志提取与管理的一种实现方案
腾讯实时音视频(TRTC)如何打印日志
如果您产品已经上线了,线上用户反馈出现问题,开发者跟用户获取 SDK 输出到本地设备的日志,然后进行排查。各个系统日志文件的默认路径如下:
腾讯云-yyuanchen
2019/09/12
3.6K0
实时音视频(TRTC)如何打印日志?
开发者在集成 TRTCSDK 过程中,需要调试查看SDK内部打印的日志,可以参考以下代码实现日志输出。
腾讯云-yyuanchen
2019/07/25
2.8K0
实时音视频 TRTC 常见问题汇总---集成接入篇
TRTC 的日志默认压缩加密,后缀为 .xlog。日志是否加密是可以通过 setLogCompressEnabled 来控制,生成的文件名里面含 C(compressed) 的就是加密压缩的,含 R(raw) 的就是明文的。
腾讯视频云-Zachary
2019/11/01
14.8K1
实时音视频 TRTC 常见问题汇总---集成接入篇
iOS音视频接入 - TRTC常见问题
在 TRTC SDK 的示例代码中提供了一个叫做GenerateTestUserSig的开源模块,您只需要将其中的 SDKAPPID、EXPIRETIME 和 SECRETKEY 三个成员变量修改成您自己的配置,就可以调用genTestUserSig()函数获取计算好的 UserSig。
小明同学接音视频
2020/10/21
3K0
iOS音视频接入 - TRTC常见问题
iOS音视频接入 - TRTC实时屏幕分享
应用内分享的方案非常简单,只需要调用 TRTC SDK 提供的接口 startScreenCaptureInApp 并传入编码参数TRTCVideoEncParam 即可。该参数可以设置为 nil,此时 SDK 会沿用开始屏幕分享之前的编码参数。
小明同学接音视频
2020/10/13
2.6K0
iOS音视频接入 - TRTC实时屏幕分享
实时音视频SDK迎来最新的 6.8 版本
腾讯实时音视频=TRTC,全称Tencent Real-Time Communication。拥有QQ十几年来在音视频技术上的积累,致力于帮助企业快速搭建低成本、高品质音视频通讯能力的完整解决方案。 1.我们在 Windows 版本中新增了 socks5 的支持,对于金融和保险类客户,可以通过搭建代理服务器解决内外网通信问题。 该功能通过调用 ITXLiteAVNetworkProxy.h 中的 setSocks5Proxy 接口进行设置,可以参考 Socks5 代理服务器的的搭建方案: /*
腾讯即时通信IM
2020/06/19
2.5K0
腾讯实时音视频 TRTC SDK 升级至7.2版本
新版本 TRTCCloud 为移动端开放了 startScreenCapture、stopScreenCapture、pauseScreenCapture 和 resumeScreenCapture 四个接口,分别用于实现开始、结束、暂停和恢复屏幕分享的功能。
smiling
2020/04/24
1.6K0
腾讯实时音视频 TRTC SDK 升级至7.2版本
实时音视频V2版本,如何进行纯音频旁路直播
实时音视频TRTCSDK适用的业务场景是视频会议、坐席通话、在线教育等,也可以实现类似微信的语音通话、语音会议功能,
腾讯云-chaoli
2019/03/13
3.5K0
实时音视频V2版本,如何进行纯音频旁路直播
实时音视频SDK,如何实现类似微信的纯语音通话功能?
实时音视频TRTCSDK适用的业务场景是视频会议、坐席视频、在线教育等,如果您希望实现类似微信的语音通话、语音会议功能,TRTCSDK也是支持的,只需要微调几个参数就可以实现,将采集音视频的api,换成只采集音频。
腾讯云-chaoli
2019/03/05
8.4K2
实时音视频SDK,如何实现类似微信的纯语音通话功能?
云直播(CSS)“你问我答”第三季(2020.3月&4月)
(1)Android:SDK 默认会将 log 写到 /sdcard/Android/data/应用包名/files/log/tencent/liteav/ 下。
腾讯云音视频
2020/04/30
1.8K0
云直播(CSS)“你问我答”第三季(2020.3月&4月)
iOS音视频接入-TRTC底层架构组成了解
要更好的使用TRTC必须要先仔细的了解此产品,所谓知己知彼,百战不殆,我们就先了解下TRTC的底层基本架构组成。TRTC既然是提供实时音视频的SDK,那按照一般的音视频流程(采集-处理-渲染-传输)处理来看TRTC。
小明同学接音视频
2020/10/09
3.4K0
iOS音视频接入-TRTC底层架构组成了解
你问我答 | 实时音视频TRTC(2021年8月-10月)
实时音视频TRTC 你问我答 第2季 本期共解答10个问题 Q1:TRTC通话,实现大小屏切换,类似微信通话效果,点击自己的画面和对方的画面展示位置互换。 支持大小屏切换,使用updateView功能,但需要给TXCloudVideoView调用addview添加一个textureview。 解决方案: 通话过程中,保证双方通话画面正常; 直接调用stop,再调用start,会有一段时间黑屏; 直接调用updateView对调,会导致远端画面不显示,或者没有效果; updateView
腾讯云音视频
2021/11/26
1.3K0
【版本发布】腾讯实时音视频TRTC SDK 6.9
新的版本围绕视频画质、直播 CDN 融合、Android 10.0 系统兼容,以及云端录制等几个方面,增加了很多新的功能特性,期待您的使用:
shixin
2020/01/21
3K0
实时音视频(TRTC)常见问题
一般而言,媒体音量指播放音乐、视频的声音、游戏声音等的音量,而通话音量指打电话的音量,视频通话的音量。
腾讯云-yyuanchen
2019/09/27
13.8K1
实时音视频开发学习14 - 常见问题
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
金林学音视频
2020/08/30
2.9K0
实时音视频开发学习14 - 常见问题
实时音视频开发学习9 - 进房权限和画质
开启进房权限的目的是为了避免非会员模式能够进入高级房间,同时解决客户端限制被破解的问题。目前进房权限在iOS、Android、Windows、Electron、微信小程序和Chrome 浏览器都支持。
金林学音视频
2020/08/27
1.9K0
实时音视频开发学习9 - 进房权限和画质
实时音视频 TRTC 常见问题汇总---咨询问题篇
支持的平台包括 iOS、Android、Windows(C++)、Windows(C#)、Mac、Web、Electron、微信小程序、Flutter,更多详情请参见 平台支持。
腾讯视频云-Zachary
2019/11/01
13.5K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
产品动态 | 即时通信IM TUIKit 新增支持uni-app架构
uni-app 是目前比较火的跨平台利器,腾讯云即时通信 IM 正式推出支持三大平台的 uni-app TUIKit。TUIKit 是基于 IM SDK 实现的一套 UI 组件,其包含会话、聊天、群组管理等功能,基于 UI 组件您可以像搭积木一样快速搭建起自己的业务逻辑。 目前我们提供了示例客服群 + 示例好友的基础模版,在线客服功能包括: 支持发送文本消息、图片消息、语音消息、视频消息等常见消息。 支持常用语、订单、服务评价等自定义消息。 支持创建群聊会话、群成员管理等。 uni-app TUI
腾讯云音视频
2021/11/26
3.1K0
iOS音视频接入 - TRTC接入实时视频通话
(前面我们已经了解TRTC的基本架构和功能,现在我们就来接入实时视频通话功能,此功能和微信的一对一视频通话是一致的,需要两个角色,一个角色是主动呼叫、一个为呼叫接听,结合使用场景我们来接入此功能。
小明同学接音视频
2020/10/13
6.8K0
iOS音视频接入 - TRTC接入实时视频通话
推荐阅读
相关推荐
TRTC/MLVB/IM案例:SDK用户日志提取与管理的一种实现方案
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档