ICMP को ब्लॉक क्यों नहीं किया?


53

मुझे लगता है कि मेरे लगभग मेरे CentOS 5.3 सिस्टम पर मेरे iptables सेटअप पूर्ण है। यहाँ मेरी स्क्रिप्ट है ...

# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains

# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP

# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT

# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Block all other traffic 
iptables -A INPUT -j DROP

संदर्भ के लिए, यह मशीन एक वर्चुअल प्राइवेट सर्वर वेब ऐप होस्ट है।

एक में पिछले प्रश्न , ली बी ने कहा कि मैं "ICMP को लॉक में थोड़ा और अधिक।" चाहिए सिर्फ इसे पूरी तरह से ब्लॉक क्यों नहीं किया? अगर मैंने ऐसा किया (तो क्या बुरा होगा) क्या होगा?

अगर मुझे ICMP को ब्लॉक करने की आवश्यकता नहीं है, तो मैं इसे और नीचे कैसे लॉक कर सकता हूं?


4
iptables-INPUT -j DROP <गलत (राय) आपको नीति को iptables- INPUT DROP पर सेट करना चाहिए जो मूल रूप से डिफ़ॉल्ट सेट करने के समान है। डेफलाइन द्वारा अस्वीकृत।
एक्सनोटेरासाइड

2
आइए जानें कि icmp को ब्लॉक करना एक बुरा विचार क्यों है: Security.stackexchange.com/a/22713/485
Rory Alsop

जवाबों:


117

ICMP तरीका है, "ट्रेसरआउट" और "पिंग" से अधिक है। इसका उपयोग प्रतिक्रिया के लिए किया जाता है जब आप एक DNS सर्वर (पोर्ट अनुपलब्ध) चलाते हैं, जो कि एक आधुनिक DNS सर्वर में, वास्तव में तेजी से क्वेरी करने के लिए एक अलग मशीन का चयन करने में मदद कर सकता है।

ICMP भी है, जैसा कि ऊपर उल्लेख किया गया था, पथ MTU खोज के लिए उपयोग किया जाता है। संभावना आपके ओएस सेट "डीएफ" (टुकड़ा न करें) टीसीपी पैकेट पर भेजती है। यदि पैकेट के उस आकार को संभालने में विफल रहता है तो यह एक ICMP "विखंडन आवश्यक" पैकेट वापस पाने की उम्मीद कर रहा है। यदि आप सभी ICMP को ब्लॉक करते हैं, तो आपकी मशीन को अन्य फालबैक मैकेनिज्म का उपयोग करना होगा, जो मूल रूप से एक PMTU "ब्लैक होल" का पता लगाने के लिए एक टाइमआउट का उपयोग करता है और कभी भी सही तरीके से अनुकूलन नहीं करेगा।

इसके अतिरिक्त, आपको अपने आप से पूछना चाहिए कि आप ICMP को ब्लॉक क्यों करना चाहते हैं। विशेष रूप से आप यहाँ रोकने के लिए क्या प्रयास कर रहे हैं? यह स्पष्ट है कि आप यह नहीं समझते कि ICMP का उपयोग किस लिए किया जाता है, जो कि सामान्य है। मैं आपको पूरी तरह से समझ में नहीं आने वाले कुछ को रोकने में बेहद सतर्क रहूंगा।

इस बारे में जानने के लिए इसे और भी कठिन बनाने के लिए, कई सामान्य फ़ायरवॉल पुस्तकें "ICMP को ब्लॉक करें" कहती हैं - यह स्पष्ट है कि उनके लेखकों ने कभी भी RFC को नहीं पढ़ा है या ऐसी सलाह के आसपास के मुद्दों को हल करना पड़ा है। सभी ICMP को ब्लॉक करना बुरी सलाह है।

