प्रोग्राम को डाउनलोड करने के लिए उपयुक्त iptables नियम क्या है?


12

जब मैं कुछ टाइप करता हूं sudo apt-get install firefox, तब तक सब कुछ काम करता है जब तक वह मुझसे नहीं पूछता:

After this operation, 77 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y

तब त्रुटि संदेश प्रदर्शित होते हैं: Failed to fetch: <URL>

मेरे iptables नियम इस प्रकार हैं:

-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

अद्यतन डाउनलोड करने के लिए उपयुक्त-अनुमति देने के लिए मुझे क्या जोड़ना चाहिए? धन्यवाद

जवाबों:


17

apt-get लगभग हमेशा HTTP पर डाउनलोड होता है, लेकिन FTP का उपयोग भी कर सकता है, इसलिए संक्षिप्त उत्तर संभवतः जावक HTTP कनेक्शन ... और DNS को भी अनुमति देता है।

आपके द्वारा अब किया गया कॉन्फ़िगरेशन सभी आउटगोइंग नेटवर्क ट्रैफ़िक को बंद कर देता है ( ESTABLISHEDआपके पास OUTPUTचेन पर जो नियम है वह प्रभावी नहीं है क्योंकि कोई सत्र कभी स्थापित नहीं होगा)। क्या आपको अभी भी बाकी चीजों को रद्द करते समय केवल अपडेट प्राप्त करने की अनुमति देने की आवश्यकता है? iptablesशायद उस नौकरी के लिए गलत उपकरण है क्योंकि यह वास्तव में URL की व्याख्या करने और HTTP स्थानांतरण को चुनिंदा रूप से करने की अनुमति नहीं दे रहा है। आप इस काम के लिए एक HTTP प्रॉक्सी सर्वर का उपयोग करना चाहते हैं।

आप एक सरल सेटअप का उपयोग कर सकते हैं जो उपयुक्त डाउनलोड प्राप्त करने की अनुमति देगा, लेकिन ध्यान रखें कि यह अन्य सभी आउटगोइंग DNS और HTTP कनेक्शनों को भी अनुमति देता है, जो कि आप नहीं चाहते हैं।

iptables -F OUTPUT  # remove your existing OUTPUT rule which becomes redundant
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

यदि आपके APT स्रोतों में 80 के अलावा बंदरगाहों पर HTTPS या FTP स्रोत या HTTP स्रोत शामिल हैं, तो आपको उन बंदरगाहों को भी जोड़ना होगा।

इसके बाद, आपको वापसी यातायात की अनुमति देनी होगी। आप इस एकल नियम के साथ कर सकते हैं जो किसी भी स्थापित कनेक्शन को अनुमति देता है:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

(कनेक्शन ट्रैकिंग का उपयोग करते समय सभी इनबाउंड स्थापित कनेक्शनों की अनुमति देना सुरक्षित है, क्योंकि केवल उन्हीं कनेक्शनों को जिन्हें आपने अनुमति दी है, जो स्थापित स्थिति में मिलेंगे।)


नमस्कार, आपके प्रतिसाद के लिए धन्यवाद। यह काम किया, लेकिन क्या आपको लगता है कि इन OUTPUT बंदरगाहों को खोलने के साथ कोई सुरक्षा चिंता हो सकती है? धन्यवाद
anthony01

1
लगभग सभी SOHO- शैली के बक्से सहित अधिकांश फायरवॉल, अप्रतिबंधित आउटबाउंड कनेक्शन की अनुमति देते हैं। लोगों को आमतौर पर आउटगोइंग ट्रैफिक को प्रतिबंधित करने की कोई आवश्यकता नहीं है। लेकिन यह आपकी आवश्यकताओं पर निर्भर करता है। आपका मौजूदा सेटअप उपयोगकर्ताओं को इंटरनेट ब्राउज़ करने से संबंधित कार्य केंद्र पर रोकता है। यदि यह आपको करने की आवश्यकता है, तो आप इस iptables- आधारित समाधान का उपयोग नहीं कर सकते क्योंकि यह वेब ब्राउज़िंग को अनुमति देता है।
Celada

और अगर इरादा वेब ब्राउजिंग को ब्लॉक करना है, तो वैसे भी यह गलत टूल है। नेटफिल्टर / आईपीटेबल्स का उपयोग स्टाफ आउटबाउंड वेब ब्राउजिंग को रोकने के लिए सभी आउटबाउंड कनेक्शन को ब्लॉक करने के लिए है जैसे अखरोट को खोलने के लिए बाज़ूका का उपयोग करना। आपको एक पारदर्शी वेब प्रॉक्सी की आवश्यकता है जो अधिकृत उपयोगकर्ताओं के लिए कार्य-संबंधित ब्राउज़िंग की अनुमति देते समय अनुचित उपयोग के लिए लॉग इन करेगी।
मैगलन

घंटों खोज के बाद, इस जवाब ने आखिरकार मुझे अपने स्थानीय सर्वर के साथ समस्याओं को हल करने में मदद की। कोई फर्क नहीं पड़ता कि मैंने क्या किया, सभी आउटगोइंग ट्रैफ़िक तब तक अवरुद्ध रहे जब तक कि मैंने पोर्ट 53 के माध्यम से डीएनएस कनेक्शन को स्पष्ट रूप से अनुमति नहीं दी। यह समझ में आता है, क्योंकि मेरे पैकेज मैनेजर ने शिकायत की कि यह मेजबानों को हल नहीं कर सकता है।
प्याज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.