लिनक्स IPTables का उपयोग करते हुए, टोरेंट या किसी पी 2 पी प्रोटोकॉल को कैसे ब्लॉक करें?


17

हमारी संस्था में हमने इंटरनेट के साथ 300 से अधिक कंप्यूटरों को अलग-अलग LAN से जोड़ा था। यहां शामिल हैं ऑफिशियल्स लैन, और छात्रों के लिए इंटरनेट प्रयोगशाला। और हम Torrents या किसी भी P2P प्रोटोकॉल को नियंत्रित करना चाहते हैं। हमारी समस्या का पिछला समाधान है KerioWinRoute 6.5.x, जो सबसे अधिक संतुष्ट करता है।

समस्या यह है, हम वेबिन प्लेटफॉर्म का उपयोग करके उबंटू 8.04 एलटीएस में चले गए हैं।

जवाबों:


14

पोर्ट आधारित पी 2 पी ब्लॉकिंग शायद ही 100% समाधान है। आप जो विचार करना चाहते हैं, उसे L7 फ़िल्टरिंग (Layer 7 filtering) कहा जाता है। मूल रूप से, linux का एक कार्यान्वयन है जो सभी पैकेटों पर निर्भर करता है कि क्या अच्छा है और क्या बुरा।

http://l7-filter.sourceforge.net/

यह आपको स्काइप सहित सभी प्रकार के सामान को ब्लॉक करने में मदद कर सकता है।

http://l7-filter.sourceforge.net/protocols

कृपया ध्यान दें: निरीक्षण और फ़िल्टर पैकेट के लिए रेगेक्स मिलान संसाधन गहन है जो किसी भी सिस्टम को डीडीओएस हमलों के लिए अधिक संवेदनशील बनाता है, पसंदीदा विधि iptables के भीतर प्रोटोकॉल को लक्षित करना होगा।


11

एकमात्र उचित तकनीकी समाधान यह है कि सभी ट्रैफ़िक एक प्रॉक्सी से गुजर रहे हैं जो फ्लाई पर एसएसएल ट्रैफ़िक को डिक्रिप्ट करेगा और फिर पासिंग ट्रैफ़िक पर लेयर 7 फ़िल्टरिंग लागू करेगा।

इस तरह के उत्पाद काफी महंगे होते हैं क्योंकि पैकेट को वर्गीकृत करने के लिए आवश्यक नियमों को अपडेट करने के पीछे आमतौर पर इंजीनियरों की एक बड़ी टीम होती है।

आप पहले से ही iptables मॉड्यूल के साथ कुछ हद तक अपने आप को मदद कर सकते हैं जैसे कि iment2ed ipp2p या l7-filter, लेकिन वे एन्क्रिप्टेड ट्रैफ़िक को नहीं पकड़ेंगे।

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


एर कैसे प्रॉक्सी सर्वर मक्खी पर एसएसएल को डिक्रिप्ट करते हैं?
डेविड पशले

ध्यान रखें कि SSL प्रॉक्सी का उपयोग करना कुछ प्रतियोगिताओं में वर्जित है
त्रिज्या

डेविड पशली, उन्होंने साइट एक के बजाय वहां प्रमाण पत्र भेजा। ताकि वे अब निजी हों, तब वे सच्ची साइट के लिए अनुरोध करते हैं।
त्रिज्या

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

1
यह सिर्फ एक बहुत बदसूरत समाधान है ... अपने उपयोगकर्ताओं से बात करें ...
एंटोनी बेनकेमॉन

2

आम ट्रैकर पोर्ट को ब्लॉक करना अच्छा है जैसे: 6881-6889 2710 6969

लेकिन यह 80 पोर्ट (यानी tpb.tracker.thepiratebay.org) पर बाइंड किए गए ट्रैकर्स के खिलाफ मदद नहीं करेगा। इसलिए सभी को अवरुद्ध करना, लेकिन 80,443,22 मदद नहीं करेगा।

ipp2p सबसे अच्छा समाधान है जो मुझे पता है। प्रलेखन / उपयोग अनुभाग देखें

एल 7-फिल्टर के बारे में। Bittorrent.pat में टिप्पणी कहती है:

इस पैटर्न का परीक्षण किया गया है और माना जाता है कि यह अच्छी तरह से काम करता है। हालाँकि, यह बिटकॉइन धाराओं पर काम नहीं करेगा जो एन्क्रिप्टेड हैं, क्योंकि यह एन्क्रिप्टेड डेटा से मिलान (अच्छी तरह से) करना असंभव है।

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



1

सरल समाधान उन सभी आउटगोइंग पोर्ट्स को ब्लॉक करना है जिन्हें आप अनुमति देना चाहते हैं।

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

