Présentation d’Oniux, un outil d’isolation Tor au niveau du noyau pour les applications Linux
(blog.torproject.org)- Oniux est un outil d’isolation au niveau du noyau qui force tout le trafic des applications Linux à transiter par le réseau Tor, afin de minimiser le risque de fuite de données
- En s’appuyant sur les namespaces Linux, il isole chaque application dans un environnement réseau indépendant et met en œuvre des communications sécurisées via Tor
- Contrairement à torsocks, il fonctionne aussi avec des applications sans libc ou des binaires statiques, bloquant ainsi les voies directes de fuite de données pour les applications malveillantes
- Oniux repose sur les nouveaux composants Arti et onionmasq et est écrit en Rust, ce qui renforce à la fois la sécurité et l’extensibilité
- À ce stade, Oniux reste un outil expérimental : il diffère donc de torsocks, éprouvé en matière de stabilité, mais attire l’attention comme solution de nouvelle génération pour l’isolation du trafic Tor
Présentation d’Oniux
Oniux est un utilitaire en ligne de commande qui améliore fortement le niveau de protection de la vie privée grâce à l’isolation réseau Tor sur Linux. Il est conçu pour permettre aux développeurs, activistes et chercheurs d’éliminer totalement les risques de fuite de données dus à une mauvaise configuration de proxy ou à un simple moment d’inattention. Oniux fonctionne au-dessus d’Arti et d’onionmasq, et isole n’importe quelle application Linux dans un namespace réseau distinct pour forcer tout son trafic à passer uniquement par le réseau Tor.
Qu’est-ce qu’un namespace Linux ?
- Un namespace est l’un des principaux mécanismes d’isolation du noyau Linux
- Il permet de séparer logiquement certaines ressources d’une application du reste du système
- Divers types de ressources, comme le réseau, les points de montage ou les processus, peuvent être isolés avec cette technique
- Chaque namespace sépare des ressources du système d’exploitation, ce qui permet un usage dans les environnements conteneurisés ou à des fins de sécurité
- Des solutions de conteneurisation bien connues comme Docker s’appuient sur les namespaces comme principe de base
Ce que signifie la combinaison de Tor et des namespaces
- Les namespaces permettent de protéger l’accès au réseau Tor d’une application arbitraire grâce à une isolation complète
- Chaque application est placée de manière indépendante dans un namespace réseau, avec pour seule interface exposée une interface personnalisée appelée onion0
- Comme l’application ne peut pas accéder aux interfaces réseau globales du système d’exploitation (par ex.
eth0), il devient possible de maximiser la sécurité - Contrairement à une approche par proxy SOCKS, il n’existe aucun risque de fuite directe de trafic, même en cas d’erreur ou de défaut
Comparaison entre Oniux et torsocks
- Torsocks intercepte les fonctions réseau de libc via la technique LD_PRELOAD afin de les rediriger vers le proxy SOCKS de Tor
- Oniux fonctionne grâce à l’isolation par namespaces, ce qui empêche à 100 % les fuites de trafic, y compris avec des binaires statiques ou Zig
- Principaux points de comparaison
- Oniux : pas besoin de démon Tor séparé, utilisation des namespaces, prise en charge de toutes les applications, blocage aussi des appels système bruts des applications malveillantes, Linux uniquement, nouveau/expérimental, basé sur Arti, écrit en Rust
- Torsocks : démon Tor requis, détournement via ld.so, prise en charge seulement des applications liées à libc, les appels système bruts peuvent fuir, multiplateforme, éprouvé depuis plus de 15 ans, moteur CTor, écrit en C
Utilisation d’Oniux
- Un système Linux avec environnement de développement Rust configuré est nécessaire
- Oniux peut être installé et exécuté simplement en ligne de commande
Exemples d’utilisation principaux :
- $ oniux curl https://icanhazip.com # Vérifier l’IP obtenue via le routage Tor
- $ oniux bash # Exécuter un shell entier avec isolation Tor
- $ oniux hexchat # Forcer aussi une application GUI à passer par Tor
- $ RUST_LOG=debug oniux curl ... # Prise en charge de la journalisation de débogage
Principe de fonctionnement interne
- Oniux crée un processus enfant dans des namespaces réseau, montage, PID et utilisateur indépendants via l’appel système
clone(2) - Le processus enfant monte
/procde manière distincte et ajuste les autorisations via le mappage UID/GID - Un fichier temporaire contenant les informations du serveur de noms est monté par liaison sur
/etc/resolv.confafin d’imposer l’usage d’un résolveur de noms basé sur Tor - onionmasq crée ensuite une interface TUN (
onion0) et lui assigne une IP ainsi que sa configuration - Le processus enfant transmet ensuite le descripteur de fichier de l’interface au processus parent via un socket de domaine Unix, tout en réduisant au minimum les privilèges
- Enfin, Oniux utilise des fonctionnalités de Rust pour exécuter la commande saisie par l’utilisateur
Le caractère expérimental d’Oniux
- Oniux est une première version construite sur des technologies récentes comme Arti et onionmasq
- Il fonctionne correctement à l’heure actuelle, mais manque encore du retour d’expérience accumulé pendant de longues années par un outil mature comme torsocks
- Divers retours d’usage en conditions réelles sont nécessaires pour améliorer la stabilité et les performances
Crédits et soutien
- Les auteurs remercient des développeurs comme 7ppKb5bW, qui ont contribué par leurs conseils sur smoltcp, la pile IP écrite en Rust, et sur l’utilisation des namespaces utilisateur
- Le projet oniux est maintenu grâce au soutien du The Tor Project et de la communauté, et les dons sont encouragés pour faire progresser la vie privée et les logiciels open source
2 commentaires
Tor n’est pas mal pour la vie privée, mais je ne sais pas vraiment si c’est un outil adapté à l’anonymat. On entend aussi dire que les nœuds de sortie sont déjà sous le contrôle des autorités étatiques.
Avis Hacker News
torsockettorifyremplissent globalement le même rôle, mais je les trouve moins robustes.cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0torsocks, le trafic passait par un démon tor local. Pourtant, même si l’on coupe le démon tor local,oniuxcontinue de fonctionner parfaitement, alors quetorifyettorsocksne marchent plus. La documentation confirme d’ailleurs que c’est bien ainsi que cela fonctionne. C’est assez fascinant. Cela marche aussi très bien dans Docker, mais j’ai dû utiliser l’option--privileged, et simplement copier le binaire dans un conteneurdebian:12a aussi fonctionné sans problèmedocker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12https://tpo.pages.torproject.net/core/arti/
orjail, sauf queorjailn’a pas eu de commit depuis 4 ans, même si cela continue de bien fonctionner comme script shell avec les outilsiptables/iprouteorjaila aussi une option pour ajouter une isolation supplémentaire viafirejail, ce queOniuxn’a pas encorehttps://github.com/orjail/orjail/blob/master/usr/sbin/orjail
https://raw.githubusercontent.com/orjail/orjail/master/usr/sbin/orjail
.toravec Chrome.9050. Il est aussi assez facile d’écrire directement un proxy SOCKS pour router le trafic. Par exemple, on peut envoyer le trafic d’un outil commesyncthingvia un proxysocks5https://github.com/acheong08/syndicate
hexchatest pris comme exemple, mais si l’on conserve les réglages du profil utilisateur, est-ce que le pseudonyme IRC ne fuit pas ?En lançant un navigateur, il y a aussi le risque de fuite de choses comme les cookies.