प्रत्येक प्रोग्राम के लिए इंटरनेट एक्सेस कैसे नियंत्रित करें?


59

मैं एक सॉफ्टवेयर का उपयोग करना चाहूंगा जो इंटरनेट से कनेक्ट होने वाले प्रोग्राम को नियंत्रित कर सके। मुझे पता है कि यह व्यवहार "फ़ायरवॉल" शब्द के साथ जुड़ा हुआ है, लेकिन कुछ लिनक्स उपयोगकर्ता बहुत परेशान हैं यदि कोई व्यक्ति व्यक्तिगत फ़ायरवॉल की मांग करता है। मैं इस तरह के कार्यक्रम की मांग करके आपको परेशान नहीं करना चाहता।
मैं "सुरक्षित पोर्ट" या अन्य सामान को विंडोज पर एक व्यक्तिगत फ़ायरवॉल वादे नहीं करना चाहता। मैंने गौर किया iptablesलेकिन यह मेरी आवश्यकताओं के अनुरूप नहीं है।

मैंने यहां एक उत्कृष्ट उत्तर देखा ( "शराब अनुप्रयोगों के लिए इंटरनेट का उपयोग कैसे अवरुद्ध करें" ) लेकिन इसे स्थापित करने के लिए बहुत असुविधाजनक है।

क्या कोई ऐसा सॉफ़्टवेयर है जो प्रत्येक प्रोग्राम के लिए पूछता है कि क्या वह इंटरनेट एक्सेस कर सकता है?


मैक पर एक सॉफ्टवेयर होता है जिसे थोडा सूंघा जाता है जो ऐसा करता है। मुझे लगता है कि एक विंडोज़ संस्करण भी है ...
अलवर

जवाबों:


6

वहाँ एक है पर्ल स्क्रिप्ट जर्मन उबंटू मंच में ( अंग्रेजी के लिए गूगल-अनुवाद ) है कि ऐसा करने के लिए लगता है। मैंने कभी इसकी कोशिश नहीं की और मैंने स्क्रिप्ट को करीब से नहीं देखा, लेकिन शायद यह आपके लिए काम करती है। विवरण केवल जर्मन में है इसलिए आपको अनुवाद सेवा की आवश्यकता हो सकती है (जैसे Google अनुवाद; ऊपर देखें)।


मैं इसे देखूंगा। यह सही उपकरण हो सकता है दिलचस्प है। दुर्भाग्य से, कोई गुई नहीं है, लेकिन यह मुझे नहीं रोकना चाहिए :)
गेरुआ

34

यदि आप अभी भी इस तरह के आवेदन की तलाश कर रहे हैं, तो मैं वर्तमान में उस एप्लिकेशन को ठीक से विकसित कर रहा हूं: http://douaneapp.com/ https://gitlab.com/douaneapp/Douane

मेरा एप्लिकेशन किसी भी अज्ञात एप्लिकेशन को ब्लॉक करता है (अधिकृत एप्लिकेशन के नए संस्करण अवरुद्ध हैं) और आपसे पूछता है कि क्या आप इसकी अनुमति देते हैं या अस्वीकार करते हैं।

वेबसाइट पर एक नज़र है ;-)

स्क्रीन शॉट


ठंडा! मैंने ppa को भी देखा, लेकिन वहां कोई भी पैकेज नहीं बनाया गया। इसके अलावा, मुझे आश्चर्य है कि क्या यह आईपी को पठनीय साइट के नाम पर हल कर सकता है? और, मैं संकलन निर्देशों का पालन करने जा रहा हूं, मैंने वहां ubuntu dep संकुल के लिए कई युक्तियां देखीं, और मैं आसानी से उन्नयन (हटाने / स्थापित) का प्रबंधन करने के लिए .deb संकुल की अपनी स्थानीय प्रति बनाने के लिए checkinstall का उपयोग करूंगा। हो सकता है कि चेकबाइक का उपयोग आपके वितरण को बनाने के लिए भी किया जा सके, जो मुझे लगता है।
कुंभ राशि पॉवर

आप Github ( github.com/Douane/Douane/issues ) :) पर सुविधा अनुरोध खोल सकते हैं :)
ZedTuX

