IPtables वाली साइट्स को कैसे ब्लॉक करें


7

मैं साइटों का उपयोग करके ब्लॉक करना चाहूंगा iptables। मैं इस बारे में कैसे जा सकता हूं, और मैं यह कैसे सुनिश्चित करूं कि iptablesनियम सहेजे गए हैं?


आप किस लिनक्स वितरण का उपयोग कर रहे हैं?
पॉल

मैं जेंटू लिनक्स का उपयोग कर रहा हूं।
gustavosiq

क्यों नहीं उपयोग / आदि / मेजबान? सीएफ यह
जेरेमिया

जवाबों:


10

Iptables नियमों के साथ साइटों को अवरुद्ध करना एक बहुत बुरा विचार है, मुख्यतः क्योंकि iptables (अधिकांश फ़ायरवॉल) IP पते से संबंधित है, और किसी साइट और उसके IP पते के बीच संबंध बल्कि ढीला है:

  1. एक साइट में कई आईपी ​​पते हो सकते हैं, जिन्हें अक्सर बदला जा सकता है। एक बार जब iptables नियम बनाए जाते हैं, भले ही आप किसी नियम के हिस्से के रूप में किसी साइट का नाम निर्दिष्ट करते हों , उस क्षण का पहला IP पता उपयोग किया जाता है। यदि साइट का पता बदल जाता है, तो आपके iptables नियम पुराने हो जाएंगे।

  2. एक आईपी पते कई साइटों की मेजबानी कर सकता है (और यह अक्सर होता है)। यह केवल आईपी पते की कमी के कारण अधिक बार प्राप्त होगा। यदि आप एक IP पता ब्लॉक करते हैं, तो आप उस पर होस्ट की गई सभी साइटों को ब्लॉक कर देते हैं।

इसलिए, यद्यपि अन्य उत्तर यह बताते हैं कि आप इसे कैसे करते हैं, मैं आपसे कुछ अन्य समाधान लेने का आग्रह करता हूं। उदाहरण के लिए, एक पारदर्शी http प्रॉक्सी स्थापित करने से आपको वह प्राप्त होगा जो आपको चाहिए। यह पारदर्शी HTTP प्रॉक्सी HOWTO थोड़ा पुराना है, लेकिन यह आपको आरंभ करने में मदद करेगा।

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

साइट ब्लॉकिंग (अन्य फ़ायरवॉल, परदे के पीछे, आदि) को संभालने के अन्य तरीके हैं, लेकिन iptables नियम इसे संभालने के सबसे खराब तरीकों में से एक है।


1

आप इसे प्राप्त करने के लिए iptables स्ट्रिंग मिलान का उपयोग कर सकते हैं:

iptables -A OUTPUT -p tcp -m string --string "block-me.com" --algo kmp -j REJECT

-A OUTPUTOUTPUTश्रृंखला में निम्न नियम जोड़ता है ।

-m string --string "block-me.com" --algo kmpनुथ-मॉरिस-प्रैट मैचिंग एल्गोरिथ्मblock-me.com का उपयोग करके स्ट्रिंग को देखने के लिए iptables बताता है

जब आप iptables-persistentअपने सिस्टम को उपलब्ध करते हैं तो पैकेज को स्थापित करने के लिए अपनी मशीन को फिर से शुरू करने के लिए अपने iptables को बनाने का सबसे आसान तरीका है। यदि आप नए नियम सेट करने के बाद पैकेज स्थापित करते हैं, तो आपसे पूछा जाएगा कि क्या आप स्थायी उपयोग के लिए वर्तमान में उपयोग किए गए नियमों को सहेजना चाहते हैं। iptables-persistentमूल रूप से केवल फाइलों में सहेजे गए नियमों को लोड करता है /etc/iptables/rules.v4और /etc/iptables/rules.v6

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

iptables-save > /etc/iptables/rules.v4
iptables-save > /etc/iptables/rules.v6

अब उन्हें रिबूट पर बहाल किया जाएगा।

वास्तव में आप की जरूरत नहीं है iptables-persistentया तो। इस सवाल का एक और लगभग सरल समाधान है।

ध्यान दें कि आपको iptables-saveरूट के रूप में चलाने की जरूरत है , या sudoइस तरह से:

sudo bash -c "iptables-save > /etc/iptables/rules.v4"

यदि आप बस चलाते हैं sudo iptables-save > /etc/iptables/rules.v4तो आपको "पहुँच अस्वीकृत" संदेश मिलेगा rules.v4


