मैं अपनी iptables OUTPUT श्रृंखला पर REJECT नीति का उपयोग क्यों नहीं कर सकता?


11

वर्तमान में मेरे पास DUTP पर अपनी OUTPUT श्रृंखला है। मैं इसे REJECT में बदलना चाहता हूं, ताकि मेरे पास एक सुराग हो कि यह मेरी फ़ायरवॉल है जो मुझे एक समस्या के बजाय कहीं भी मिलने से रोक रही है, जिस भी सेवा का मैं उपयोग करने का प्रयास कर रहा हूं (समय के बजाय तत्काल अस्वीकार)। हालाँकि, iptables को इसकी कोई परवाह नहीं है। यदि मैं अपने सहेजे गए नियम फ़ाइल को मैन्युअल रूप से संपादित करता हूं और इसे पुनर्स्थापित करने का प्रयास करता हूं, तो मुझे मिलता है iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy nameऔर यह नियमों को लोड करने से इनकार करता है। अगर मैं इसे मैन्युअल रूप से सेट करने का प्रयास करता हूं ( iptables -P OUTPUT REJECT), तो मुझे मिल जाता है iptables: Bad policy name. Run 'dmesg' for more information.लेकिन dmesg में कोई आउटपुट नहीं है।

मैंने पुष्टि की है कि उपयुक्त नियम कर्नेल में संकलित है और यह सुनिश्चित करने के लिए मैंने रिबूट किया है कि यह लोड है:

# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y

(लागू नियम को उजागर करने के लिए तारांकन जोड़े गए)

मैं जो कुछ भी प्राप्त कर सकता हूं वह बताता है कि REJECT एक वैध नीति / लक्ष्य (सामान्य रूप से) है, लेकिन मुझे ऐसा कुछ भी नहीं मिल रहा है जो कहता है कि यह INPUT, FORWARD, या OUTPUT श्रृंखलाओं के लिए मान्य नहीं है। मेरा Google-फू मदद नहीं कर रहा है। मैं Gentoo पर हूँ, अगर इससे कोई फ़र्क पड़ता है। यहाँ किसी को कोई अंतर्दृष्टि है?


क्या आप iptablesप्रश्न में नियम दिखा सकते हैं ?
bahamat

जवाबों:


15

REJECTएक लक्ष्य विस्तार है , जबकि एक श्रृंखला नीति एक लक्ष्य होना चाहिए । मैन पेज कहता है कि (हालांकि यह वास्तव में स्पष्ट नहीं है), लेकिन जो कुछ कहता है वह सपाट गलत है।

पॉलिसी केवल अंतर्निर्मित चेन पर ACCEPTया हो सकती है DROP। यदि आप उन सभी पैकेटों को अस्वीकार करने का प्रभाव चाहते हैं जो पिछले नियमों से मेल नहीं खाते हैं, तो बस सुनिश्चित करें कि अंतिम नियम सब कुछ से मेल खाता है और एक REJECTलक्ष्य एक्सटेंशन के साथ एक नियम जोड़ता है । दूसरे शब्दों में, सभी संबंधित नियमों को जोड़ने के बाद, करें iptables -t filter -A OUTPUT -j REJECT

देखें धागा "क्या संभव श्रृंखला नीतियों रहे हैं" अधिक जानकारी के लिए नेटफिल्टर सूची पर।


यह समझ में आता है, और अंत में एक सामान्य प्रतिक्रिया काम करना चाहिए। जिज्ञासा से बाहर, क्या लक्ष्य विस्तार की परिभाषा कहीं और स्पष्ट है और मैं इसे याद कर रहा हूं, या यह कि खराब दस्तावेज वाले बिट्स में से एक है?
ND Geek

1
पूरे मैन पेज को पढ़ना, यह स्पष्ट है कि REJECT एक टार्गेट एक्सटेंशन है, लेकिन मैन पेज बहुत लंबा है, इसलिए "TL! DR" लागू होता है। इसका अर्थ यह भी है कि DROP, ACCEPT और QUEUE वैध नीति लक्ष्य हैं; वर्तमान कोड से, QUEUE नहीं है!
स्टारनमर

