4 ポイント 投稿者 GN⁺ 2025-06-02 | 2件のコメント | WhatsAppで共有
  • Oniuxは、LinuxアプリのすべてのトラフィックをTorネットワークへ強制的に迂回させ、データ漏えいリスクを最小化するカーネルレベルの分離ツール
  • Linux名前空間を活用し、各アプリを独立したネットワーク環境に隔離して、Tor経由の安全な通信を実現
  • 従来のtorsocksとは異なり、libcを使わない、または静的バイナリでも動作し、悪意あるアプリによる直接的なデータ漏えい経路を遮断
  • Oniuxは新しいArti、onionmasqベースでRust言語により書かれており、セキュリティと拡張性の両方を強化
  • 現在のOniuxは実験的ツールであり、安定性の面では実績あるtorsocksとは異なるものの、次世代のTorトラフィック分離ソリューションとして注目される

Oniuxの紹介

Oniuxは、LinuxでTorネットワーク分離を通じて個人情報保護の水準を飛躍的に高めるコマンドラインユーティリティ。開発者、活動家、研究者が、誤ったプロキシ設定やちょっとした不注意によるデータ漏えいの可能性を完全に封じられるよう設計されている。OniuxはArtionionmasqの上で動作し、あらゆるLinuxアプリを個別のネットワーク名前空間に隔離して、トラフィックをTorネットワーク経由にのみ強制的に迂回させる。

Linux名前空間とは何か

  • 名前空間はLinuxカーネルの主要な分離機能
  • アプリケーションの一部リソースをシステム全体から論理的に分離する
  • ネットワーク、マウント、プロセスなどさまざまな資源をこの仕組みで分離可能
  • それぞれの名前空間はOSリソースを分離し、コンテナ環境やセキュリティ目的に使われる
  • Dockerなど代表的なコンテナソリューションが名前空間を基本原理として活用している

Torと名前空間を組み合わせる意味

  • 名前空間は任意のアプリケーションによるTorネットワークアクセスを完全分離で保護する
  • 各アプリをネットワーク名前空間に独立して配置し、onion0というカスタムインターフェースのみを公開する
  • アプリはOS全体のネットワークインターフェース(例: eth0)にアクセスできず、安全性の最大化を達成できる
  • SOCKSベースのプロキシ方式とは異なり、どのようなミスや欠陥があっても直接的なトラフィック漏えいのリスクがない

Oniuxとtorsocksの比較

  • Torsocksはlibcのネットワーク関数をLD_PRELOAD方式でフックし、TorのSOCKSプロキシへ迂回させる
  • Oniuxは名前空間分離で動作するため、静的バイナリやZigなどでもトラフィック漏えいを100%防止する
  • 主な比較内容
    • Oniux: 別個のTorデーモン不要、名前空間を使用、すべてのアプリをサポート、悪意あるアプリのrawシステムコールも遮断、Linux専用、新規・実験的、Artiベース、Rust製
    • Torsocks: Torデーモンが必要、ld.soハック、libc連携アプリのみ対応、rawシステムコールでは漏えいの可能性あり、クロスプラットフォーム、15年以上の実績、CTorエンジン、C言語製

Oniuxの使い方

  • Rust開発環境が構築されたLinuxシステムが必要
  • コマンドラインから簡単にoniuxをインストールして実行可能

主な使用例:

  • $ oniux curl https://icanhazip.com # Tor経由で取得したIPを確認
  • $ oniux bash # シェル全体をTor分離で実行
  • $ oniux hexchat # GUIアプリもTorへ強制迂回可能
  • $ RUST_LOG=debug oniux curl ... # デバッグログをサポート

内部動作の仕組み

  • Oniuxはclone(2)システムコールで、独立したネットワーク・マウント・PID・ユーザー名前空間内に子プロセスを生成する
  • 子プロセスは/procを個別にマウントし、UID/GIDマッピングで権限を調整する
  • ネームサーバー情報を含む一時ファイルを/etc/resolv.confへバインドマウントし、Torベースのネームリゾルバの使用を強制する
  • onionmasqで**TUNインターフェース (onion0)**を作成した後、IPの割り当てと設定を行う
  • 子プロセスがインターフェースfdをUnixドメインソケットで親プロセスへ渡し、権限を最小化する
  • Rustの機能を利用して、最終的にユーザーが入力したコマンドを実行する

Oniuxの実験的な性質

  • OniuxはArti、onionmasqなどの新技術を基盤として作られた初期バージョン
  • 現時点では正常に動作するが、torsocksのように長年にわたり成熟した事例の経験はまだ不足している
  • 安定性の確保と性能改善のために、多様な実運用からのフィードバックが必要

クレジットと支援

  • RustベースのIPスタックであるsmoltcpや、ユーザー名前空間の活用方法について開発に助言した7ppKb5bWなどの開発者への謝意を表明
  • The Tor Projectおよびコミュニティの支援によりoniuxプロジェクトは維持されており、プライバシーとオープンソースソフトウェアの発展のため支援が呼びかけられている

