是否有一种实用的方法来检查 HTTP/HTTPS 并阻止从容器内到互联网的任意 POST 和 PUT 请求? (同时仍然允许 GET 请求)
我查看了 eBPF,但我不确定如何正确设置它,也不知道这是否是正确的工具。 谢谢。
对于普通 HTTP 流量,这是相当简单的,您可能只需使用解析 HTTP 的 cgroup_skb 程序类型来完成此操作,因为该方法始终位于请求的第一行,这相当容易做到。
但是 HTTPS 是一个完全不同的野兽。仅使用网络程序无法查看 TLS 连接的内部情况。有一个名为 eCapture 的项目,它使用 uprobes 附加到进程并捕获密钥交换,然后将该密钥发送到用户空间程序,该程序可以将其与加密流量一起使用来解密和查看内部。他们的目的是捕获加密流量的内容,而无需使用自定义证书+私钥
所以理论上你可以采用加密密钥捕获技术。您需要能够拦截流量,而不是像 eCapture 那样捕获流量。因此,您必须将加密流量重定向到将充当代理的用户空间应用程序,它将使用加密密钥来检查流量并阻止不需要的流量。
请注意,加密密钥窃取仅适用于“已知”库,本质上 eCapture 只是实现了最常见加密库的列表 + 对 Go 应用程序的支持,如果有人推出自己的加密或使用利基库,则可能无法普遍工作。