क्या ipjables में -j REJECT या -j DROP सेट करना बेहतर है?


33

द्वीपसमूह विकी पर iptables नियमों का एक उदाहरण है:

# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sun Mar 17 14:21:12 2013

कुछ दिन पहले मेरे दोस्त ने मुझसे पूछा कि REJECTपिछले तीन नियमों में क्यों है । उन्होंने मुझसे कहा कि DROPइसके बजाय होना चाहिए , और उन्होंने मामले में बेहतर सुरक्षा के बारे में कुछ उल्लेख किया DROP

तो, मेरे दो सवाल हैं:

  1. तीन नियम क्या करते हैं?

  2. क्या मुझे वहां DROPजगह बनाने से कोई फर्क पड़ता है REJECT --reject-with? यदि हाँ, तो क्या अंतर है?


जवाबों:


33

तीन नियम क्या करते हैं?

वे 3 नियम बहुत आत्म-व्याख्यात्मक लगते हैं:

  1. आने वाले UDP पैकेट को ICMP संदेश "पोर्ट न करने योग्य" के साथ अस्वीकार करें
  2. "टीसीपी रीसेट" के साथ आने वाले टीसीपी पैकेट को अस्वीकार करें
  3. ICMP संदेश "प्रोटोकॉल अगम्य" के साथ आने वाले पैकेट (किसी भी अन्य प्रोटोकॉल के) को अस्वीकार करें

यदि आप अधिक विवरण (यूडीपी / टीसीपी पैकेट, आईसीएमपी के बारे में) की तलाश में हैं, तो आपको नेटवर्किंग डॉक्स में खुदाई करने की आवश्यकता है, और शायद यह man iptablesभी।

क्या इससे मुझे कोई फ़र्क पड़ता है जब मैं वहां ड्राप डालता हूं? यदि हाँ, तो क्या कोई मुझे अंतर समझा सकता है, मैं वास्तव में इसकी सराहना करूँगा।

इससे फर्क पड़ता है। और आम धारणा के विपरीत, DROPइससे बेहतर सुरक्षा नहीं देता है REJECT। यह वैध उपयोगकर्ताओं को असुविधा देता है, और यह दुर्भावनापूर्ण रूप से दुर्भावनापूर्ण लोगों से सुरक्षा नहीं करता है। इस पोस्ट में तर्क के बारे में विस्तार से बताया गया है:

http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject

REJECT के बजाय DROP का उपयोग करने का एक सामान्य कारण यह है कि पोर्ट कौन से खुले हैं, इसके बारे में जानकारी देने से बचना चाहिए, हालांकि, पैकेट को त्यागने से अस्वीकृति के रूप में बिल्कुल जानकारी मिलती है।

REJECT के साथ, आप अपना स्कैन करते हैं और परिणामों को "कनेक्शन स्थापित" और "कनेक्शन अस्वीकृत" में वर्गीकृत करते हैं।

DROP के साथ, आप परिणामों को "कनेक्शन स्थापित" और "कनेक्शन टाइम आउट" में वर्गीकृत करते हैं।

सबसे तुच्छ स्कैनर ऑपरेटिंग सिस्टम "कनेक्ट" कॉल का उपयोग करेगा और अगले पर शुरू होने से पहले एक कनेक्शन का प्रयास पूरा होने तक इंतजार करेगा। पैकेट गिराकर इस तरह के स्कैनर को काफी धीमा कर दिया जाएगा। हालाँकि, यदि आक्रमण प्रति कनेक्शन प्रयास में 5 सेकंड का समय निर्धारित करता है, तो मशीन पर प्रत्येक आरक्षित पोर्ट (1..1023) को केवल 1.5 घंटे में स्कैन करना संभव है। स्कैन हमेशा स्वचालित होते हैं, और एक हमलावर को इसकी परवाह नहीं है कि परिणाम तत्काल नहीं है।

एक अधिक परिष्कृत स्कैनर ऑपरेटिंग सिस्टम के टीसीपी कार्यान्वयन पर निर्भर होने के बजाय खुद पैकेट भेजेगा। इस तरह के स्कैनर REJECT या DROP की पसंद के लिए तेज, कुशल और उदासीन हैं।

निष्कर्ष

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


@ भजन - क्या आप थोड़ा और लिख सकते हैं कि वास्तव में क्या होता है जब एक पैकेट तीन नियमों में से प्रत्येक तक पहुंचता है?
मिखाइल मोरफिकोव

3
@ कीवी - लिंक पढ़ें और इसे स्वयं आज़माएं। DROP REJECT से बेहतर सुरक्षा नहीं देता है। यह वैध उपयोगकर्ताओं को असुविधा देता है, और यह दुर्भावनापूर्ण रूप से दुर्भावनापूर्ण लोगों से सुरक्षा नहीं करता है। इसका कारण यह है कि वैध उपयोगकर्ता धीमी गति से कनेक्शन का इंतजार करते हैं और समय-समय पर प्रतीक्षा न करने के लिए पटाखे अपने उपकरणों को कॉन्फ़िगर करते हैं। तथ्य यह है कि कनेक्शन धीमा है (कुछ समय के लिए प्रतीक्षा के कारण) से पता चलता है कि आपका सर्वर वहां है और फ़ायरवॉल है।
पैंथर

2
मैं उस निष्कर्ष पर नहीं जाता हूं। अस्वीकार एक ICMP- उत्तर देता है जिसका विश्लेषण किया जा सकता है। इस विश्लेषण के आधार पर अच्छे अटैक इंजन उस OS को प्राप्त कर सकते हैं जिसका उपयोग किया जा रहा है। इसलिए ऐसी प्रणाली पर जहां सभी बंदरगाहों को जाना जाता है ड्रॉप बेहतर हो सकता है। यह उत्पादन परिवेश में सर्वर पर लागू होता है।
निल्स

1
एक फ़ायरवॉल जो केवल कुछ बंदरगाहों को आगे बढ़ाता है वह और भी बेहतर है। DROP REJECT पहले स्थान पर चलने वाली बिल्कुल सेवा के समान नहीं है। कई पोर्ट स्कैनर आपके फ़ायरवॉल को पकड़ने की उम्मीद में भविष्य के स्कैन के लिए एक संभावित लक्ष्य के रूप में आपके मेजबान को चिह्नित करते हैं यदि वे वहां REJECTS या DROPS पाते हैं, क्योंकि दोनों को बाहर से पता लगाया जा सकता है। chiark.greenend.org.uk/~peterb/network/drop-vs-reject
Dagelf

1
ध्यान दें कि उद्धृत पाठ में एक और पैराग्राफ है, एक अद्यतन, जो कहता है कि DROP बेहतर है यदि आपके पास DDoS हमला है, जो अपेक्षाकृत दुर्लभ है, लेकिन जब ऐसा होता है, तो संभवतः यह अच्छा होता है ... आपको क्या लगता है?
एलेक्सिस विल्के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.