3 पॉइंट द्वारा GN⁺ 2024-08-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • OpenSnitch GNU/Linux के लिए एक एप्लिकेशन फ़ायरवॉल है, जो एप्लिकेशन के बाहरी कनेक्शनों को इंटरैक्टिव तरीके से फ़िल्टर करने पर केंद्रित है
  • यह पूरे सिस्टम में विज्ञापन, ट्रैकर और malware domains को ब्लॉक कर सकता है, और GUI में nftables-आधारित सिस्टम फ़ायरवॉल भी सेट किया जा सकता है
  • GUI इनपुट पॉलिसी सेट करने, inbound services को अनुमति देने जैसी system rules configuration को सपोर्ट करता है, और कई nodes को centrally manage किया जा सकता है
  • इंस्टॉलेशन में deb/rpm पैकेज डाउनलोड करके apt या dnf से install करने के बाद opensnitch-ui चलाना या application menu से GUI खोलना शामिल है
  • अनपेक्षित कनेक्शनों को intercept करने के उदाहरण साझा करने के लिए Show and tell discussion space और SIEM integration देता है, जिससे operational environments में connection monitoring के लिए इसका उपयोग किया जा सकता है

OpenSnitch क्या करता है

फ़ायरवॉल और node management features

  • GUI में system firewall settings configure की जा सकती हैं
    • nftables-आधारित settings को handle करता है
    • input policy configuration, inbound services को allow करना आदि set किए जा सकते हैं
  • Central GUI से कई nodes manage किए जा सकते हैं
  • SIEM integration support करता है

डाउनलोड और इंस्टॉलेशन

  • deb/rpm पैकेज GitHub Releases से डाउनलोड किए जा सकते हैं
  • deb package install करना:
    • sudo apt install ./opensnitch*.deb ./python3-opensnitch-ui*.deb
  • rpm package install करना:
    • sudo dnf install opensnitch*.rpm
  • Install करने के बाद opensnitch-ui चलाएँ या application menu से GUI शुरू करें
  • ज़्यादा विस्तृत installation जानकारी के लिए documentation देखें

उपयोग के मामले और भागीदारी

  • OpenSnitch द्वारा अनपेक्षित connections intercept करने के उदाहरण Show and tell discussion में इकट्ठा किए गए हैं
  • अगर कोई अनपेक्षित connection मिले, तो उसे नई discussion के रूप में submit किया जा सकता है

Project जानकारी

  • OpenSnitch GPL3 license का उपयोग करता है
  • Sponsorship GitHub repository के दाईं ओर Sponsor this project section से की जा सकती है
  • मौजूदा maintainers master branch commit history में देखे जा सकते हैं
  • Contributors की list contributors graph में देखी जा सकती है
  • Translation Weblate पर की जाती है