अब, इसे सीमित करने से चोट भी लग सकती है। यदि आपकी मशीन व्यस्त है, या यहां तक ​​कि अगर यह नहीं है, तो आप अच्छी मात्रा में आईसीएमपी ट्रैफ़िक प्राप्त कर सकते हैं। मेरे वेब सर्वर को शायद प्रति मिनट लगभग 10-100 आईसीएमपी पैकेट मिलते हैं, जिनमें से अधिकांश पीएमटीयू की खोज है। यहां तक ​​कि अगर किसी ने किसी प्रकार के आईसीएमपी पैकेट के साथ मेरे सर्वर पर हमला करने का विकल्प चुना है, तो यह वास्तव में एक बड़ा सौदा नहीं है। यदि आपकी मशीन एक भी टीसीपी कनेक्शन (ssh, http, mail, आदि) को स्वीकार करती है, तो संभावना है कि ICMP की तुलना में कभी भी बड़ा हमला वेक्टर होगा।


4
यह किसी भी बेहतर नहीं कहा जा सकता है। +1
मासिमो

9
नहीं है एक ICMP के प्रकार है कि कर सकते हैं हानिकारक हो redirectप्रकार। यह एकमात्र ICMP प्रकार है जिसे आपको कभी भी अवरुद्ध करने पर विचार करना चाहिए।
ह्यूबर्ट करियो

2
@ यह बहुत मददगार होगा यदि आप ब्लॉक करने के बारे में अधिक सलाह के लिए लिंक कर सकते हैं redirect। मैं अब समझ गया हूं कि मुझे इस पर विचार करना चाहिए, लेकिन मैं बेहतर नहीं हूं - फिर भी एक तरह से या किसी अन्य का फैसला नहीं कर सकता :) क्या यह जोखिम है या नहीं?
रोमन डेस

रीडायरेक्ट ICMP संदेश होस्ट को बताता है (रूटर्स को उन्हें कभी भी स्वीकार नहीं करना चाहिए) कि इस तरह के और सबनेट या होस्ट एक अलग गेटवे पर उपलब्ध है (आमतौर पर एक तेज राउटर द्वारा)। कम से कम यही RFC1122 का कहना है।
ह्यूबर्ट करियो

2
मेरा मानना ​​है कि लिनक्स पर डिफ़ॉल्ट रूप से रीडायरेक्ट को अनदेखा किया जाता है। लेकिन हाँ, उस एक को छानने के लिए बेहतर है।
फॉक्स

26

ICMP का उपयोग डायग्नोस्टिक (जैसे पिंग, ट्रेसरआउट) और नेटवर्क नियंत्रण (जैसे पीएमटीयू डिस्कवरी) के लिए किया जाता है। ICMP का अंधाधुंध अवरोधन अन्य लोगों को सभी प्रकार की नाराज़गी का कारण बनता है, और जब तक आप यह नहीं जानते कि आप क्या कर रहे हैं, आपको इसे अकेला छोड़ देना चाहिए।


14

मैं कभी नहीं समझ पाया कि लोग ICMP को क्यों देखते हैं, जैसा कि ऊपर कहा गया है कि यह कभी भी खुद को और दूसरों को सिरदर्द का कारण बनता है। आप यह निर्धारित कर सकते हैं कि यदि कोई होस्ट आसानी से पर्याप्त है और इसलिए जब तक वह सीमित है तो डॉस के रूप में उपयोग नहीं किया जाना है तो मैंने इसे ब्लॉक करने के लिए कोई बाध्यकारी कारण नहीं सुना है। (यदि कोई कारण बता सकता है तो कृपया पोस्ट करें)


5
यह सूचना सुरक्षा के पंथ का हिस्सा है। सुरक्षा लोगों को लगता है कि उन्हें चीजों को सही ठहराने की जरूरत नहीं है, क्योंकि केवल नश्वर लोग संभवतः सुरक्षा निहितार्थ को नहीं समझ सकते हैं। दूसरी ओर, नेटवर्क और सिस्टम व्यवस्थापक सिरदर्द को सादे आलसीपन के लिए जिम्मेदार ठहराया जा सकता है। आखिरकार, अगर पता था कि क्या चल रहा है, तो चीजें कभी नहीं
टूटेंगी

