जवाबों:
एक सामान्य नियम के रूप में, जब आप पोर्ट को जानने के लिए दूसरे छोर तक पहुंचना चाहते हैं, तो REJECT का उपयोग करें, उन होस्ट के कनेक्शन के लिए DROP का उपयोग करें जिन्हें आप नहीं देखना चाहते हैं।
आमतौर पर, आपके LAN के अंदर कनेक्शन के लिए सभी नियमों का उपयोग करना चाहिए। इंटरनेट के लिए, कुछ सर्वरों पर पहचान के अपवाद के साथ, इंटरनेट से कनेक्शन आमतौर पर DROPPED हैं।
DROP का उपयोग करने से कनेक्शन एक निर्वासित आईपी पते के रूप में प्रकट होता है। स्कैनर्स उन पते को जारी नहीं रखने का चयन कर सकते हैं जो अप्रकाशित दिखाई देते हैं। यह देखते हुए कि NAT का उपयोग फ़ायरवॉल पर एक कनेक्शन को पुनर्निर्देशित करने के लिए किया जा सकता है, एक अच्छी तरह से ज्ञात सेवा का अस्तित्व एक पते पर एक सर्वर के अस्तित्व को इंगित नहीं करता है।
SMTP सेवा प्रदान करने वाले किसी भी पते पर पहचान को पारित या अस्वीकार किया जाना चाहिए। हालाँकि, SMTP सर्व के द्वारा आइडेंट लुक-अप का उपयोग उपयोग से बाहर हो गया है। चैट प्रोटोकॉल हैं जो एक कार्यशील पहचान सेवा पर भी निर्भर करते हैं।
EDIT: DROP नियमों का उपयोग करते समय: - UDP पैकेट को गिरा दिया जाएगा और व्यवहार वैसा ही होगा जैसा कि बिना सेवा वाले किसी अपरिचित पोर्ट से जुड़ने पर। - टीसीपी पैकेट एक एसीके / आरएसटी लौटाएगा, जो एक ही प्रतिक्रिया है कि इस पर कोई सेवा नहीं के साथ एक खुला पोर्ट जवाब देगा। कुछ राउटर सर्वरों की ओर से और ACK / RST के साथ जवाब देंगे जो नीचे हैं।
REJECT नियमों का उपयोग करते समय एक ICMP पैकेट भेजा जाता है जो यह दर्शाता है कि पोर्ट अनुपलब्ध है।
अंतर यह है कि REJECT लक्ष्य स्रोत को अस्वीकार प्रतिक्रिया भेजता है, जबकि DROP लक्ष्य कुछ भी नहीं भेजता है।
यह पहचान सेवा के लिए उपयोगी हो सकता है। यदि आप REJECT का उपयोग करते हैं तो ग्राहकों को टाइमआउट की प्रतीक्षा करने की आवश्यकता नहीं है।
इसके बारे में और अधिक: http://www.linuxtopia.org/Linux_Firewall_iptables/x4550.html
आमतौर पर, आप हमलावरों से कुछ बंदरगाहों तक जांच को अनदेखा करना चाहते हैं , जिसका मतलब है कि आप 'कनेक्शन मना कर दिया' वापस नहीं भेजना चाहते हैं। 'कनेक्शन मना कर दिया' का अर्थ है: 'यहाँ एक सर्वर है', और संभवतः अधिक जानकारी देता है, जबकि एक पैकेट छोड़ने से सॉफ़्टवेयर संस्करणों, संभावित कमजोरियों या यहां तक कि इस तथ्य के बारे में सुराग नहीं मिलता है कि एक सर्वर आपको आईपी सुन रहा है।
ऊपर REJECT के बजाय DROP का उपयोग करने के मुख्य कारणों में से एक है।
मुझे यहाँ बहुत सारे परस्पर विरोधी उत्तर मिलते हैं और यह सही कीवर्ड के साथ Google में पहला लेख है; यहाँ सही व्याख्या है।
यह सरल है:
DROP पैकेट के साथ कुछ भी नहीं करता है। यह एक मेजबान को अग्रेषित नहीं किया जाता है, इसका जवाब नहीं मिलता है। IPtables का मैनपेज कहता है कि यह पैकेट को फर्श पर गिराता है, यानी यह पैकेट के साथ कुछ भी नहीं करता है।
REJECT DROP में भिन्न होता है कि वह एक पैकेट वापस भेजता है, लेकिन इसका उत्तर ऐसा है जैसे कि कोई सर्वर IP पर स्थित है, लेकिन सुनने की स्थिति में पोर्ट नहीं है। IPtables टीसीपी के मामले में या यूडीपी के साथ एक आईसीएमपी गंतव्य पोर्ट अनुपलब्ध होने पर एक आरएसटी / एसीके भेजेगा।
यदि आप अपनी मशीन के अस्तित्व को पूरी तरह से छिपाने की कोशिश कर रहे हैं, -j DROP
तो उचित है। उदाहरण के लिए, आप ब्लैकलिस्ट को लागू करने के लिए इसका उपयोग कर सकते हैं।
यदि आप इस तथ्य को छिपाने की कोशिश कर रहे हैं कि एक पोर्ट खुला है, तो आपको उस व्यवहार की नकल करनी चाहिए जो पोर्ट नहीं खुला था।
-p tcp -j REJECT --reject-with tcp-reset
-p udp -j REJECT --reject-with icmp-port-unreachable
यदि एक पोर्ट स्कैनर देखता है कि कुछ पोर्ट पैकेट गिरा रहे हैं जबकि अधिकांश उन्हें अस्वीकार कर रहे हैं, तो यह मान सकते हैं कि गिराए गए पोर्ट उन पोर्ट पर हैं जो खुले हैं लेकिन छिपे हुए हैं।
बहुत सारे सही उत्तरों के बावजूद, मेरे दो सेंट:
यहाँ एक संक्षिप्त PoC FW.IDS-DROP-vs-REJECT टू सब्जेक्ट है जो प्रतिबंध-प्रणाली (फ़ायरवॉल, आईडीएस, आदि) के नियमों के संबंध में है।
कुछ ही समय:
DROP
यदि सभी बंदरगाहों पर प्रतिबंध लगा दिया जाए, तो यह आवर्ती घुसपैठियों के लिए इस्तेमाल किया जा सकता है (इसलिए ऐसा लगता है कि सर्वर घुसपैठिए की तरफ नीचे है)REJECT --reject-with tcp-reset
बहु-बंदरगाह प्रतिबंध के लिए सबसे अच्छा विकल्प है, क्योंकि यह वास्तविक बंद बंदरगाह के रूप में व्यवहार करता हैDROP
और REJECT
(बिना tcp-reset
) घुसपैठिए को एक "सिग्नल" देगा कि कुछ अवरुद्ध है (ताकि उसे आवश्यक डेटा प्रदान करने के लिए "हमले" को जारी रखने के लिए उत्तेजित कर सके। किन्हीं बिंदुओं पर)हां, DROP का उपयोग करना व्यर्थ है। REJECT का उपयोग करें।
यहां तक कि जब नियम कहता है कि "DROP" सिस्टम अभी भी एक आने वाले SYN को एक TCP RST / ACK के साथ देता है - जो कि बिना सेवाओं के चलने वाले बंदरगाहों के लिए डिफ़ॉल्ट व्यवहार है। (tcpdump et al यह लॉग नहीं करता है।)
यदि कोई सेवा चल रही है, तो SYN की मुलाकात TCP SYN / ACK से होती है।
क्योंकि DROP टीसीपी SYN / ACK के साथ सामान्य रूप से प्रतिक्रिया नहीं देता है, लेकिन इसके बजाय RST / ACK के साथ, आपका DROP नियम आपके फ़ायरवॉल को विज्ञापित करेगा और पोर्ट-स्कैनर को पता चल जाएगा कि आप कुछ फ़ायरवॉल कर रहे हैं और आपको आशाओं में बाधा उत्पन्न हो सकती है। अपने फ़ायरवॉल को पकड़ने के नीचे।
यह अब उदाहरण के लिए "बंद" के बजाय "फ़िल्टर किए गए" रिपोर्ट कर सकता है:
$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
$ iptables -I INPUT -p tcp --dport 1111 -j DROP
$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
1111/tcp filtered lmsocialserver
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
$ iptables -D INPUT 1
जैसे, एकमात्र "अदृश्य" फायरवॉलिंग सेटअप वह है जहां एक समर्पित डिवाइस आपके उपकरणों के बीच बैठता है और केवल चुनिंदा फॉरवर्ड बंदरगाहों के बीच होता है।
यदि आप वास्तव में बुनियादी स्कैनर के साथ गड़बड़ करना चाहते हैं, तो आप टीसीपी कनेक्शन को टीसीपी कर सकते हैं, जो टीसीपी विंडो को 0 पर सेट करता है ताकि कनेक्शन के खुलने के बाद कोई डेटा स्थानांतरित न हो सके, कनेक्शन को बंद करने के अनुरोध की अनदेखी करते हुए, जिसका अर्थ है कि स्कैनर को इंतजार करना होगा कनेक्शन टाइमआउट होने के लिए, यदि वह सुनिश्चित होना चाहता है। लेकिन यह एक हमलावर के लिए यह पता लगाने और उसके समय बहुत कम करने के लिए तुच्छ है।
जिन सभी बातों पर विचार किया गया है, आप शायद सबसे बेहतर हैं कि केवल REJECT का उपयोग करें - या अपने सर्वर और इंटरनेट के बीच एक समर्पित पोर्ट अग्रेषण उपकरण डालें।
या बस अपने इंटरनेट का सामना करने वाली मशीनों पर सेवाओं को चलाने के लिए जिन्हें फ़ायरवॉल की आवश्यकता नहीं है।
आमतौर पर REJECT वेब सर्वरों के लिए सबसे अच्छा है, क्योंकि जो भी सेवा इसे एक्सेस करने की कोशिश कर रही है (शायद अधिक बार नहीं, आप) जल्दी से एक प्रतिक्रिया मिलेगी और अगर नेटवर्क आउटेज है तो उपयोगकर्ताओं या अन्य सेवाओं को इंतजार करते हुए नहीं रखा जाएगा।
DROP
जारी करेगा SYN/ACK
? मैंने अपनी मशीनों पर ऐसा कभी नहीं देखा।
DROP
रिटर्न नहीं देता है SYN/ACK
। मैंने भी, किसी भी संस्करण के तहत इस व्यवहार को कभी नहीं देखा है iptables
। यदि आपके पास कोई ऐसा स्रोत है जो आपके दावे का समर्थन करता है, तो इसे देखना सबसे उपयोगी होगा; निश्चित रूप से, पैकेट डंप जो मैंने अभी किया है वह आपके दावे का समर्थन नहीं करता है।