- यह एक ऐसा टूल है जिससे एप्लिकेशनों के network connections को visualize और control किया जा सकता है, और यह देखा जा सकता है कि कौन-सा प्रोग्राम किस server से communicate कर रहा है
- Connections View में real-time और पुराना traffic app के हिसाब से दिखता है, और एक क्लिक में connection block करने तथा data usage track करने की सुविधा मिलती है
- Blocklists और Rules फीचर के जरिए अनचाहे traffic को category या विस्तृत शर्तों के आधार पर बारीकी से control किया जा सकता है
- अंदरूनी तौर पर यह eBPF का उपयोग करके kernel level पर connections को monitor करता है, और web UI के जरिए PWA रूप का interface देता है
- यह security tool नहीं बल्कि privacy-केंद्रित tool है; सामान्य software की बाहरी communications को block करने के लिए उपयुक्त है, लेकिन advanced attacks से बचाव में इसकी सीमाएँ हैं
अवलोकन
- Little Snitch for Linux एक ऐसा टूल है जो एप्लिकेशनों के network connections को real-time में visualize और control कर सकता है
- यह देखा जा सकता है कि कौन-सा application किस server से communicate कर रहा है
- अनचाहे connections को block करना, traffic logs रखना, और data usage track करने की सुविधा देता है
- Linux kernel 6.12 या उससे ऊपर और BTF kernel support आवश्यक है
- web UI को
http://localhost:3031/ पर access किया जा सकता है, और इसे PWA (Progressive Web App) के रूप में install किया जा सकता है
कनेक्शन मॉनिटरिंग
- Connections View में मौजूदा और पिछले network activity को application के हिसाब से दिखाया जाता है
- rules और blocklists द्वारा blocked items, data usage, और traffic history दिखाई जाती है
- हाल की activity, data की मात्रा, और नाम के आधार पर sort और filter किया जा सकता है
- एक क्लिक में connection block किया जा सकता है
- नीचे दिया गया traffic diagram समय के साथ data की मात्रा को visualize करता है
- किसी खास हिस्से को drag करके zoom करने पर केवल उसी अवधि की activity filter होकर दिखाई जाती है
ब्लॉकलिस्ट प्रबंधन
- Blocklists फीचर से अनचाहे traffic categories को एक साथ block किया जा सकता है
- remote source से अपने-आप download होकर updated रहता है
- supported formats: प्रति domain एक line, प्रति hostname एक line,
/etc/hosts format (IP + hostname), CIDR network range
-
wildcard, regular expression, glob, और URL-आधारित formats समर्थित नहीं हैं
- efficiency के लिए domain-based lists का उपयोग recommended है
- उदाहरण lists: Hagezi, Peter Lowe, Steven Black, oisd.nl
- macOS के लिए
.lsrules format Linux version के साथ compatible नहीं है
कस्टम नियम
- Rules फीचर blocklists की तुलना में अधिक बारीक control देता है
- इसे specific process, port, और protocol के स्तर पर configure किया जा सकता है
- rules list को sort और filter किया जा सकता है
- rules के जरिए विस्तृत network control policy बनाई जा सकती है
एक्सेस सुरक्षा
- डिफ़ॉल्ट रूप से web interface को local पर चल रहे सभी processes access कर सकते हैं
- malicious applications द्वारा rules बदलने, blocklists संशोधित करने, या filters disable करने की संभावना रहती है
- इसे रोकने के लिए authentication required सेट किया जा सकता है
- विस्तृत settings advanced configuration में की जाती हैं
आंतरिक संरचना
- eBPF का उपयोग करके Linux network stack में hook किया जाता है
- eBPF program outgoing connections को monitor करता है और data को daemon तक पहुँचाता है
- daemon statistics tracking, rules processing, और web UI उपलब्ध कराने का काम करता है
- eBPF program और web UI का source code GitHub पर public है
उन्नत कॉन्फ़िगरेशन
- मूल UI केवल मुख्य settings दिखाता है, जबकि advanced settings को text files से configure किया जाता है
- बदलाव के बाद
littlesnitch daemon को restart करना आवश्यक है
- default settings path:
/var/lib/littlesnitch/config/
- इसे सीधे edit न करें; जिस file को बदलना हो उसे
/var/lib/littlesnitch/overrides/config/ में copy करके edit करें
- override directory की settings हमेशा प्राथमिकता से लागू होती हैं
- मुख्य settings files
web_ui.toml: network address, port, TLS, authentication settings
- यदि कई users access कर सकते हों, तो authentication enable करना आवश्यक है
- loopback के बाहर expose करने पर अतिरिक्त TLS आवश्यक है
main.toml: rules से match न होने वाले connections के default behavior की setting
- default रूप से allow है, आवश्यकता होने पर deny में बदला जा सकता है
- गलत configuration पर system access बंद होने का जोखिम है
executables.toml: executable grouping rules
- version numbers हटाकर एक ही app के कई versions को एक रूप में दिखाया जा सकता है
- shell और app management processes के parent relationships define किए जा सकते हैं
- community feedback के आधार पर इसमें लगातार सुधार होता है
- eBPF program और web UI को user-built versions से बदला जा सकता है
- override directory में मौजूद version को प्राथमिकता दी जाती है
सीमाएँ
- इसे security tool नहीं बल्कि privacy tool के रूप में डिजाइन किया गया है
- यह macOS version की तुलना में सरल है, और eBPF constraints के कारण इसकी functional limitations हैं
- eBPF में storage space और program complexity की सीमाएँ होती हैं
- traffic बहुत अधिक होने पर cache tables भर सकती हैं, जिससे packets, processes, और DNS names के बीच mapping अधूरी हो सकती है
- IP address से मूल queried hostname को restore करते समय heuristics का उपयोग किया जाता है
- macOS version deep packet inspection (DPI) से अधिक सटीक mapping करता है
- सामान्य software की बाहरी communications को monitor और block करने के लिए यह उपयुक्त है, लेकिन
advanced attackers के खिलाफ system defense के लिए उपयुक्त नहीं है
लाइसेंस
- यह 3 components से बना है
- eBPF kernel program और web UI को GNU GPL v2 के तहत public किया गया है, और GitHub पर उपलब्ध हैं
- daemon(
littlesnitch --daemon) proprietary है, लेकिन मुफ़्त उपयोग और redistribution की अनुमति है
1 टिप्पणियां
Hacker News की राय
मैं Little Snitch या Open Snitch इस्तेमाल नहीं करता, लेकिन यह जानने की जिज्ञासा थी कि क्या अनुमत प्रोग्राम का दुरुपयोग करने वाले अनुरोधों को भी ब्लॉक किया जा सकता है
उदाहरण के लिए, अगर
suspicious.pyFirefox को कॉल करके डेटा अपलोड करे, तो क्या फ़ायरवॉल इसे रोक सकता हैअगर स्क्रिप्ट को
#!/bin/interpreterसे चलाया जाए तो स्क्रिप्ट पाथ पर नियम लागू होते हैं, लेकिनinterpreter scriptफ़ॉर्मेट में चलाने पर व्यवहार अलग होता हैOpen Snitch में parent tree में python process शामिल है या नहीं जैसी शर्तों के आधार पर बारीकी से matching की जा सकती है
पुराने Windows फ़ायरवॉल Outpost और Zone Alarm ऐसे व्यवहार को पहचानने के लिए Leak Control फीचर देते थे
ज़्यादातर distributions में यह सुविधा होती है, लेकिन आम उपयोगकर्ता नियम सीखने या सेट करने का काम कम ही करते हैं
Fedora 43 पर चलाकर देखा, लेकिन इसने सभी CPU cores घेर लिए और 50K lines के logs छोड़कर fail हो गया
BPF_PROG_LOAD syscall returned Argument list too longत्रुटि आईARM64 VM में load तो होता है, लेकिन process की पहचान नहीं कर पाता
eBPF compatibility issues की जाँच चल रही है और सीमित resources के कारण समय लगेगा
Fedora का default file system Btrfs होने के कारण process identification संभव नहीं है, और इसे version 1.0.1 में ठीक करने की योजना है
Linux उपयोगकर्ता होने के नाते मैं code openness को महत्व देता हूँ
OpenSnitch + OpenSnitch-UI का संयोजन मेरे लिए पूरी तरह संतोषजनक है
जिज्ञासा थी कि Linux में paid tool model कितना व्यावहारिक है
ज़्यादातर चीज़ें free, donation-based, या open-core model में मिलती हैं
Little Snitch ने Linux version मुफ़्त में क्यों जारी किया, क्या इसके पीछे “Linux में पैसा नहीं बनता” वाली सोच है या कोई और कारण, यह जानना चाहूँगा
मैं भी network traffic संभालने वाले closed-source program को लेकर असहज महसूस करता हूँ
इसके बजाय मैं हर साल FOSS projects को हज़ारों डॉलर दान करता हूँ
लेकिन ऐसे उपयोगकर्ता कम हैं, इसलिए पूरी तरह open source से कमाई करना कठिन है
ख़ासकर फ़ायरवॉल जैसे high-privilege code पर open source न हो तो भरोसा करना मुश्किल है
उन्होंने कहा कि इसका नतीजा क्या होगा, यह देखना दिलचस्प होगा
संबंधित ब्लॉग पोस्ट: Little Snitch for Linux परिचय
पहले Windows के लिए ZoneAlarm हुआ करता था
मैं हमेशा सोचता था कि Linux में ऐसा कुछ क्यों नहीं था
Direwall code फिर से देखा तो पुराना C style अब भी वैसा ही दिखता है
यह socket library को patch करके काम करता था, अब भी compile होगा या नहीं, यह सोच रहा हूँ
शुरुआत में यह शोर मचाते हुए पूछता था, लेकिन सीखने के बाद शांत हो जाता था—यह बात उसने साफ़ समझाई थी
इसी वजह से उसने users का भरोसा जीता, और मैं भी उसी कारण इसे recommend करता था
जब commercial software Linux में आने लगा, तब network monitoring की इच्छा बढ़ी
Windows में मनमानी execution को सीमित कर पाना अच्छा लगता था
मैं लंबे समय से Little Snitch इस्तेमाल करता आया हूँ और हर network request को manually approve करता हूँ
लेकिन kernel extension स्तर की permissions वाले program पर कितना भरोसा किया जा सकता है, इस पर सोचता हूँ
कंपनी या डेवलपर के बारे में बहुत कम जानकारी है, इसलिए जिज्ञासा है
eBPF component GPLv2 open source के रूप में जारी है, और GitHub code में देखा जा सकता है
लेकिन daemon को root privileges के साथ चलना पड़ता है, इसलिए SELinux जैसे access control से इसे सीमित करना ज़रूरी है
यह पहला release है, इसलिए bug reports संभाले जा रहे हैं, और उन्होंने कहा कि Linux environments की विविधता देखकर वे चकित हैं
macOS में kernel extensions नहीं बल्कि Network Extension API इस्तेमाल होता है
अगर उद्देश्य network observation है, तो Sniffnet जैसा GUI sniffer भी मौजूद है
Linux port जारी होने पर बधाई
पूरी तरह open source और terminal-based alternative के रूप में मैं अपने द्वारा maintained RustNet का परिचय देना चाहता हूँ
यह TUI-based real-time packet monitoring tool है, फ़ायरवॉल नहीं, लेकिन Landlock के ज़रिए खुद को sandbox करता है
OpenSnitch से तुलना जानना चाहता था
OpenSnitch GitHub
यह Linux version की technical limitations के कारण है
eBPF आधारित होने के कारण cache overflow होने पर process mapping संभव नहीं रहती, और macOS की तरह deep packet inspection का उपयोग नहीं किया जा सकता
official explanation में यह विस्तार से बताया गया है
संबंधित लेख
मैं OpenSnitch को संतोषजनक ढंग से इस्तेमाल कर रहा हूँ
लेकिन अच्छा होगा अगर इसमें plugin system आए, जो user behavior और network connections को साथ में analyze करे, और सिर्फ अप्रत्याशित connections के लिए notifications दे
popup की जगह CLI-आधारित auto-allow wrapper भी हो तो सुविधाजनक रहेगा