आप उपयोग किए गए टीसीपी पोर्ट के आधार पर अपने राउटर पर कुछ प्रकार के आईपी अकाउंटिंग सेट करना उपयोगी हो सकते हैं, और फिर पता लगा सकते हैं कि कौन सा पोर्ट सबसे अधिक उपयोग किया जाता है। IPTraf यह जाँचने के लिए एक उपयोगी उपकरण है।

मुझे आपको चेतावनी देनी चाहिए कि आप कभी भी सब कुछ नहीं रोकेंगे; लोग सरल हैं और आपके द्वारा लगाए गए किसी भी प्रतिबंध के आसपास एक रास्ता खोज लेंगे। अधिकांश फायरवॉल आकस्मिक उपयोगकर्ता को रोक देंगे, जो पर्याप्त हो सकता है।


1

आप पी 2 पी को पूरी तरह से ब्लॉक नहीं कर सकते - जब तक कि आप केवल "अच्छे" टीसीपी पोर्ट्स 80, 443, 22 ... की अनुमति न दें और यहां तक ​​कि आमतौर पर कंप्यूटर-दिमाग वाले प्रकारों के लिए पर्याप्त हैं जिनके पास वीपीएन और इसी तरह की चीजें हैं।


पी 2 पी काम करता है http और https पोर्ट का उपयोग बिना समस्या और बहुत विन्यास के
काज़िमिएरस अलीलिस

धीरे से। इसे वर्ग कहा जाता है। पिछले कुछ वर्षों में अधिक से अधिक पी 2 पी ऐप या तो पोर्ट 80 (अक्सर एन्क्रिप्टेड) ​​की ओर बढ़ रहे हैं, या उन पोर्ट्स के माध्यम से स्कैन करेंगे जो खुले हैं। एप्लिकेशन लेयर स्नूपिंग (गहरे पैकेट निरीक्षण का एक विशिष्ट रूप) प्रत्यक्ष उपयोग को पकड़ लेगा, लेकिन जरूरी नहीं कि ट्रैफिक को टनल किया जा रहा हो।
स्कॉट पैक

1
@packs: अधिक से अधिक BitTorrent ग्राहक ISP की पैक्सिंग निरीक्षण करने के कारण अन्य प्रोटोकॉल के रूप में पूर्ण एन्क्रिप्शन और यहां तक ​​कि छलावरण प्रदान करते हैं।
ज़ैन लिंक्स

@grawity - बिल्कुल सही, लेकिन उन्हें एक बहुत ही उन्नत उपयोगकर्ता होने की आवश्यकता होगी, यह जानकर कि वीपीएन + प्रॉक्सी कैसे होता है, और उन प्रकार के लोग संभवतः स्मार्ट हैं जो काम पर टोरेंट के लिए पर्याप्त नहीं हैं।
djangofan

@packs - हाँ, ISPs निश्चित रूप से पैकेट में सबसे ऊपर है, लेकिन अगर उनके पास uTorrent एन्क्रिप्शन सक्षम है, तो आप यह नहीं बता पाएंगे कि ट्रैफ़िक क्या है सिवाय इसके कि उनके पास बड़ी संख्या में कनेक्शन खुले हैं। सभी के लिए वे जानते हैं, आप डायब्लो 3 खेल रहे होंगे
djangofan

1

बिटटोरेंट और अधिकांश पी 2 पी अब दिन काफी स्पष्ट है। ट्रैफ़िक को ब्लॉक करने के बजाय, बड़ी मात्रा में बैंडविड्थ का उपयोग करने वाले क्लाइंट्स को भूखा रखने के लिए क्यूओएस नियमों का उपयोग करें, या धीरे-धीरे पी 2 पी ट्रैफ़िक को शून्य से अधिक समय तक शून्य करें। यह प्रोटोकॉल को अवरुद्ध नहीं करेगा, लेकिन यह P2p'ers को रोक देगा कि यह इतना धीमा है कि यह करने लायक नहीं है।

याद रखें कि सभी टोरेंट ट्रैफ़िक खराब नहीं होते हैं, कुछ अच्छे होते हैं! :-)


1

बिट टोरेंट सीडिंग और पीयर डिस्कवरी को छोड़ने के लिए इन iptables फॉरवर्डिंग रूल्स का उपयोग करें। उन्होंने मेरे लिए काम किया।

#Block Torrent
iptables -A FORWARD -m string --algo bm --string "BitTorrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "BitTorrent protocol" -j DROP
iptables -A FORWARD -m string --algo bm --string "peer_id=" -j DROP
iptables -A FORWARD -m string --algo bm --string ".torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce.php?passkey=" -j DROP
iptables -A FORWARD -m string --algo bm --string "torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce" -j DROP
iptables -A FORWARD -m string --algo bm --string "info_hash" -j DROP

