Linux ऐप्स के लिए kernel-स्तरीय Tor isolation टूल Oniux का परिचय
(blog.torproject.org)- Oniux एक kernel-स्तरीय isolation टूल है जो Linux ऐप्स के सभी ट्रैफिक को Tor नेटवर्क के जरिए मजबूरन रूट करता है, ताकि data leak के जोखिम को न्यूनतम किया जा सके
- यह Linux namespaces का उपयोग करके हर ऐप को स्वतंत्र नेटवर्क वातावरण में isolate करता है और Tor के जरिए सुरक्षित संचार लागू करता है
- मौजूदा torsocks से अलग, यह libc का उपयोग न करने वाले या static binaries पर भी काम करता है, जिससे malicious ऐप्स के सीधे data exfiltration paths बंद हो जाते हैं
- Oniux नया Arti, onionmasq आधारित टूल है, जिसे Rust में लिखा गया है, इसलिए security और scalability दोनों मजबूत होते हैं
- फिलहाल Oniux एक experimental tool है; stability के मामले में यह लंबे समय से परखे गए torsocks से अलग है, लेकिन अगली पीढ़ी के Tor traffic isolation समाधान के रूप में इस पर ध्यान दिया जा रहा है
Oniux का परिचय
Oniux Linux पर Tor नेटवर्क isolation के जरिए privacy security का स्तर काफी बढ़ाने वाला एक command-line utility है। इसे इस तरह डिज़ाइन किया गया है कि developers, activists और researchers गलत proxy settings या थोड़ी-सी लापरवाही से होने वाली data leak की संभावना को पूरी तरह रोक सकें। Oniux Arti और onionmasq के ऊपर काम करता है और किसी भी Linux ऐप को अलग network namespace में isolate करके उसका ट्रैफिक केवल Tor नेटवर्क से ही गुजरने के लिए मजबूर करता है।
Linux namespaces क्या हैं
- Namespaces Linux kernel की प्रमुख isolation सुविधाओं में से एक हैं
- ये application के कुछ resources को पूरे सिस्टम से तार्किक रूप से अलग कर देते हैं
- नेटवर्क, mount, process जैसे कई प्रकार के resources को इस तकनीक से isolate किया जा सकता है
- हर namespace operating system resources को अलग करता है, इसलिए इसका उपयोग container environments या security उद्देश्यों के लिए होता है
- Docker जैसी प्रमुख container solutions namespaces को अपने मूल सिद्धांत के रूप में इस्तेमाल करती हैं
Tor और namespaces के संयोजन का महत्व
- Namespaces किसी भी application की Tor नेटवर्क तक पहुंच को पूरी तरह isolated तरीके से सुरक्षित बनाते हैं
- हर ऐप को अलग network namespace में रखा जाता है और केवल
onion0नाम का custom interface ही उपलब्ध कराया जाता है - ऐप पूरे OS के network interfaces (जैसे
eth0) तक पहुंच नहीं बना पाता, जिससे सुरक्षा अधिकतम की जा सकती है - SOCKS-आधारित proxy तरीके के विपरीत, किसी गलती या खामी की वजह से सीधा traffic leak होने का जोखिम नहीं रहता
Oniux और torsocks की तुलना
- Torsocks, libc की network functions को LD_PRELOAD तकनीक से hook करके ट्रैफिक को Tor के SOCKS proxy से गुजारता है
- Oniux namespace isolation के जरिए काम करता है, इसलिए static binaries या Zig जैसे वातावरण में भी traffic leak को 100% रोक सकता है
- मुख्य तुलना
- Oniux: अलग Tor daemon की जरूरत नहीं, namespaces का उपयोग, सभी ऐप्स का समर्थन, malicious ऐप्स के raw syscalls भी block, केवल Linux, नया/experimental, Arti आधारित, Rust में लिखा गया
- Torsocks: Tor daemon जरूरी,
ld.sohack, केवल libc-linked ऐप्स का समर्थन, raw syscalls से leak संभव, cross-platform, 15+ वर्षों से परखा हुआ, CTor engine, C भाषा में लिखा गया
Oniux का उपयोग कैसे करें
- Linux सिस्टम पर Rust development environment तैयार होना चाहिए
- Command line से आसानी से oniux को install और run किया जा सकता है
मुख्य उपयोग उदाहरण:
- $ oniux curl https://icanhazip.com # Tor के जरिए मिला IP देखें
- $ oniux bash # पूरे shell को Tor isolation में चलाएं
- $ oniux hexchat # GUI ऐप को भी Tor के जरिए मजबूरन रूट किया जा सकता है
- $ RUST_LOG=debug oniux curl ... # debugging logging समर्थित है
अंदरूनी कार्यप्रणाली
- Oniux
clone(2)syscall से अलग network, mount, PID और user namespaces में child process बनाता है - Child process
/procको अलग से mount करता है और UID/GID mapping के जरिए permissions समायोजित करता है - Nameserver जानकारी वाली temporary file को
/etc/resolv.confपर bind mount करके Tor-आधारित name resolver का अनिवार्य उपयोग कराया जाता है - onionmasq के जरिए TUN interface (
onion0) बनाया जाता है और उसे IP assign व configure किया जाता है - Child process interface fd को Unix domain socket के जरिए parent process को भेजता है और privileges को न्यूनतम रखता है
- अंत में Rust की सुविधाओं का उपयोग करके user द्वारा दिया गया command चलाया जाता है
Oniux की experimental प्रकृति
- Oniux Arti, onionmasq जैसी नई तकनीकों पर आधारित शुरुआती संस्करण है
- इस समय यह ठीक से काम करता है, लेकिन torsocks जैसी लंबे समय की परिपक्वता और उपयोग अनुभव अभी इसमें नहीं है
- stability और performance सुधारने के लिए विविध वास्तविक उपयोग फीडबैक की जरूरत है
क्रेडिट और समर्थन
- Rust-आधारित IP stack smoltcp और user namespaces के उपयोग पर सलाह देने वाले 7ppKb5bW जैसे developers को धन्यवाद दिया गया है
- The Tor Project और community के समर्थन से oniux project चल रहा है, और privacy व open source software के विकास के लिए सहयोग की सिफारिश की गई है
2 टिप्पणियां
Tor प्राइवेसी के लिए तो ठीक-ठाक लगता है, लेकिन यह anonymity के लिए सच में उपयुक्त टूल है या नहीं, इस पर मुझे पूरा भरोसा नहीं है। ऐसी बातें भी सुनने में आती हैं कि exit nodes पर पहले से ही सरकारी एजेंसियों का कब्ज़ा है।
Hacker News राय
torsockऔरtorifyभी मूल रूप से वही काम करते हैं, लेकिन मजबूती के मामले में वे कम सुदृढ़ लगते हैंcargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0torsocksकी तरह ट्रैफ़िक लोकल में चल रहे tor daemon के ज़रिए बाहर जाता है। लेकिन लोकल tor daemon बंद कर देने पर भीoniuxठीक से काम करता है, जबकिtorifyऔरtorsocksनहीं करते। दस्तावेज़ देखने पर पता चला कि वास्तव में ऐसा ही है। काफ़ी दिलचस्प बात है। Docker में भी यह ठीक चलता है, लेकिन--privilegedविकल्प देना पड़ा, और सिर्फ़ binary कोdebian:12container में कॉपी करने पर भी यह सही काम करता मिलाdocker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12https://tpo.pages.torproject.net/core/arti/
Oniuxएक आधिकारिक रूप से समर्थित टूल लगता है। यहorjailजैसा है, लेकिनorjailमें 4 साल से कोई commit नहीं है, फिर भी वहiptables/iproutetools के साथ shell script के रूप में ठीक काम करता हैorjailमेंfirejailके ज़रिए अतिरिक्त isolation देने का विकल्प भी है, लेकिनOniuxमें अभी वह सुविधा नहीं हैhttps://github.com/orjail/orjail/blob/master/usr/sbin/orjail
https://raw.githubusercontent.com/orjail/orjail/master/usr/sbin/orjail
chromeसे tor वेबसाइटों तक पहुँचना संभव हैchromeमें Tor Browser जैसी विभिन्न anti-fingerprinting strategies नहीं हैं। सामान्य browser इस्तेमाल करने पर आप और भी ज़्यादा अलग नज़र आने वाले user बन जाते हैंchromeजैसे browser से भी पहुँचा जा सकता है। tor daemon का standard port 9050 है। सीधे socks proxy लिखकर traffic route करना भी काफ़ी आसान है। उदाहरण के लिए socks5 proxy का उपयोग करकेsyncthingजैसी जगहों पर traffic भेजा जा सकता हैhttps://github.com/acheong08/syndicate
hexchatदिया गया है, लेकिन अगर user की profile settings जस की तस रहें तो क्या IRC username लीक नहीं होगा?browser चलाने पर cookies वगैरह भी लीक हो सकती हैं