1 टिप्पणियां

 
GN⁺ 2024-08-11
Hacker News की टिप्पणियां
  • OpenSnitch को interactive firewall के रूप में काफ़ी इस्तेमाल करने की कोशिश की, लेकिन एक समस्या है—OpenSnitch की गलती से ज़्यादा, मुझे यह भी नहीं पता कि इसे हल किया जा सकता है या नहीं
    उदाहरण के लिए, terminal में curl चलाने पर हर बार अनुमति देनी है या नहीं तय करना पड़ता है, या उसे स्थायी रूप से allowlist में डालना पड़ता है
    लेकिन अगर curl या wget जैसे सामान्य-purpose tools को allow कर दें, तो compromised machine पर malware भी उन्हीं tools का इस्तेमाल करके firewall alert के बिना इंटरनेट तक जा सकता है, यानी दरवाज़ा पूरी तरह खुल जाता है

    • subdomain wildcard या subnet इस्तेमाल करने पर काफ़ी जल्दी एक स्थिर rule set बन जाता है, और उसके बाद सिर्फ़ कभी-कभार नए endpoint requests की समीक्षा करनी पड़ती है
      नया access होने पर allow करना है या नहीं पूछा जाएगा—यह भरोसा शुरुआती झंझट के लायक है, और आदत पड़ने पर management भी काफ़ी आसान हो जाता है
      expiring rules भी अक्सर इस्तेमाल करता हूं। जैसे, अगर किसी installer पर भरोसा करके उसे थोड़ी देर खुली छूट देनी हो, तो executable के लिए निकट भविष्य में expire होने वाला rule खोल देता हूं। विकल्प permanent, reboot तक, अगले 30 seconds, अगले 5 minutes वगैरह हैं, और बहुत सारे endpoints वाले काम भी काफ़ी सरल हो जाते हैं, बिना कोई permanent hole छोड़े
    • ऐसा भी लगता है कि dev user के लिए सभी curl/wget traffic allow किया जा सकता है, और normal user से detect करते रह सकते हैं
      development tasks को su -c curl … dev जैसे चलाना होगा
      अगर malicious program सामान्य user space में चल रहा है, तो app firewall curl और wget के इस्तेमाल को ठीक से पकड़ सकता है
      हर बार password डालना झंझट है, इसलिए PAM को YubiKey या biometric authentication के साथ set कर सकते हैं, और इस user को login-ineligible और password-less रखना चाहिए
    • यह थोड़ा अजीब लगता है। अगर सच में चिंता है, तो curl या wget का नाम बदला भी जा सकता है
      mobile पर application-level firewall इस्तेमाल करता हूं, लेकिन program name को allowlist में डालने के बजाय किसी specific program को किसी specific domain/IP address तक access की अनुमति देता हूं
      अनुभव के हिसाब से किसी program या malware के external communication को रोकने का सबसे आसान तरीका DNS access block करना है। दशकों से ऐसा कर रहा हूं और अब भी यह बेहतरीन काम करता है। external communication करने वाले programs/malware का “99%” hardcoded IP पर नहीं, DNS पर निर्भर होता है
      जिन दुर्लभ programs/malware को DNS की जरूरत नहीं होती, उन्हें भी detect करना आसान है, और DNS में सिर्फ़ specific domains allow करता हूं। आजकल जरूरी IP addresses वाली local zone file भी नहीं रखता; forward proxy domain→IP mapping संभालता है। proxy जिस allowlist को पढ़ता है, वह zone file जैसी है लेकिन उससे भी simple text file है
    • शायद ऐसा configure किया जा सकता है कि अगर parent command trusted command हो, जैसे user-owned bash/zsh, तो curl को pass कर दे और नहीं तो block करे। हालांकि यह काफ़ी झंझट वाला लगता है
    • ऐसी समस्या हल की जा सकती है। कुछ बड़े EDR जो मिलते-जुलते तरीके से काम करते हैं, वे block किए जाने वाले executable के parent/child संबंध घोषित करने देते हैं
      उदाहरण के लिए, अगर curl चला और parent list में ऊपर जाते हुए /usr/bin/trusted नाम का process मिला, तो इस curl invocation को allow करने की घोषणा कर सकना चाहिए। तब जब तक bash script का parent /usr/bin/trusted है, उस script से curl चलाने की अनुमति दी जा सकती है
  • यही आखिरकार मुझे NixOS पर ले जाने की वजह बना
    पहले application firewall इस्तेमाल करते समय बहुत configuration करनी पड़ती थी, updates से path बदलते तो अक्सर टूट जाता था, और नए computer पर जाने पर सब कुछ फिर से करना पड़ता था, जिससे churn और waste बहुत था
    package manager के साथ integrate करने पर ऐसी समस्याएं खत्म हो गईं। allowlist की initial setup पूरी हो जाए, तो nix configuration में नया package जोड़ते समय बस थोड़ा काम करना पड़ता है
    अगर nix configuration में allowlist जोड़ना झंझट लगे, तो अगली reboot तक रहने वाली temporary allowlist डाल सकते हैं। learning curve steep था और काम भी बहुत था, लेकिन अब maintenance बेहद आसान है

    • जानना चाहूंगा कि क्या इसे search.nixos.org/options पर मौजूद OpenSnitch Nix options से implement किया गया है
  • बहुत ज़्यादा connections बनाने वाले बेढंगे apps पकड़ने के लिए अच्छा है। Thunderbird, तुमसे ही कह रहा हूं
    पसंद है, लेकिन एक छोटी असुविधा भी है। expired temporary rules interface से delete या hidden नहीं होते, इसलिए कभी-कभी GUI restart करके उन्हें साफ़ करना पड़ता है

    • यह कहना थोड़ा अजीब है, लेकिन PR का ज़रूर स्वागत होगा। हालांकि मेरे पास भी सच में बहुत कम समय है
  • Fedora पर firewalld/firewall-config से छेड़छाड़ करने के बजाय मैं इसकी सिफारिश कर सकता हूं

    • dnf जब भी update करता है तो महाद्वीप भर में servers टटोलता है—इसे कैसे handle करें?
      https://news.ycombinator.com/item?id=41124755
      बस allow भी कर सकते हैं, लेकिन मैं ऐसा नहीं करना चाहता
  • Docker containers में API या web services चलाते समय ऐसी functionality हो तो अच्छा होगा
    containerA: सभी outbound traffic allow
    containerB: client को response देने के मामलों को छोड़कर outbound traffic block
    containerC: सिर्फ़ updates.example.com तक access
    क्या यह बस per-container iptables है? मौजूदा image में iptables जोड़ सकते हैं, लेकिन काम ज़्यादा लगता है। या फिर host पर iptables से handle करने वाला तरीका है?

    • जोड़ना चाहूंगा कि netfilter, यानी जिसे iptables frontend की तरह इस्तेमाल करता है, एक kernel subsystem है, इसलिए यह host के सभी containers पर globally apply होता है
  • Android phone पर भी ऐसा कुछ है? अच्छी recommendations जानना चाहूंगा

    • NetGuard है। हालांकि ज़्यादातर convenience features छोटी payment के पीछे हैं
      https://netguard.me
    • GrapheneOS कम से कम किसी specific app का internet traffic block कर सकता है। लेकिन port ranges या specific domain के स्तर पर नहीं
    • दुर्भाग्य से असली firewalls सभी को root permission चाहिए
      AFWall+ लंबे समय तक इस्तेमाल किया है; हर app के लिए Wi-Fi, cellular, LAN allow या block करने का control साफ़-सुथरा है। यह iptables/nftables frontend है, इसलिए जितने चाहें rules customize कर सकते हैं: https://github.com/ukanth/afwall
      Android 2+ से काम करता है
      root न हो तो Adguard जैसे VPN-based solutions ही संभव हैं
      अगर stats चाहिए तो GlassWire का Android version भी है। मैंने केवल beta इस्तेमाल किया है, इसलिए वर्तमान स्थिति नहीं जानता, लेकिन देखने लायक है
    • "Rethink: DNS + Firewall + VPN" app में मिलती-जुलती functionality है
    • AFWall+
      ऊपर बताए गए NetGuard से इसी पर switch किया
  • Arch और OpenSUSE packages भी हों तो अच्छा होगा

    • Arch Linux में official package है। हालांकि किसी वजह से eBPF module शामिल नहीं है, इसलिए AUR से अलग लेना पड़ता है
    • Arch के extra repository में opensnitch है, और AUR में opensnitch-ebpf-module है
  • UFW जैसी चीज़ से तुलना करें तो कैसा है? असली बात ongoing activity देखने वाला UI है क्या?

    • OpenSnitch network activity होने पर पूछता है
      अगर कोई arbitrary app telemetry call जैसी चीज़ करे, तो आप granular white/greylist बना सकते हैं—जैसे इस executable से इस address तक connection ही allow करना है, या यह address हमेशा allow करना है—और duration options भी हैं, जैसे one-time, 15 seconds के लिए, reboot तक
      इस्तेमाल और भरोसे वाले apps को allowlist में डालने की शुरुआती बाधा पार कर लें तो यह काफ़ी अच्छा है, और apps या games क्या कर रहे हैं, जो पहले पता नहीं था, उसे अच्छी तरह दिखाता है
    • मेरी जानकारी में UFW application firewall नहीं है; यह सिर्फ़ system-wide port numbers को block/allow करता है
  • क्या इसे macOS पर port करने की कोई योजना है? कुछ समय तक Little Snitch इस्तेमाल किया था, लेकिन payment से अलग वजहों से मैं open source को ज़्यादा पसंद करता हूं

    • LuLu आज़मा सकते हैं
  • कई बार बीच-बीच में इस्तेमाल करने की कोशिश की, लेकिन random crashes इतने ज़्यादा थे कि इसे इस्तेमाल करना काफ़ी मुश्किल था