कार्रवाई में नियम, अच्छी तरह से काउंटर इंक्रीमेंटिंग मारा।

# iptables -vL -n

Chain FORWARD (policy ACCEPT 16403 packets, 6709K bytes)
 pkts bytes target     prot opt in     out     source               destination
    8   928 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "BitTorrent" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "BitTorrent protocol" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "peer_id=" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  ".torrent" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "announce.php?passkey=" ALGO name bm TO 65535
  582 52262 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "torrent" ALGO name bm TO 65535
   10  1370 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "announce" ALGO name bm TO 65535
   31  4150 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "info_hash" ALGO name bm TO 65535

साझा करने के लिए धन्यवाद। फ़िल्टरिंग कैसे काम करता है? यदि BitTorrentURL में स्ट्रिंग पाया जाता है, तो इसे गिरा दिया जाएगा? यह केवल प्रारंभिक टोरेंट फ़ाइल को डाउनलोड करने से रोकने के लिए है, लेकिन एक बार टोरेंट फ़ाइल डाउनलोड हो जाने के बाद, यह बिटोरेंट ट्रैफ़िक को अवरुद्ध नहीं करेगा, सही है?
होउमैन

0

अल्ट्रसर्फ जैसे लोकप्रिय एसएसएल टनलिंग कार्यक्रम उपयोगकर्ताओं को आपके फायरवॉल को आसानी से बायपास करने दे सकते हैं। एन्क्रिप्टेड बिटकॉइन ट्रैफिक को ब्लॉक करने के लिए आपको एक विशेष यूटीएम डिवाइस की आवश्यकता होगी जो http (s) पर जाने वाली एन्क्रिप्टेड सुरंगों का निरीक्षण और ब्लॉक कर सके। मैं केवल एक के बारे में जानता हूं जो ऐसा करने में सक्षम है - एस्टारो, लेकिन अधिक होना चाहिए।


0

आप पहले से बताए गए अनुसार ip2p का उपयोग कर सकते हैं। हालांकि यह पूरी तरह से चीजों को ब्लॉक करने वाला नहीं है। आदर्श रूप से, आपको प्रत्येक बंदरगाह का फायर वॉलिंग होना चाहिए जिसका आप विशेष रूप से उपयोग नहीं करते हैं, और ip2p का उपयोग कर रहे हैं। एक सही समाधान नहीं है, लेकिन सबसे अच्छा आप प्राप्त करने की संभावना है।


0

आप सीधे पोर्ट ब्लॉकिंग का उपयोग नहीं कर सकते। कुछ विकल्प है। Layer7 फ़िल्टर धीमा, अविश्वसनीय है, और मेरे ज्ञान में अब नहीं रखा गया है।

IPP2P ठीक है, लेकिन OpenDPI द्वारा सुपरसीड किया गया था, जिसे अब प्रायोजक ipoque (जो PACE बेचते हैं, एक वाणिज्यिक समतुल्य है) द्वारा बंद कर दिया गया है, nDPI इस छोटे पथ का तार्किक निष्कर्ष प्रतीत होता है: http://www.ntopn.org/products/ ndpi /

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


0

नीचे मेरा iptables नियम निर्धारित है। यह एक आकर्षण की तरह काम करता है। मैंने एक https पारदर्शी इंटरसेप्ट प्रॉक्सी बनाया है और उस प्रॉक्सी सर्वर के माध्यम से सभी ट्रैफ़िक भेजते हैं।

इस iptables नियमों का उपयोग करके, मैं नेटवर्क को नियंत्रित कर सकता हूं।

  • 2086, 2087, 2095 पोर्ट खुले हैं क्योंकि हम WHM cpanel और cpanel वेब मेल का उपयोग करते हैं।
  • अतिरिक्त वेब सर्वर के लिए 8080।
  • 192.168.2.0 स्थानीय नेटवर्क है।

IPTables नियम:

#Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*nat
:PREROUTING ACCEPT [470:38063]
:POSTROUTING ACCEPT [9:651]
:OUTPUT ACCEPT [1456:91962]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:3127
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
# Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*filter
:INPUT ACCEPT [2106:729397]
:FORWARD ACCEPT [94:13475]
:OUTPUT ACCEPT [3252:998944]
-A INPUT -p tcp -m tcp --dport 3127 -j ACCEPT
-A FORWARD -m string --string "BitTorrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "BitTorrent protocol" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "peer_id=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string ".torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce.php?passkey=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "info_hash" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "get_peers" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce_peer" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "find_node" --algo bm --to 65535 -j DROP
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 8080 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2086 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2087 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2095 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.2.0/24 -p udp -m udp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.