2件のコメント

 
ndrgrd 2025-06-03

Tor はプライバシーには悪くないように思いますが、匿名性に適したツールかどうかはよく分かりませんね。出口ノードはすでに国家機関に掌握されているという話もありますし。

 
GN⁺ 2025-06-02
Hacker Newsのコメント
  • 10年ほど前、ネットワーク名前空間がホットな話題として浮上していた頃に、Tor開発者とこのテーマについて話したことがある。そのときのフィードバックは、名前空間による分離は人々に安心感を与える一方で、依然として多くの識別可能な情報が漏れうるため、それ以上は推し進めなかった、というものだったと記憶している
    • Torチームがその点を強調したのは戦略的に失敗だったと思う。深刻な脅威にさらされている人たちはTor Browserを使い、他の情報漏えい経路にも気を配るべきなのはその通りだが、Torがみんなのデフォルトになっていれば、大規模監視そのものはずっと難しくなっていたはずだと思う。今は誰がTorを使っているか自体が監視対象だが、全員が使っていればその情報は意味を失う
    • torsocktorifyも基本的には同じ役割を果たすが、堅牢性の面ではやや劣ると感じる
  • インストールガイドにあるコマンドのままだと動かない。バージョン番号を0.4.0から0.5.0に変える必要がある
    cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0
  • 自分はてっきり、torsocksのようにローカルで動くtorデーモン経由でトラフィックが出ていくのだと思っていた。ところがローカルのtorデーモンを止めてもoniuxは問題なく動く一方で、torifytorsocksは動かない。ドキュメントを見ると実際そのようになっている。とても興味深い。dockerでも問題なく動いたが、--privilegedオプションが必要で、単にバイナリをdebian:12コンテナにコピーするだけでも正常に動作した
    docker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12
  • これがすべてTCPにしか当てはまらないのか気になる。つまり、非TCPトラフィックも保護されるのだろうか
    • 詳しくはわからないが、https://gitlab.torproject.org/tpo/core/onionmasqを見ると、TCPだけでなくUDPもサポートするユーザースペースのネットワークスタックを作ってTorネットワークへ転送する試みのようだ
    • Tor Browserを使っている人たちがYouTubeやDNS、そしてHTTP/3をどう扱っているのか気になる
    • 非TCPトラフィックはルーティングされず、そのまま送信に失敗する仕組み
  • Oniuxは公式にサポートされているツールのようだ。orjailに似ているが、orjailは4年間コミットがない一方で、今でもiptables/iprouteツールとシェルスクリプトでうまく動いている
    orjailにはfirejailで追加の分離を行えるオプションもあるが、Oniuxにはまだその機能はない
    https://github.com/orjail/orjail/blob/master/usr/sbin/orjail
  • これでchromeからtorのWebサイトにアクセスできるのか気になる
    • できなくはないが、そうしないことを勧める。chromeにはTor Browserにある各種のanti-fingerprinting戦略がない。普通のブラウザを使うと、かえって目立つユーザーになってしまう
    • 実際のところ、以前からプロキシ環境変数(あるいは設定)を正しく指定すれば、chromeのようなブラウザからでもアクセスできる。torデーモンの標準ポートは9050。socksプロキシを自分で書いてトラフィックをルーティングするのも比較的簡単だ。例えば、socks5プロキシを使ってsyncthingのようなものにトラフィックを送ることもできる
      https://github.com/acheong08/syndicate
  • 例としてhexchatが挙がっているが、ユーザーのプロファイル設定をそのまま使うなら、IRCのユーザー名が漏れるのではないかと思う。
    ブラウザを起動すればCookieのようなものも漏れる可能性がある
    • 役割の分離が重要だ。Torはフィンガープリンティング対策に多大な努力を払っているが、根本的にTorとOniuxの目的は送信元IPを追跡不能にすることにある。Tor経由でGmailにログインしたりすれば同じ問題が起きる(HTTPSが適用されていない限り)
    • ユーザー名が漏れる、とはどういう意味なのか気になる。実際には、そのユーザー名がTorを使っていることを示すだけだ。同じIRCホストに同じユーザー名で継続的に接続していれば、それらが同一人物だということまでは漏れうる。匿名性を重視するなら、IRCはかなり危険な手段だと言える。ネットワーク切断イベントなどと結び付けてログを取る人も多いので、相関関係が露出する可能性がある
  • DevEx(開発者体験)の面が本当に良くできていて、バカでも使えるレベルだと感じる。開発チームに拍手を送りたい
    • 実際にはそこまでではないと思う。バカはいつだって創造的だし、匿名性を保証するには非常に慎重な運用が必要で、そのレベルを大多数のユーザーに期待するのは難しい
  • コードをCで書き直してくれたら喜んで使うつもり
    • すでにRustで書かれている。なぜわざわざC版を望むのか気になる