Oniux

Tor项目推出Oniux工具,可匿名化任何Linux应用的网络流量

在推出隐私至关重要的应用和服务时,开发者希望确保每个数据包都只通过Tor网络。但是一次错误的代理设置,或SOCKS包装器之外的一次系统调用,都可能让数据突然暴露在Tor网络之外。 本月中旬,Tor项目宣布推出Oniux,这是一种新的小型命令行工具,可通过Tor网络安全地路由任何Linux应用程序,实现匿名网络连接。 与依赖用户空间的torsocks等传统工具不同,Oniux使用Linux命名空间为每个应用程序创建完全隔离的网络环境,即使应用程序是恶意的或配置错误的,也可以防止数据泄露。 Linux命名空间是Linux内核中一项隔离功能,它提供了一种安全的方式,将应用程序的某个部分与系统的其余部分隔离开来。命名空间有多种形式和形态。例如,网络命名空间、挂载命名空间、进程命名空间等等;每种命名空间都将一定量的系统资源与应用程序隔离开来。 Oniux使用Linux命名空间在内核级别隔离应用程序,因此所有流量都被迫通过Tor。与SOCKS不同,应用程序不会因为无法通过配置的SOCKS建立连接而意外泄露数据,而这种情况可能由于开发人员的错误而发生。 Tor的博客文章中写道:“我们很高兴推出oniux:一个小型命令行实用程序,为使用Linux命名空间的第三方应用程序提供Tor网络隔离。” Oniux基于Arti和onionmasq构建,可将任何Linux程序直接迁移到其自己的网络命名空间,并通过Tor进行路由,从而消除数据泄露的可能性。如果特定工作、行动或研究需要坚如磐石的流量隔离,Oniux可以满足需求。 它通过将每个应用程序放置在自己的网络命名空间中(无法访问主机的接口)来实现这一点,而是附加一个使用onionmasq通过Tor进行路由的虚拟接口(onion0)。 它还使用挂载命名空间为Tor-safe DNS注入自定义/etc/resolv.conf,并使用用户/PID命名空间以最小权限安全地设置环境。 此设置可确保任何Linux应用程序的防泄漏、内核强制Tor隔离。 而传统工具torsocks的工作原理是覆盖所有与网络相关的 libc 函数,以便通过Tor提供的 SOCKS 代理路由流量。虽然这种方法更具有跨平台性,但它有一个明显的缺点:不通过动态链接的libc进行系统调用的应用程序(无论是否出于恶意)都会泄露数据。 Torsocks通过使用“LD_PRELOAD”黑客来拦截动态链接的Linux应用程序中与网络相关的函数调用,并通过Tor SOCKS代理重定向它们。这种方法的问题在于,原始系统调用不会被Torsocks捕获,恶意应用程序可以避免使用libc函数来造成泄漏。 此外,Torsocks根本不能与静态二进制文件一起使用,并且不能提供真正的隔离,因为应用程序仍然可以访问主机的真实网络接口。 Tor项目发布了一个比较表,重点突出了两种解决方案之间的质量差异: oniuxtorsocks独立应用程序需要运行 Tor 守护进程使用 Linux 命名空间使用 ld.so 预加载 hack适用于所有应用程序仅适用于通过 libc 进行系统调用的应用程序恶意应用程序无法泄漏恶意应用程序可以通过原始汇编进行系统调用来泄漏仅限 Linux跨平台新的和实验性的经过 15 年多的实战检验使用 Arti 作为引擎使用 CTor 作为引擎用 Rust 编写用 C 语言编写 尽管Oniux具有明显的优势,但Tor强调该工具仍处于实验阶段,尚未在多种条件和场景下进行广泛测试,用户可以自行测试使用。 如何使用Oniux?🧅 首先,需要一个安装了Rust工具链的Linux系统。接着,可以使用以下命令安装Oniux: $ cargo install --git https://gitlab.torproject.org/tpo/core/oniux [email protected] 安装完成,就可以开始使用Oniux了!🙂 使用Oniux非常简单: # 使用 oniux 执行简单的 HTTPS 查询! $ oniux curl https://icanhazip.com <A TOR EXIT NODE IP ADDRESS> # oniux 当然也支持 IPv6! $ oniux curl -6 https://ipv6.