2
उह, यह वही लगता है जिसकी मुझे आवश्यकता थी !! लेकिन मुझे उबंटू में इसे स्थापित करने के लिए एक पैकेज नहीं मिल रहा है।
अजराफती

अभी भी उबंटू के लिए पैकेज नहीं है?
अनवर

1
Douaneapp.com वापस आ गया है! :)
ZedTuX

26

मुझे एक सुविधाजनक समाधान मिला जो समस्या को हल करता है। आप एक समूह बनाते हैं जिसे कभी भी इंटरनेट का उपयोग करने और इस समूह के सदस्य के रूप में कार्यक्रम शुरू करने की अनुमति नहीं है।

  1. एक समूह बनाएँ no-internet। है इस समूह में शामिल

    sudo addgroup no-internet
    
  2. Iptables में एक नियम जोड़ें जो समूह no-internetसे संबंधित सभी प्रक्रियाओं को नेटवर्क का उपयोग ip6tablesकरने से रोकता है (IPv6 ट्रैफ़िक को रोकने के लिए भी उपयोग करें)

    sudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
    
  3. के sudo -g no-internet YOURCOMMANDबजाय निष्पादित करें YOURCOMMAND

आप आसानी से एक रैपर स्क्रिप्ट लिख सकते हैं जो आपके लिए sudo का उपयोग करती है। आप पासवर्ड प्रॉम्प्ट को जोड़कर छुटकारा पा सकते हैं

%sudo     ALL=(:no-internet)      NOPASSWD: ALL

या, कुछ इसी तरह के साथ sudo visudo

फ़ायरवॉल नियमों को बनाए रखने के लिए iptables-saveऔर iptables-restoreका उपयोग करें ।


1
मैंने आपका मार्गदर्शक आज़माया, sudo -g no-internet firefoxडिफ़ॉल्ट रूप से तेज़ी से जुड़ता है। यह काम नहीं करता है।
केएन

1
@ मैं केवल यह कह सकता हूं कि यह यहां ठीक है। मुझे लगता है कि नियम बनाते समय आप कुछ गलत कर रहे हैं। नियम को सहेजना नहीं, स्क्रिप्ट को निष्पादन योग्य बनाना या ऐसा कुछ नहीं।
टिम

मैंने बिना किसी भाग्य के फिर से नियमों के तहत रिबूट किया और लागू किया
केएन

1
मेरे लिए पूरी तरह से काम किया, यहां तक ​​कि फ़ायरफ़ॉक्स के साथ भी। धन्यवाद!
कोस्तनोस

1
यह मेरे लिए उबंटू 19.04 पर भी काम नहीं करता है। रीबूट के बीच परिवर्तनों को सहेजने की अनुमति देने के लिए मुझे iptables-persistent स्थापित करना पड़ा। (ताकि आप ऊपर के समाधान में जोड़ना चाहें)। हालाँकि, sudo -g नो-इंटरनेट फ़ायरफ़ॉक्स फ़ायरफ़ॉक्स को इंटरनेट तक पहुँचने से प्रतिबंधित नहीं करता है। वैचारिक रूप से, यह समाधान ऐसा लगता है जैसे इसे काम करना चाहिए। क्या कुछ मौलिक है जिसे अनदेखा किया जा रहा है? उदाहरण के लिए क्या हमें इस काम को करने के लिए BOTH ipv4 और ipv6 को सेटअप करने की आवश्यकता है?
पीजे सिंह

5

उबंटू में पहले से ही एक फ़ायरवॉल है ufw, लेकिन यह डिफ़ॉल्ट रूप से अक्षम है। आप इसे कमांड लाइन या इसके फ्रंटएंड, gufw द्वारा सक्षम और उपयोग कर सकते हैं , जो कि सीधे Ubuntu सॉफ्टवेयर सेंटर से इंस्टॉल करने योग्य है।

यदि आपको किसी विशिष्ट एप्लिकेशन के लिए इंटरनेट एक्सेस को ब्लॉक करने की आवश्यकता है, तो आप LeopardFlower की कोशिश कर सकते हैं , जो अभी भी बीटा संस्करण में है और यह उबंटू सॉफ्टवेयर सेंटर में उपलब्ध नहीं है:


4

किसी अन्य उपयोगकर्ता के तहत एक प्रोग्राम चलाना उस उपयोगकर्ता के लिए कॉन्फ़िगर फ़ाइलों का उपयोग करेगा और आपका नहीं।