4

मैं इसे प्रलेखित नहीं पाया, लेकिन यहां एक संदर्भ इंगित करता है कि केवल स्वीकृत नीतियां ही ACCEPTor DROP हैं। यह देख कर पुष्टि की है स्रोत की libiptcलाइन 2429, जहां कोड है चारों ओर (जो नियमों से छेड़छाड़ के लिए जिम्मेदार है)

2429         if (strcmp(policy, LABEL_ACCEPT) == 0)
2430                 c->verdict = -NF_ACCEPT - 1;
2431         else if (strcmp(policy, LABEL_DROP) == 0)
2432                 c->verdict = -NF_DROP - 1;
2433         else {
2434                 errno = EINVAL;
2435                 return 0;
2436         }

मूल धागा सबसे अच्छी बात यह बताता है कि श्रृंखला के अंत में REJECT को जोड़ना चाहिए जो कि होना चाहिए iptables -A OUTPUT -j REJECT

ध्यान दें कि इस से पहले कोड है:

2423         if (!iptcc_is_builtin(c)) {
2424                 DEBUGP("cannot set policy of userdefinedchain `%s'\n", chain);
2425                 errno = ENOENT;
2426                 return 0;
2427         }
2428 

इसलिए आप पॉलिसी को यूज़र डिफ़ाइंड चेन पर सेट नहीं कर सकते।


थ्रेड में यह आदेश गलत है; -pएक प्रोटोकॉल पर मिलान के लिए है; उसका मतलब था -Aजैसे मेरा जवाब कहता है।
शॉन जे। गोफ

यह काफी दिलचस्प है। मुझमें जिज्ञासा चमत्कार करती है कि क्या इसके पीछे कोई कारण है, या अगर यह है कि कैसे चीजें हैं, संभवतः सादगी के लिए (सरल कोड का मतलब सभी के बाद कमजोरियों के लिए कम संभव स्पॉट है)। अगर मैं एक उदारवादी डेवलपर भी होता, तो मुझे इसे स्थानीय स्तर पर हैक करने के लिए लुभाया जा सकता था, लेकिन जब से मैं नहीं हूं, और इसे सुरक्षा का एक टुकड़ा दिया है, मैं इसे छूने वाला नहीं हूं।
ND Geek

2

REJECTपर OUTPUTकोई मतलब नहीं है; a REJECTएक ICMP पैकेट लौटाएगा जिसे एक नेटवर्क को ट्रैवर्स करना होगा।

-j LOGअपने अंतिम नियम के रूप में एक नया जोड़ें (इसलिए DROPनीति से पहले ) यह देखने के लिए कि OUTPUTश्रृंखला में क्या मिलता है ।


1
REJECTICMP पैकेट लो इंटरफेस पर नहीं लौट सका ? मैं मानता हूं कि LOGसमस्या निवारण के लिए उपयोगी है, लेकिन जो मैं वास्तव में उम्मीद कर रहा था वह मुझे याद दिलाने का एक तरीका है कि "ओह, हाँ ... यह शायद मेरे DROPiptables डिफ़ॉल्ट द्वारा अवरुद्ध किया जा रहा है " 5 मिनट के लिए समस्या निवारण के बजाय सहकर्मी से पूछता है एक्सवाईजेड सर्वर का उपयोग यह संभवतः स्थानीय है , जो कि मेरा सबसे आम दृष्टिकोण है, क्योंकि मेरे विशिष्ट कार्यदिवस शायद ही कभी उन चीजों को मारते हैं जो मैंने पहले से ही एक छेद नहीं खोला है। बेशक, मुझे बेहतर ढंग से ध्यान में रखना होगा, लेकिन एक फ्लैट REJECTअधिक स्पष्ट है।
एनडी गीक

मुझे नहीं लगता कि आप चाहते हैं कि ethXइंटरफ़ेस loकई कारणों से इंटरफ़ेस पर ट्रैफ़िक उत्पन्न करे । वे बहुत स्वतंत्र हैं; आप आसानी से चेन को एक पर लागू कर सकते हैं और दूसरे पर नहीं।
आरोन डी। मरास्को
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.