लिनक्स में डोमेन फ़िल्टरिंग कैसे करें?


12

अधिमानतः कुछ इसी तरह के iptables। मूल रूप से, मैं डोमेन फ़िल्टरिंग / श्वेत-सूचीकरण / ब्लैकलिस्टिंग करना चाहता हूं जैसे कि मैं आईपी के साथ करूंगा iptables। क्या ऐसा करने के बारे में कोई सिफारिशें हैं?


आप क्या / क्यों अवरुद्ध करने की कोशिश कर रहे हैं? क्या आप आउटगोइंग / इनकमिंग HTTP या SMTP या NTP को फ़िल्टर करने का प्रयास कर रहे हैं? विभिन्न उपकरणों का उपयोग विभिन्न परिदृश्यों के लिए किया जा सकता है।
क्रीक

1
कुछ सुझाव जो आपकी मदद कर सकते हैं, आप हैं denyhosts.sourceforge.net/faq.html और fail2ban.org/wiki/index.php/Main_Page
रमेश

1
@josten आदर्श रूप से आप स्क्वीड की तरह एक HTTP प्रॉक्सी का उपयोग करेंगे । डोमेन नामों को अवरुद्ध कियाiptables जा सकता है लेकिन यह पासा हो सकता है
क्रीक

जवाबों:


8

यदि आप iptables नियमों के साथ नाम रिज़ॉल्यूशन का उपयोग करके ट्रैफ़िक छोड़ते हैं, तो उस नियम के निर्माण के दौरान नाम हल हो जाएंगे। यदि कुछ बदल जाता है, तो आप नियम अब मान्य नहीं होंगे। यह एक समाधान हो सकता है (एक ब्यूटीफुल एक नहीं ...):

# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP

LAN के अंदर किसी अन्य होस्ट से:

# host www.facebook.com
www.facebook.com A record not found, try again

मूल रूप से, आपका हर डीएनएस पैकेट ( udp/53) कह रहा है कि हेक्साडेसिमल स्ट्रिंग को www.facebook.com toगिरा दिया गया है। ध्यान दें कि यह नाम रिज़ॉल्यूशन को छोड़ देगा, न कि http ट्रैफ़िक को।

पाइप के साथ अलग किए गए हेक्स संख्या ( |03|www|08|facebook|03|com) .डीएनएस प्रश्नों पर डॉट सिंबल का प्रतिनिधित्व है । यह कहेगा कि निम्नलिखित में से कितने चार्टर्स एक FQDN (होस्ट, डोमेन, शीर्ष-स्तरीय डोमेन) के प्रत्येक भाग का प्रतिनिधित्व करेंगे उदाहरण:

मेज़बान: mail.google.com

हेक्स प्रतिनिधित्व: 04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d

"दृश्य प्रतिनिधित्व: 04mail06google03com

पैकेट को tcpdump के साथ प्राप्त करना:

# tcpdump -i eth0 -X dst port 53

15:50:11.643672 IP xxx.xxx.xxx.xxx:xxx > ns4.google.com.domain: 16530 A? mail.google.com. (33)
        0x0000:  4500 003d 779a 4000 4011 b390 c949 4742  E..=w.@.@....IGB
        0x0010:  d8ef 260a 8424 0035 0029 0fc0 4092 0000  ..&..$.5.)..@...
        0x0020:  0001 0000 0000 0000 046d 6169 6c06 676f  .........mail.go
        0x0030:  6f67 6c65 0363 6f6d 0000 0100 01         ogle.com.....

लेकिन याद रखें:

  • यदि आप smtp, ftp या http जैसे अधिक विशिष्ट ट्रैफ़िक को फ़िल्टर करने का प्रयास कर रहे हैं, तो उस प्रोटोकॉल का एक प्रॉक्सी बेहतर होना चाहिए।
  • आप "हाइजैकिंग" डीएनएस प्रश्न हैं और डोमेन को अवरुद्ध नहीं कर रहे हैं। उपयोगकर्ता उस गूंगे नहीं हैं;)

स्रोत: यहां और यहां


क्यों अहंकार प्रकार बी.एम. है?
गौरव कंसाल

एल्गोरिथ्म बॉयर-मूर - en.wikipedia.org/wiki/…

4

हो सकता है कि आपके प्रश्न का उत्तर बहुत देर से मिला हो, लेकिन हाल ही में मुझे इसी तरह की समस्या को हल करने की आवश्यकता थी और Google मुझे यहां लाता है

असफल खोजों के बाद मैंने सी में एक छोटी सी उपयोगिता लिखी जो डीएनएस-प्रतिक्रियाओं को स्वीकार करती है, इसमें दिए गए रेगेक्स और सूचीबद्ध आईपी पते के मुकाबले डोमेन नाम की तुलना करता है। यहाँ यह है: https://github.com/vmxdev/sidmat/

आपको अपना स्वयं का DNS सर्वर सेट करने की आवश्यकता नहीं है, उपयोगिता किसी भी सर्वर से DNS प्रतिक्रियाओं को पकड़ सकती है

उदाहरण के लिए, facebook.com (और उपडोमेन) आईपी पते देखने के लिए जिन्हें अभी हल किया गया है आप चला सकते हैं

# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...

जहां eth0 राउटर पर नेटवर्क इंटरफेस है (या जहां DNS प्रतिक्रियाएं गुजरती हैं)

आप इसे आसानी से iptables (या ipset के साथ iptables) के साथ एकीकृत कर सकते हैं

परंतु:

  • उपयोगिता वास्तव में सरल है। यह कई जांच नहीं करता है, इसलिए हमलावर इसे धोखा दे सकता है
  • यदि उपयोगकर्ता रिज़ॉल्यूशन के लिए DNS का उपयोग नहीं करते हैं तो यह तकनीक बेकार है

3

सबसे आसान तरीका ब्लैकलिस्ट करने के लिए शायद dnsmasq का उपयोग करना है

इंस्टॉल dnsmasq

$ sudo apt-get install dnsmasq

और इस लाइन को जोड़ें /etc/dnsmasq.conf

address=/facebook.com/127.0.0.1

यह facebook.com और इसके सभी उप डोमेन को ब्लॉक कर देगा ।

नोट: ubuntu देखें इस पोस्ट


1

यदि एक स्थानीय कैशिंग bind9 चल रहा है, तो यह अक्सर एक द्वारा महसूस किया जाता है dummy-block

zone "facebook.com" { type master; file "dummy-block"; };

और dummy-blockफ़ाइल:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                          2         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
*       IN      A       127.0.0.1   

यह सभी देखें:

facebook.comउदाहरण के साथ BIND9 और ISC-DHCP चलाना

वेब विज्ञापन ब्लॉक करने के लिए एक सरल डीएनएस-आधारित दृष्टिकोण

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.