यहां एक समाधान है जिसे फ़ायरवॉल नियमों को संशोधित करने की आवश्यकता नहीं है, और sudoएक संशोधित उपयोगकर्ता के साथ उसी उपयोगकर्ता (के माध्यम से ) को चलाता है, जहां आपका उपयोगकर्ता है my_userऔर जिस ऐप को आप चलाना चाहते हैं वह है my_app:

# run app without access to internet
sudo unshare -n sudo -u my_user my_app

अधिक विवरण के लिए देखें man unshareऔर यह उत्तर

लिनक्स GUI फ़ायरवॉल

यदि आप एक GUI फ़ायरवॉल की तलाश कर रहे हैं, जिसका मैंने OpenSnitch के साथ अच्छा परिणाम प्राप्त किया है - यह अभी तक ubuntu repos में नहीं है और मैं इसे प्रोडक्शन-स्तर नहीं कहूँगा, लेकिन github पेज के बिल्ड स्टेप्स को फॉलो करते हुए मेरे लिए काम किया।


3

@psusi: मैं वास्तव में चाहता हूं कि लोगों को बुरा और उपयोगी जानकारी नहीं मिलेगी। IPTables एक को ऐसा करने की अनुमति देता है, इसलिए मैं शायद ही इसे "मूर्ख" समझूंगा। उपयोग के मामले को समझे बिना केवल "NO" कहना कुछ हद तक संकीर्ण सोच है। http://www.debian-administration.org/article/120/Application_level_firewalling

EDIT bodhi.zazen

ध्यान दें - इस विकल्प को 2005 में IPTABLES से हटा दिया गया था, 8 साल पहले इस पोस्ट से हटा दिया गया था

देखें - http://www.spinics.net/lists/netfilter/msg49716.html

प्रतिबद्ध 34b4a4a624bafe089107966a6c56d2a1aca026d4 लेखक: क्रिस्टोफ़ हेलविग तिथि: सूर्य अगस्त 14 17:33:59 2005 -0700

[नेटफिल्टर]: ipt {, 6} के मालिक में टास्कलिस्ट_लॉक का दुरुपयोग निकालें

Cmd / sid / pid का मिलान अपने अचूक टूटने के बाद से करें और टास्कलिस्ट_लॉक में परिवर्तन को लॉक करने के तरीके में खड़ा है।

Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>

2
इसे चिह्नित करने पर विचार करने वाले किसी व्यक्ति के लिए: इसके बजाय एक टिप्पणी नहीं होनी चाहिए, यह उस प्रश्न का उत्तर देता है जो पूछा गया था । @ user141987 iptables, हालांकि, प्रति-एप्लिकेशन प्रतिबंधों को लागू करने के तरीके के बारे में अधिक जानकारी प्रदान करने के लिए मैं इसका विस्तार करने की सलाह देता हूं । मैं आपके उत्तर में महत्वपूर्ण जानकारी (और अभी भी लिंक प्रदान कर रहा हूं, संदर्भ के लिए) सहित अनुशंसा करता हूं।
एलियाह कगन

2
iptables एप्लिकेशन द्वारा फ़िल्टर नहीं करता है।
पैंथर

यह लेख गलत प्रतीत होता है क्योंकि ऐसा कोई विकल्प नहीं है। अतीत में इस तरह के एक विकल्प बनाने के अनुरोधों को अस्वीकार कर दिया गया था क्योंकि यह स्वाभाविक रूप से अविश्वसनीय होगा; एक आवेदन बस अपना नाम बदल सकता है।
Psusi

3
@psusi क्या आप कह रहे हैं "यदि आपका कर्नेल CONFIG_IP_NF_MATCH_OWNER के साथ संकलित किया गया था तो आप अपने iptables फ़ायरवॉल को अनुमति दे सकते हैं या प्रति-क्रम के आधार पर पैकेट को अस्वीकार करने के लिए" गलत है? या बस कि सबसे गुठली विकल्प शामिल नहीं है? यदि यह गलत है, तो क्या जानकारी के स्रोत हैं जो इसे डिबंक करते हैं? (इसके अलावा, कृपया ध्यान दें कि प्रति-आवेदन फ़ायरवॉल प्रतिबंधों का प्राथमिक उद्देश्य यह है कि इसे सौंपे गए अनुप्रयोगों को चलाने के लिए पूरी तरह से सुरक्षित बनाने का प्रयास न करें। उद्देश्य मुख्य रूप से उपयोगकर्ता को अनुप्रयोगों के अंतर्निहित कॉन्फ़िगरेशन विकल्पों से परे नियंत्रण का एक उपाय देना है। )
एलिया कगन