यह अनिवार्य रूप से इसके लिए नैदानिक ​​उपकरण बंद करने के लिए मुझे अजीब लगता है; जैसा कि जानकारी है कि एक हमलावर को दिलचस्पी होगी, यह अनुमान लगाया जा सकता है कि मशीन पर चलने पर आपके पास कोई अन्य सेवा है। आपका अधिकार; यह बहुत "पंथ" y लगता है, सवाल ही मत करो।
एंटीट्रिब्यू

6
मैंने कभी नहीं समझा कि क्यों फ़ायरवॉल पुस्तकों के लेखक पूरी तरह से याद करते हैं कि आईसीएमपी "पिंग" और "ट्रेसरआउट" से कहीं अधिक है और फिर भी किताबें और ब्लॉग और एचओडब्ल्यू-टीएस सभी कहते हैं "आईसीएमपी को अवरुद्ध करें।"
माइकल ग्रेफ

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

8

आप बस सीमा-इनच आईसीएम की कोशिश कर सकते हैं जिस तरह से इसे डॉस हमले के रूप में इस्तेमाल नहीं किया जा सकता है। लेकिन वहाँ बहुत सारे समस्या निवारण उपकरण हैं जैसे कि पिंग, mtr (मैं विंडोज़ समतुल्य भूल जाता हूं), ट्रैसरूट (ट्रेसर्ट), जो आईसीएमपी का उपयोग करता है। उन्हें पूरी तरह से छोड़ देना सिर्फ मूर्खता है। यह जांचने का एक अच्छा तरीका है कि क्या आपका उदाहरण ऊपर है, भले ही आप किसी भी पोर्ट पर टेलनेट न कर सकें।

--limit 10/second
आपके icmp नियम (ओं) के लिए शायद एक सभ्य सीमा दी गई है, जो कि वास्तव में एक कंप्यूटर कितना संभाल सकता है।


6

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

सुरक्षा सिद्धांत आम तौर पर यह है कि आप केवल क्या आवश्यक है सक्षम करते हैं। अन्य चीजें (जो उपयोगी हो सकती हैं - उदाहरण के लिए, पिंग प्रतिक्रियाओं) का उपयोग आपके सिस्टम को बाहर निकालने के लिए एक हमलावर द्वारा किया जा सकता है, या संभवतः कुछ अभी तक खोजी गई भेद्यता के लिए एक हमला वेक्टर के रूप में।

तो, ICMP संदेश प्रकारों को देखते हुए, आपको अपने सिस्टम के सामान्य, उचित संचालन के लिए क्या चाहिए?

  • इको रिप्लाई (पिंग) - इतना नहीं
  • गंतव्य अप्राप्य - यहाँ उपयोगी जानकारी के बहुत सारे। इसे अक्षम करें और आप कुछ क्लाइंट के लिए अपने सर्वर तक पहुंच तोड़ देंगे।
  • स्रोत शमन - 1995 के बाद से पदावनत, और जाहिर तौर पर (नवीनतम) 2005 के बाद से मेजबान कार्यान्वयन से हटा दिया गया। tools.ietf.org/html/rfc6633#section-1।
  • पुनर्निर्देशित - लगभग निश्चित रूप से नहीं
  • राउटर विज्ञापन और सॉलिसिटेशन - अगर आपको अपने मार्गों को वैधानिक रूप से कॉन्फ़िगर करने की आवश्यकता नहीं है, और DoS के लिए इस्तेमाल किया जा सकता है। जब तक आपको पता है कि आपको इसकी आवश्यकता है, तब तक इसे ब्लॉक कर दूंगा, और यदि आपको इसकी आवश्यकता है, तो संभवतया केवल ज्ञात ज्ञात राउटर से जानकारी स्वीकार करने के लिए एक नियम को कोड करें।
  • ttl पार हो गया - न केवल ट्रेसरआउट के लिए, आपको बताता है कि आपका ट्रैफ़िक अपने गंतव्य पर नहीं जा रहा है

...और इसी तरह। यदि आप वास्तव में इसे समझना चाहते हैं, तो विभिन्न आईसीएमपी प्रकारों के बारे में जानें और वे किस लिए हैं। विकिपीडिया लेख एक अच्छा प्रारंभिक बिंदु है।

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

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