@artificerpi हैलो, आपके इनपुट के साथ अच्छा है, लेकिन मुझे लगता है कि आपको इसका उत्तर देना चाहिए, तो आपको इसे एक प्रश्न बनाना चाहिए। आपका दिन शुभ हो!
पेटस्पेडबाइवर

1

ऐसे कई तरीके हैं जिनसे हम https साइटों को प्रतिबंधित कर सकते हैं।

1- स्क्वीड प्रॉक्सी

2- IPtables

स्क्वीड प्रॉक्सी सर्वर के साथ

-> आप मेरे मामले में विद्रूप विन्यास खोलें (vim /etc/squid/squid.conf)

-> परिभाषित के रूप में नियम रखें।

acl badsite dstdomain .facebook.com .soundcloud.com .playit.pk .songs.com

http_reply_access बैडसाइट को अस्वीकार करें # यह लाइन HTTP को ब्लॉक करती है

http_access इनकार करना बुरा मानना ​​# यह लाइन ब्लॉक HTTPS

-> इसके बाद अपने स्क्वीड को रीस्टार्ट करें

Iptables के साथ नियमों को यहाँ परिभाषित करने की आवश्यकता है

iptables -N STREAM

iptables -I OUTPUT -m string --string "www.facebook.com" --algo bm --from 1 - 600 -j STREAM

iptables -I OUTPUT -m string --string "facebook.com" --algo bm --from 1 - 600 -j STREAM

iptables -I FORWARD -m string --string "www.facebook.com" --algo bm --from 1 - 600 -j STREAM

iptables -I FORWARD -m string --string "facebook.com" --algo bm --from 1 - 600 -j STREAM iptables-a STREAM -j REJECT


0

Gentoo के तहत, आपके द्वारा जोड़े गए iptables नियमों को बचाने के लिए, उपयोग करें

/etc/init.d/iptables save

हालाँकि, आपको यह भी सुनिश्चित करना होगा कि iptables init स्क्रिप्ट (जिसका उद्देश्य नियमों को फिर से लोड करना है) बूट पर चलाया गया है:

rc-update add iptables default 

दोनों कमांड को रूट के रूप में चलाया जाना चाहिए (यदि आपने इसे स्थापित किया है तो sudo के माध्यम से)


0

ठीक है, कहते हैं कि आप आईपी पते को 192.168.1.5 ब्लॉक करना चाहते हैं, बस इसे अपने शेल स्क्रिप्ट में कमांड प्रॉम्प्ट में दर्ज करें:

iptables -A INPUT -s 192.168.1.5 -j DROP

फिर आप इस आदेश के साथ सर्वर से IP पता 192.168.1.2 को अवरुद्ध कर सकते हैं:

iptables -A OUTPUT -d 192.168.1.2  -j DROP

और उस साइट को कभी भी आपको फिर से परेशान करने से रोकना चाहिए। उम्मीद है की यह मदद करेगा।


ठीक है। और नियमों को बचाने के लिए? उदाहरण के लिए मशीन को पुनः आरंभ करने के लिए, समान नियमों के साथ जारी रखें। नियमों के बिना खो दिया है? आपका बहुत बहुत धन्यवाद!
gustavosiq

मुझे ऐसा लगता है, हालाँकि मुझे कभी भी linux का हैंग नहीं हुआ, और इसके तुरंत बाद मैक OSX में बदल दिया गया। लेकिन मुझे जो पता है, उससे काम करना चाहिए।
जॉन वेलेंटाइन

नहीं, यह विशेष रूप से नियमों को सहेजे बिना नहीं बताया जाना चाहिए। Iptables कमांड कर्नेल को विभिन्न चीजों को ब्लॉक करने के लिए कहती है। बूट होने पर, इन कमांड को फिर से खेलना होगा।
पॉल

@thatguy - मैंने -p tcpआपके आउटगोइंग ब्लॉक से एडिट किया , क्योंकि यह केवल सभी पैकेटों की बजाय tcp पैकेट्स को आउटबाउंड करना बंद करेगा।
पॉल

@Paul - धन्यवाद उस हिस्से के बारे में भूल गया।
जॉन वेलेंटाइन 1

-1
-A INPUT -p tcp -m tcp -d www.facebook.com -j DROP

हमने अभी इसका अध्ययन किया है

डेबियन 7

यदि आप उन्हें इस साइट को पिंग करने देना चाहते हैं, तो बस --dport 80,443 वेबसाइट के नाम के बाद जोड़ें

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