यह विकल्प 2005 में कर्नेल से हटा दिया गया था, इस उत्तर के 8 साल पहले - spinics.net/lists/netfilter/msg49716.html और इसके विपरीत दावों के गलत होने के बावजूद, आप iptables के लिए फ़िल्टर फ़िल्टर नहीं कर सकते।
पैंथर

3

एक अन्य विकल्प फायरजेल है । यह एप्लिकेशन को सैंडबॉक्स के अंदर चलाता है जहां आप नियंत्रित करते हैं कि क्या एप्लिकेशन नेटवर्क देख सकता है:

firejail --net=none firefox

यह कमांड इंटरनेट एक्सेस के बिना फ़ायरफ़ॉक्स ब्राउज़र को शुरू करेगा। ध्यान दें कि उबंटू रेपो में फायरजेल वितरण पुराना है - फायरजेल होम पेज से इसका नवीनतम एलटीएस संस्करण डाउनलोड करें।


2

मैंने एक अच्छा होने के लिए यहां समाधान का पता लगाया है। इसमें एक उपयोगकर्ता-समूह बनाना शामिल है जिसके लिए इंटरनेट एक्सेस की अनुमति है , और केवल इस समूह के लिए एक्सेस की अनुमति देने के लिए फ़ायरवॉल नियम स्थापित करना है। इंटरनेट तक पहुंचने के लिए किसी एप्लिकेशन का एकमात्र तरीका है यदि वह इस समूह के किसी सदस्य द्वारा चलाया जाता है। आप इस समूह के तहत एक खोल खोलकर कार्यक्रम चला सकते हैं sudo -g internet -s

मैं जिस पोस्ट से ऊपर जुड़ा हुआ हूं, उस पर पुनरावृत्ति करने के लिए:

  1. निम्नलिखित को एक शेल में टाइप करके "इंटरनेट" समूह बनाएं: sudo groupadd internet

  2. सुनिश्चित करें कि जो उपयोगकर्ता नीचे स्क्रिप्ट चलाएगा, उसे sudoसमूह में जोड़ा जाएगा /etc/group। यदि आप इस फ़ाइल को संशोधित करते हैं, तो आपको नीचे दी गई स्क्रिप्ट से पहले लॉग आउट करना होगा।

  3. निम्नलिखित सहित एक स्क्रिप्ट बनाएं, और उसे चलाएं:

    #!/bin/sh
    # Firewall apps - only allow apps run from "internet" group to run
    
    # clear previous rules
    sudo iptables -F
    
    # accept packets for internet group
    sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
    
    # also allow local connections
    sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
    sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
    
    # reject packets for other users
    sudo iptables -A OUTPUT -p tcp -j REJECT
    
    # open a shell with internet access
    sudo -g internet -s
    
  4. उपरोक्त स्क्रिप्ट को चलाने से, आपके पास एक शेल होगा जिसमें आप इंटरनेट एक्सेस के साथ एप्लिकेशन चला सकते हैं।

ध्यान दें कि यह स्क्रिप्ट आपके फ़ायरवॉल नियमों को सहेजने और पुनर्स्थापित करने के लिए कुछ भी नहीं करती है। आप उपयोग करने के लिए स्क्रिप्ट को संशोधित करना चाह सकते हैं iptables-saveऔर iptables-restoreखोल आदेशों।


1

बेहतर या बदतर के लिए, लिनक्स एक अलग दृष्टिकोण का उपयोग करता है। इस कार्यक्षमता की पेशकश करने के लिए कोई सरल ग्राफिकल इंटरफ़ेस नहीं है। इस विषय पर इंटरनेट पर कई चर्चाएं हैं और यदि आप Google खोज करते हैं, तो आप दिलचस्प चर्चा पा सकते हैं। जबकि बहस दिलचस्प है, आज तक इस कार्यक्षमता को लिखने और बनाए रखने के लिए प्रोग्रामर का एक समर्पित समूह नहीं रहा है।