2
वास्तव में स्रोत शमन 1995 के बाद से हटा दिया गया है, और स्पष्ट रूप से (नवीनतम) 2005 :) के बाद से मेजबान कार्यान्वयन से हटा दिया गया है। tools.ietf.org/html/rfc6633#section-1
sourcejedi

जवाब अद्यतन, धन्यवाद। अगर मैं थोड़ा कठिन होता तो मुझे याद आता कि, दुआ।
डेन प्रिट्स

मुझे लगता है कि PMTU खोज के लिए ICMP पिंग आवश्यक है (जो कई ब्राउज़र और उपकरण उपयोग करते हैं)। इसे अस्वीकार करना आपके उपयोगकर्ताओं के लिए अपवित्र होने जैसा है। पिंग का उपयोग कई नैदानिक ​​उद्देश्यों के लिए भी किया जाता है, और अधिकांश बड़े खिलाड़ी इसकी अनुमति देते हैं। इसके अलावा, इसे अस्वीकार करने में बहुत कम लाभ है।
14

2
PMTU खोज के लिए इको (पिंग) पैकेट की आवश्यकता नहीं है। पीएमटीयू की खोज आउटगोइंग पैकेट पर नॉट फ्रेगमेंट (डीएफ) बिट सेट करके की जाती है, और आईसीएमपी डेस्टिनेशन अनरीचेबल पर निर्भर करता है - छोटे लिंक एमटीयू के साथ राउटर्स से वापस आने वाले संदेशों की जरूरत है। पिंग निश्चित रूप से नैदानिक ​​उद्देश्यों के लिए उपयोगी है, लेकिन यह नेटवर्क टोही और DoS के लिए संभावित रूप से भी उपयोगी है। आप सभी के लिए और मुझे पता है कि लिनक्स में ICMP स्टैक में एक अव्यक्त रिमोट-रूट बग है। यदि आपका मानक "क्या मुझे इसकी आवश्यकता है" उत्तर "नहीं" है।
दान प्रिट्स

1
(ध्यान दें कि मैंने उत्तर में लिखा है कि गंतव्य के पहुंच से बाहर होने के संदेश अनुपलब्ध हो जाएंगे। पीएमटीयू की खोज वास्तव में क्या सोच रही थी। :)
दान प्रिट्स

4

यह नेटवर्क कनेक्टिविटी मुद्दों को हल करने के लिए एक उपयोगी नैदानिक ​​उपकरण है।

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

असली सवाल यह है कि "ICMP को ब्लॉक क्यों करें?" आपको क्या लाभ होता है? बस आपकी सीमा पर और आपकी मूल्यवान संपत्ति के सामने अच्छे फ़िल्टरिंग नियम हैं।


3

पिंग एक अच्छा नैदानिक ​​उपकरण है, आप वास्तव में चाहते हैं कि आप किसी दिन यह था। मैं इनका उपयोग कर रहा हूं:

-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT

आप भी इसे गला घोंटना चाहते हो सकता है।


8
यह उन कारणों के लिए अपर्याप्त है जो दूसरों ने इंगित किए हैं ( आईसीएमपी केवल पिंग की तुलना में अधिक है )। आपको चुनिंदा विशिष्ट, संभावित रूप से हानिकारक ICMP संदेशों को ब्लॉक करना चाहिए , और अनमॉल किए गए अन्य नियंत्रण संदेशों को अनुमति देना चाहिए ।
voretaq7

2

आजकल भी सर्वर साइड में ICMP पैकेट्स को सीमित करना DDoS हमलों पर सिरदर्द पैदा कर सकता है। एक सर्वर पर बड़ी विंडो ICMP रिक्वेस्ट भेजकर ज्यादातर अटैक किया जाता है और अगर सर्वर इसमें से प्रत्येक का जवाब देने की कोशिश कर रहा है, तो अनुमान लगाएं कि क्या होता है?

