2010-07-06 32 views
8

क्या पाइथन में फ़ायरवॉल लिखना संभव है? कहें कि यह सभी यातायात को अवरुद्ध करेगा?क्या पाइथन में फ़ायरवॉल लिखना संभव है?

+2

जो के लिए ऑपरेटिंग सिस्टम? पायथन को कर्नेल के नेटवर्क स्टैक के साथ काम करना होगा। – mcandre

+4

उन्होंने निर्दिष्ट नहीं किया, इसलिए आगे बढ़ें और हाँ का उत्तर दें;) – Konerak

+0

आप ऐसा क्यों चाहते हैं? क्या आप जानते हैं कि आपके पास मशीन (असेंबली) –

उत्तर

16

हाँ, हाँ यह है।

मेरे पास कुछ पायथन कोड है जो एनएफक्यू का उपयोग करके फ़ायरवॉलिंग कर्तव्यों को करने के लिए लिनक्स iptables के साथ इंटरैक्ट करता है। मैं iptables कि तरह लग रहा है में एक नियम का उपयोग कर सकते हैं:

iptables -A INPUT -j NFQUEUE --queue-num 1 

और फिर कुछ अजगर कोड है कि लगता है कि है:

:

import nfqueue 
from dpkt import ip 

q = None 

def cb(dummy, payload): 
    # make decision about if the packet should be allowed. in this case, drop everything: 
    payload.set_verdict(nfqueue.NF_DROP) 

q = nfqueue.queue() 
q.open() 
q.bind() 
q.set_callback(cb) 
q.create_queue(1) 

q.try_run() 

यहाँ एक अच्छा लिखने अप है कि इसके बाद के संस्करण कोड पर आधारित है

http://blog.yancomm.net/2011/05/nfqueue-packet-mangling-with-python.html

+1

लेकिन, विंडोज़ पर अजगर के बारे में क्या? –

3

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

+0

मुझे यकीन नहीं है यहां, लेकिन क्या यह अजगर में गारंटी है कि आईआरक्यू समय-समय पर उपयोगकर्ता कोड तक पहुंचते हैं (पायथन परत पार करते हैं)? –

+0

बीएसडी एक माइक्रोक्रोनल? क्या? –

+0

@ गॉलम: यह अत्यधिक ऑपरेटिंग सिस्टम और प्रश्न में अधिसूचना विधि पर निर्भर करता है। पाइथन कोड को आईआरक्यू हैंडलर के रूप में चलाने के लिए कोई मानक नहीं है ... –

2

"हां" - आमतौर पर इसका जवाब है "क्या यह संभव है ...?" प्रशन।

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

ओटीओएच, यदि आप वास्तव में नेटवर्क सुरक्षा के बारे में चिंतित हैं, तो टन अन्य उत्पादों के बाहर हैं जिनका उपयोग आप * निक्स पर iptables से, विंडोज़ पर ज़ोन अलार्म से कर सकते हैं। उनमें से बहुत से स्वतंत्र और सुरक्षित दोनों हैं इसलिए "मैं सीखना चाहता हूं" आधार को छोड़कर खुद को रोल करने का कोई कारण नहीं है।

+0

धन्यवाद :) - यह आधार सीखना चाहता है;) आमतौर पर पहिया निष्पादन को फिर से शुरू करने की आवश्यकता नहीं होती है अगर आप जानना चाहते हैं कि यह कैसे बनाया गया था। – Jake

3

मुझे यकीन है कि सिद्धांत में आप जो चाहते हैं उसे प्राप्त कर सकते हैं, लेकिन मुझे लगता है कि आपका विचार व्यावहारिक नहीं है (यदि आपको आश्चर्य है कि ऐसा क्यों है, तो ऐसा इसलिए है क्योंकि निम्न स्तर वाले उच्च स्तर की भाषा "इंटरफ़ेस" गिरी)।

इसके बजाय आप क्या कर सकते हैं कुछ पायथन टूल है जो ऑपरेटिंग सिस्टम की फ़ायरवॉल को नियंत्रित करता है ताकि आप नियम, डिलीट इत्यादि जोड़ सकें (इसी तरह लिनक्स में iptables क्या करता है)।

+0

मैं देखता हूं। फ़ायरवॉल में कोई नियम कैसे जोड़ सकता है? – Jake

+0

लिनक्स पर फ़ायरवॉल iptables कमांड के माध्यम से नियंत्रित किया जाता है। आप फ़ायरवॉल नियमों को कॉन्फ़िगर करने के लिए इसका उपयोग कर सकते हैं। http://linux.die.net/man/8/iptables –

3

दिलचस्प धागा। मैं पाइथन NFQUEUE उदाहरणों की तलाश में ठोकर खाई।

मेरा लेना है कि आप पाइथन में एक महान फ़ायरवॉल बना सकते हैं और कर्नेल का उपयोग कर सकते हैं।

उदा। आईपी टेबल के माध्यम से एक लिनक्स एफडब्ल्यू नियम जोड़ें जो कि क्या करना है यह तय करने के लिए पायथन एफडब्लू के लिए एनएफक्व्यूयू को सिस पैकेट (पहला) अग्रेषित करें।

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

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

4

पायथन-आईपटेबल्स लिनक्स के तहत iptables के लिए अजगर बाइंडिंग प्रदान करता है। Iptables के साथ इंटरऑपरेबिलिटी iptables सी लाइब्रेरीज़ (libiptc, libxtables, और iptables एक्सटेंशन) का उपयोग करके हासिल की जाती है, iptables बाइनरी को कॉल नहीं करते और इसके आउटपुट को पार्स नहीं करते हैं।

0

बहुत संभव है और एक पूरा ढांचा इसे यहाँ के लिए समर्पित है: https://github.com/austin-taylor/bluewall

+0

उत्तर के रूप में लिंक पोस्ट करने के बजाय स्पष्टीकरण के लिए कुछ पाठ जोड़ें कि यह उत्तर वर्तमान समस्या को ठीक करने में ओपी को कैसे मदद करता है। धन्यवाद –

संबंधित मुद्दे