c - 如何在流量过滤器(tc-bpf)中保护 eBPF 防火墙
问题描述
我将在流量控制分类器(man 8 tc-bpf)上实施防火墙。防火墙用于过滤传出流量。但是,有一点使这项任务非常艰巨。我的用户空间代理必须知道,过滤器(分类器)是否已加载并通过自身传递所有传出流量。请告诉我:
- 如何保护加载的过滤器不被卸载(tc filter [replace | delete])或其他可能使其远离所有流量的措施?
- 如何连接流量控制过滤器更改以让用户空间代理采取适当的措施。
- 实现此类防火墙的其他方法。
解决方案
需要特权来设置(或删除)TC 分类器,因此非特权用户应该无法删除您的过滤器。我不记得所需的确切功能集,在最近的内核上这可能是
CAP_BPF
,并且CAP_NET_ADMIN
较旧的内核可能需要CAP_SYS_ADMIN
(root)。我认为当分类器发生变化时应该有一个 Netlink 通知,你可能会陷入其中。
这个问题非常广泛。您是在问如何在 Linux 上设置防火墙吗?有几个可用的框架。如果你想用 eBPF 来做,XDP 钩子(在驱动程序级别)是值得考虑的,它比钩子在 TC 上具有更好的性能。
推荐阅读
- dji-sdk - DJI 的 Android SDK 中包含哪些原生库?
- android - ARCore 如何识别具有重复图案的图像
- php - 如何在 PHP 中获取正则表达式模式
- mysql - 为什么 MySql 8.0.17 Select 查询性能比 Mysql 5.7.26 慢?
- php - eBay Trading API Notifications to web server似乎没有发送数据PHP
- node.js - 我应该如何为节点中的环境变量构建集中配置文件?
- android - 如何将 SHA-1 转换为 28 个字符的字符串(用于 Android 应用中的 FB 登录)
- r - R:清理pdf文本
- excel - 过滤列表调试
- security - Flutter/Dart 安全扫描