मुख्य बात यह है कि हमारे पास एक टीमपेक सर्वर है जो हर एक दिन खराब पैकेट प्राप्त करता है, दो महीनों में कुछ दिन थे जो हमारे पास कुछ "फेटाइम" था। हमने जो किया था वह पूरी तरह से अक्षम / अवरुद्ध ICMP रिस्पॉन्स है, हमारे पास सर्वर पर कोई DNS सर्वर, कोई NTP सर्वर, कोई मेल सर्वर, कोई FTP सर्वर नहीं है, केवल दो एपाचे और टीमपेक हैं। सेवाओं के लिए अनावश्यक सभी पोर्ट बंद हैं। हम ssh को ब्लॉक करने और केवल दो पोर्ट को खुला छोड़ने की योजना बना रहे हैं। आज 21k (!) स्थायी प्रतिबंध है।

स्थिति यह है कि हमलावर ज्यादातर आईसीएमपी सुरंगों का उपयोग करते हैं और कुछ बहुत ही रोचक लॉग लाइनों पर सर्वर व्यवस्थापक के साथ चर्चा की गई और उन्होंने कहा कि उनके पास सर्वर आईसीएमपी अनुरोध हैं, इसलिए हमलावरों ने इस्तेमाल किया कि हमले को सुरंग बनाने के लिए उन्हें और हम पर हमला करें। अजीब लगता है लेकिन यह सच है।

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

मैं कहता हूं कि मैं क्या करूं, अगर आप सहमत नहीं हैं - यह मत करो। इतना ही आसान। सौभाग्य


0

न्यूनतम के रूप में, आपको icmp प्रकार 3 (गंतव्य पहुंच योग्य), 4 (स्रोत बुझाना) और 11 (समय पार हो जाना) पास करने की अनुमति देनी चाहिए। नेटवर्क समस्याओं से निपटने के लिए इन सभी प्रकारों का उपयोग किया जाता है और इन्हें फ़िल्टर नहीं किया जाना चाहिए।

iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

(स्रोत शमन प्रकार वर्तमान में पदावनत किया गया है, लेकिन यह इसे खुला नहीं होने देगा)


-2

मैं स्थानीय इंट्रानेट से आईसीएमपी यातायात की अनुमति देता हूं, इसे इंटरनेट से अवरुद्ध करता हूं। इस तरह से मेरा सर्वर सभी ऑनलाइन अदृश्य है (यह केवल एक गैर मानक एसएसएच पोर्ट पर प्रतिक्रिया करता है)।

iptables -I INPUT 7 -d 208.180.X.X -p icmp --icmp-type 8  -j DROP
iptables -I INPUT 8 -d 208.180.X.X -p icmp --icmp-type 0  -j DROP
iptables -I INPUT 9 -d 208.180.X.X -p icmp --icmp-type 11 -j DROP

यह मानक लूपबैक, स्थापित, LAN वाइटेलिस्ट, वीओआइपी प्रदाता श्वेतसूची, और एसएसएच पोर्ट ACCEPTs के बाद इसे सम्मिलित करता है। मैं अपने इच्छित ट्रैफ़िक की अनुमति देता हूं, और फिर सर्वर को दुनिया के बाकी हिस्सों में अदृश्य रखने की पूरी कोशिश करता हूं।


1
मुझे लगता है कि मैं समझता हूं कि आपका क्या कहना है, लेकिन यह आपके द्वारा लिखी गई तालिकाओं के साथ नहीं है। यदि आपके छोड़ने के विशिष्ट ICMP प्रकार, उन अनिर्दिष्ट से क्या होता है ??? मैं डिफ़ॉल्ट-अनुमति मानूंगा, अन्यथा जब यह आंतरिक होगा तो एक ब्लॉक क्यों निर्दिष्ट करेगा। फिर आप "मुझे जो ट्रैफ़िक चाहिए, वह मैं बताता हूं", जो कि डिफ़ॉल्ट-अस्वीकार या डिफ़ॉल्ट-ड्रॉप को इंगित करेगा ... मूल रूप से आपका उत्तर असंगत है, और सबसे अच्छा भ्रमित है।
जेएम बेकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.