Snitch – एक ज़्यादा परिचित `ss`/`netstat` टूल
(github.com/karol-broda)- Snitch मौजूदा
ssयाnetstatकी तुलना में इंसानों के लिए अधिक पढ़ने योग्य नेटवर्क कनेक्शन निरीक्षण टूल है, जो टर्मिनल UI (TUI) और स्टाइल की गई टेबल फ़ॉर्मैट को सपोर्ट करता है - यह कनेक्शन स्थिति को रियल-टाइम इंटरैक्टिव स्क्रीन या एकबारगी आउटपुट होने वाले टेबल फ़ॉर्मैट में दिखाता है, और TCP/UDP, listening, connected state जैसी कई फ़िल्टरिंग देता है
- इसमें JSON·CSV आउटपुट, DNS/सेवा-नाम resolution, process monitoring और termination, तथा auto update जैसी सुविधाएँ शामिल हैं
- यह Homebrew, Go, Nix, Arch Linux, Shell Script, Binary सहित कई installation methods को सपोर्ट करता है, और macOS में Gatekeeper warning को अपने-आप हटाने की सुविधा भी शामिल है
- यह developers और system administrators के लिए नेटवर्क कनेक्शनों को सहज रूप से मॉनिटर करने और script automation में उपयोग करने के लिए एक उपयोगी टूल है
अवलोकन
- Snitch एक ऐसा टूल है जो नेटवर्क कनेक्शनों को विज़ुअली एक्सप्लोर करने देता है, और इसे
ssयाnetstatके विकल्प के रूप में डिज़ाइन किया गया है - यह TUI इंटरफ़ेस या स्टाइल की गई टेबल आउटपुट के माध्यम से कनेक्शन स्थिति दिखाता है
- यह Linux और macOS पर चलता है, और root privileges या CAP_NET_ADMIN permission की आवश्यकता हो सकती है
इंस्टॉलेशन के तरीके
- Homebrew:
brew install snitchकमांड से इंस्टॉल किया जा सकता है - Go:
go install github.com/karol-broda/snitch@latest - Nix/NixOS:
nix-env -iA nixpkgs.snitchया flake input के रूप में जोड़ा जा सकता है - Arch Linux (AUR) :
yay -S snitch-binयाparu -S snitch-bin - Shell Script:
curl -sSL ... | shकमांड से इंस्टॉल करें, डिफ़ॉल्ट path~/.local/binया/usr/local/binहै- macOS में install script अपने-आप quarantine attribute हटाती है
- Binary डाउनलोड: GitHub Releases पर Linux (.tar.gz, .deb, .rpm, .apk) और macOS (.tar.gz) versions उपलब्ध हैं
त्वरित शुरुआत
snitchचलाने पर इंटरैक्टिव TUI शुरू होता हैsnitch -lसिर्फ listening sockets दिखाता है, औरsnitch lsटेबल फ़ॉर्मैट में आउटपुट देकर बंद हो जाता हैsnitch ls -t -eसिर्फ connected TCP sessions दिखाता है, औरsnitch ls -pparseable simple output देता है
मुख्य कमांड
snitch/snitch top: रियल-टाइम में अपडेट होने वाली कनेक्शन सूची दिखाता है- विकल्प:
-l(listening),-t(TCP),-e(connected),-i(refresh interval) - key bindings:
j/kmove,t/uTCP·UDP switch,Kprocess terminate,/search,qquit आदि
- विकल्प:
snitch ls: एकबारगी टेबल आउटपुट, और अगर आउटपुट terminal height से बड़ा हो तो अपने-आप pager का उपयोग करता है- आउटपुट फ़ॉर्मैट: डिफ़ॉल्ट table,
-o json,-o csv,-p(simple),--no-headers(headers हटाएँ)
- आउटपुट फ़ॉर्मैट: डिफ़ॉल्ट table,
snitch json: JSON फ़ॉर्मैट आउटपुट, जिससे scripts में उपयोग किया जा सकता हैsnitch watch: निश्चित अंतराल पर JSON frames stream करता हैsnitch upgrade: version check और auto update
फ़िल्टर और resolution विकल्प
- सामान्य flags:
-t(TCP),-u(UDP),-l(listening),-e(connected),-4(IPv4),-6(IPv6) - DNS और service-name resolution:
--resolve-addrs,--resolve-ports,--no-cacheविकल्प उपलब्ध हैं- parallel DNS lookups और caching की जाती है, और
--no-cacheसे cache को disable किया जा सकता है
- विस्तृत फ़िल्टरिंग: process name, port, state आदि को
key=valueफ़ॉर्मैट में निर्दिष्ट किया जा सकता है- उदाहरण:
snitch ls proto=tcp state=listen,snitch ls proc=nginx
- उदाहरण:
आउटपुट फ़ॉर्मैट
- डिफ़ॉल्ट टेबल आउटपुट: process name, PID, protocol, state, local address·port दिखाता है
- simple output (-p) : parseable text फ़ॉर्म
- JSON/CSV आउटपुट: script automation और log analysis में उपयोगी
कॉन्फ़िगरेशन और environment variables
- कॉन्फ़िगरेशन फ़ाइल:
~/.config/snitch/snitch.tomlnumeric,dns_cache,theme(auto/dark/light/mono) सेट किए जा सकते हैं
- environment variables:
SNITCH_THEME,SNITCH_RESOLVE,SNITCH_DNS_CACHE,SNITCH_NO_COLOR,SNITCH_CONFIGआदि समर्थित हैं
सिस्टम आवश्यकताएँ
- Linux या macOS environment आवश्यक है
- Linux:
/proc/net/*से डेटा पढ़ता है, और पूरी process information के लिए root याCAP_NET_ADMINpermission चाहिए - macOS: system API का उपयोग करता है, और पूरी process information के लिए
sudoचाहिए
1 टिप्पणियां
Hacker News की राय
ss अपने default output में send/receive queue size जैसी कम ही ज़रूरत पड़ने वाली जानकारी तो दिखाता है, लेकिन socket किस application का है यह नहीं दिखाता
और यह default रूप से listening sockets को छोड़ देता है, जबकि ऐसे टूल का मुख्य उपयोग तो वही देखना होता है
मुझे पता है कि अच्छे defaults चुनना मुश्किल है, लेकिन यह लगभग हर चीज़ गलत चुनने का मामला है
समय के साथ users और use cases बदलते हैं, इसलिए defaults भी बदलने चाहिए, लेकिन Unix tools में output format ही API बन जाता है, इसलिए उसे बदलने पर backward compatibility की समस्या आती है
उदाहरण के लिए
ps auxलंबे process names को लगभग 7 अक्षरों तक काट देता है, उसकी वजह भी यही हैसंबंधित लेख: sh and the separation of data and representation
मुझे लगता है कि speed या features से कहीं ज़्यादा सहज usability महत्वपूर्ण है
netstat -utanऔरss -utanलगभग एक जैसी जानकारी दिखाते लगते हैंनाम टकरा रहा है, इसलिए कोई दूसरा नाम रखना बेहतर हो सकता है
Little Snitch आधिकारिक साइट
Snitch बस ss/netstat data को terminal में पढ़ने लायक तरीके से दिखाने वाला टूल है
उसी IT क्षेत्र में पहले से मिलते-जुलते नाम का टूल मौजूद है, फिर वही नाम दोबारा क्यों लेना, यह समझ नहीं आता
डेमो लिंक
GUI libraries में visually impaired users आदि के लिए कई सुविधाएँ होती हैं, जबकि TUI में वह हिस्सा कमज़ोर हो सकता है
screen width बहुत ज़्यादा घिर जाती है, इसलिए laptop पर vertical split में यह लगभग फिट ही नहीं होता
मेरा Snitch install करने का इरादा नहीं है। ss पहले से हर server पर installed होता है, और मुझे TUI की ज़रूरत नहीं है
Snitch personal use या workstation use के लिए ठीक हो सकता है, लेकिन servers पर ss ही standard है
Snitch workstation या homelab debugging के लिए ज़्यादा उपयुक्त है
send/receive queue अभी नहीं दिखती, लेकिन बाद में compact mode या toggle के रूप में जोड़ने की योजना है
क्या demo video में कोई ऐसी feature थी जो मुझसे छूट गई हो?
traffic monitoring feature योजना में है, लेकिन अभी implement नहीं हुई है
यह दिलचस्प है कि Go
module barenameकी अनुमति देता है। निजी projects में भी आखिरकार URL ही लिखना पड़ता है, इसलिए मुझे यह अच्छा pattern नहीं लगताcommit लिंक
@latestसे build करने पर यह ठीक से काम करेगाउदाहरण के लिए, अगर malware को इस तरह बनाया जाए कि वह कुछ देर इंतज़ार करे या केवल तब C&C से बात करे जब user network activity कर रहा हो, तो शायद उसका पता लगाना मुश्किल होगा
LD_PRELOAD rootkits libc function outputs में हेरफेर करके अपनी activity छिपा सकते हैं
ss शायद थोड़ा ज़्यादा भरोसेमंद है, और Snitch Go में लिखा गया है इसलिए libc का उपयोग नहीं करता, इस वजह से LD_PRELOAD rootkits के खिलाफ अधिक मजबूत हो सकता है
लेकिन ऐसे tools malicious traffic detection के लिए नहीं, बल्कि local debugging के लिए होते हैं
संदर्भ सामग्री: decloaker, arxiv paper, ACM paper, proc structure explanation
कुशल attacker तो वैसे भी normal traffic में घुलमिल कर काम कर सकता है
असली attacker response वाले network tools भी परफेक्ट नहीं होते (खोज शब्द: bro vantage point problem)
अभी मैं jnettop इस्तेमाल करता हूँ, लेकिन उसका UI पसंद नहीं है