लिनक्स में यह कार्यक्षमता प्रदान करने वाले उपकरण Apparmor, Selinux, और Tomoyo हैं।

इनमें से कोई भी टूल सीखने में आसान नहीं है और सभी के फायदे और नुकसान हैं। व्यक्तिगत रूप से मैं SELinux पसंद करता हूँ, हालाँकि SELinux में एक स्टेटर लर्निंग कर्व है।

देख:

http://www.linuxbsdos.com/2011/12/06/3-application-level-firewalls-for-linux-distributions/

वहाँ था (है) एक आवेदन है कि पहले से ही संदर्भित किया गया है, तेंदुआ। मैं स्थिति / मुख्यता के बारे में निश्चित नहीं हूँ।


1

यह कर्नेल संस्करण 2.6.24 के लिए iptables में था। यदि आप एक 2.x - 2.6.24 मशीन चला रहे हैं और आपके कर्नेल ने इसका अनुपालन किया है तो आप इसे कर सकते हैं। किसी कारण से वे इसे बाहर ले गए, इसलिए इसका कोई माइक्रोसॉफ़्ट नहीं था। http://cateee.net/lkddb/web-lkddb/IP_NF_MATCH_OWNER.html




0

नहीं, यह संभव नहीं है। यह फ़ायरवॉल की पारंपरिक परिभाषा का हिस्सा नहीं है। यह कुछ ऐसा है जो माइक्रोसॉफ्ट ने हाल ही में अपने मौलिक रूप से टूटी हुई ओएस सुरक्षा समस्याओं के आसपास कागज़ात करने की कोशिश में आया था। यह लिनक्स समुदाय में मूर्खतापूर्ण और अयोग्य माना जाता है क्योंकि एक प्रोग्राम जिसे अनुमति नहीं है वह बस एक और प्रोग्राम चला सकता है जो कि है और उस तरह से पहुंच प्राप्त कर सकता है।

यदि आपको यह पसंद नहीं है कि जब आप इसे चलाते हैं तो नेटवर्क पर कोई प्रोग्राम क्या कर रहा है, तो उस प्रोग्राम को न चलाएं।


7
Microsoft का फ़ायरवॉल इस कार्यक्षमता को पेश करने वाला पहला प्रमुख फ़ायरवॉल नहीं था । यह पेशकश करने वाला पहला विंडोज फ़ायरवॉल भी नहीं था । BlackIce Defender, ZoneAlarm, और Windows के लिए अन्य सॉफ़्टवेयर फ़ायरवॉल की एक किस्म, वर्षों से Windows इंटरनेट कनेक्शन फ़ायरवॉल की शुरूआत की भविष्यवाणी करती है। इसके अलावा, लिनक्स समुदाय में ऐसी कोई आम सहमति नहीं है। हम अक्सर एप्लिकेशन के व्यवहार को बाधित करने के लिए AppArmor (या SELinux) का उपयोग करते हैं (और मुझे आश्चर्य है कि क्या AppArmor को इस उद्देश्य के लिए अनुकूलित किया जा सकता है ...)। ऐसा कोई कारण नहीं है कि "गलत" यह नियंत्रित करना चाहता है कि कौन से ऐप इंटरनेट तक पहुंच सकते हैं।
एलिया कागन

और, कई अन्य जवाबों के अनुसार, प्रति-आवेदन फ़ायरवॉल प्रतिबंध काफी संभव हैं ; इस कार्यक्षमता को iptables / netfilter में बनाया गया है!
एलिया कागन

नहीं, न तो नेटफिल्टर और न ही iptables प्रति एप्लिकेशन फ़िल्टर कर सकते हैं। वे उपयोगकर्ता और पोर्ट द्वारा फ़िल्टर कर सकते हैं लेकिन प्रति एप्लिकेशन नहीं।
पैंथर

"बस एक और चला सकते हैं" ???? तब जाहिर है कि ऐसे कार्यक्रम के निर्माता जो लक्ष्य कार्यक्रम की बाल प्रक्रियाओं को अवरुद्ध नहीं करते हैं, वे बड़े पैमाने पर त्रुटिपूर्ण हैं।
trusktr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.