2012-12-31 8 views
11

मेरे पास इस समय सभी यूडीपी ट्रैफिक को अवरुद्ध करने वाले आईपीटीबल्स हैं, हालांकि मैं केवल कुछ DNS क्वेरी को प्राप्त करने की अनुमति देना चाहता हूं।क्या iptables केवल एक निश्चित डोमेन नाम के लिए DNS क्वेरी की अनुमति दे सकते हैं?

चलिए एक उदाहरण के रूप में google.com का उपयोग करते हैं।

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

iptables -A OUTPUT -o eth0 -p udp --sport 53 -m string --string "google.com" --algo bm -j ACCEP टी

मैं भी --dport 53 बजाय --sport कोशिश की है। कोई पाँसा नहीं।

अगर कोई जानता है कि यह कैसे किया जा सकता है या देख सकता है कि मैं गलत कहां गया हूं तो आपकी मदद की सराहना की जाती है!

धन्यवाद, जार्ड

उत्तर

19

मैं जानता हूँ कि यह देर से एक सा है, लेकिन जब से तुम सवाल ...

बंद नहीं किया है आप DNS अनुरोध पैकेट की सामग्री को देखें, तो वायरशर्क या इसी तरह आप पाएंगे कि डॉट कैरेक्टर का उपयोग नहीं किया जाता है। डोमेन नाम के प्रत्येक भाग एक गिना स्ट्रिंग है, इसलिए google.com के लिए अनुरोध की वास्तविक बाइट्स होगा:

06 67 6f 6f 67 6c 65 03 63 6f 6d 

पहले बाइट (06) google की लंबाई, 6 ASCII वर्ण के बाद, है तो com की लंबाई के लिए एक गिनती बाइट (03) ... इसके बाद आपको विचार मिलता है।

iptables में इस से मेल करने के लिए, का उपयोग करें:

iptables -A OUTPUT -o eth0 -p udp --port 53 -m string --hex-string "|06|google|03|com" -algo bm -j ACCEPT 

--hex-string पैरामीटर प्रदान की स्ट्रिंग ऊर्ध्वाधर सलाखों के जोड़े से सीमांकित स मान की तलाश में पार्स करता है। लंबवत सलाखों के बाहर कुछ भी ASCII पाठ के रूप में व्याख्या किया जाता है।

ACCEPT  udp -- anywhere    anywhere    udp dpt:domain STRING match "|06676f6f676c6503636f6d|" ALGO name bm TO 65535 

आप धुन कर सकते हैं नियम थोड़ा - और यह इसकी गति बढ़ाने - का उपयोग करते हुए खोज सीमा को प्रतिबंधित करने से:

आप प्रविष्टि जोड़ने के बाद आउटपुट तालिका सूची यदि आप की तर्ज पर कुछ मिल जाएगा --from और --to पैरामीटर।

+0

बहुत बढ़िया आदमी, आपने बहुत समय बचाया। हालांकि इसे सत्यापित करने में समय लगा। –

+0

मुझे आशा है कि यह आईपीवी 6 नेटवर्क के लिए भी काम करेगा। –

+0

क्यों अलगो प्रकार बीएम (बॉयर-मूर) है? –

3

मैंने पाया कि डॉट्स के साथ तार के साथ विश्वसनीय नहीं है।

यह काम करेगा:

iptables -A OUTPUT -o eth0 -p udp --port 53 -m string --string google --algo bm -j ACCEPT 
संबंधित मुद्दे