2011-06-17 8 views
14

मल्टीपोर्ट एक्सटेंशन में पोर्ट्स के लिए एक सीमा (15) निर्दिष्ट की जा सकती है।एक नियम में एकाधिक मल्टीपार्ट्स सेट करने वाले इप्टेबल्स

लेकिन मैं एक ही नियम में और अधिक पोर्ट संख्या निर्दिष्ट करने की आवश्यकता है, इसलिए मैं एक नियम की तरह में कई मल्टीपोर्ट का उपयोग करने की कोशिश की:

iptables -A INPUT -p tcp -m multiport --destination-ports 59100 -m multiport --destination-ports 3000 -m state --state NEW -j REJECT --reject-with tcp-reset 

iptables -L INPUT -n का परिणाम है

Chain INPUT (policy ACCEPT) 
target  prot opt source    destination   
REJECT  tcp -- 0.0.0.0/0   0.0.0.0/0   multiport dports 59100 multiport dports 3000 state NEW reject-with tcp-reset 

लेकिन यह पता चला है कि जब मैं किसी ग्राहक से कनेक्ट करने का प्रयास करता हूं तो दोनों बंदरगाहों को खारिज नहीं किया जाता है।

संस्करण v1.4.2-rc1 है।

क्या कोई कामकाज है, या मुझे एक नियम में 15 से अधिक बंदरगाहों को निर्दिष्ट करने की आवश्यकता होने पर मुझे क्या करना चाहिए।

उत्तर

0

जहां तक ​​मुझे पता है, कई मैचों को लिखना तार्किक और संचालन है; तो आपका नियम क्या है यदि गंतव्य पोर्ट "59100" और "3000" है तो टीसीपी-रीसेट के साथ कनेक्शन को अस्वीकार कर दें; वर्कअराउंड -पोर्ट विकल्प का उपयोग कर रहा है। मैन पेज के लिए देखो।

+1

कोई -पोर्ट विकल्प नहीं है। –

3

आपको या तो अर्थशास्त्र को लागू करने के लिए कई नियमों का उपयोग करने की आवश्यकता है, क्योंकि मैचों हमेशा एक नियम के भीतर एक साथ संपादित होते हैं। वैकल्पिक रूप से, आप पोर्ट-इंडेक्सिंग इप्ससेट (ipset create blah bitmap:port) के खिलाफ मिलान कर सकते हैं।

24

इस सीमा के कामकाज के रूप में, मैं सभी मामलों को कवर करने के लिए दो नियमों का उपयोग करता हूं।

उदाहरण के लिए

, अगर मैं अनुमति देते हैं या इन 18 बंदरगाहों को अस्वीकार करना चाहते:

465,110,995,587,143,11025,20,21,22,26,80,443,3000,10000,7080,8080,3000,5666 

मैं नीचे दिए गए नियमों का उपयोग करें:

iptables -A INPUT -p tcp -i eth0 -m multiport --dports 465,110,995,587,143,11025,20,21,22,26,80,443 -j ACCEPT 

iptables -A INPUT -p tcp -i eth0 -m multiport --dports 3000,10000,7080,8080,3000,5666 -j ACCEPT 

उपरोक्त नियमों भी अपने परिदृश्य के लिए काम करना चाहिए। यदि आप पहले और दूसरे नियम दोनों पर 15 बंदरगाहों को सीमित करते हैं तो आप एक और नियम बना सकते हैं।

+1

आप एक सीमा भी जोड़ सकते हैं: '--पोर्ट 20: 11025' (जो आपके मामले में अनुकूल समाधान नहीं होगा)। क्या उस सूची में श्रेणियों और एकल बंदरगाहों को मिश्रण करना संभव है जैसे '20: 26,80,143,110,443: 465,995,587,3000,7080,8080,5666,10000,11025'? यह भी देखें: http://serverfault.com/a/751074/128892 – rubo77

-3
enable_boxi_poorten 

} 

enable_boxi_poorten() { 
SRV="boxi_poorten" 
boxi_ports="427 5666 6001 6002 6003 6004 6005 6400 6410 8080 9321 15191 16447 17284 17723 17736 21306 25146 26632 27657 27683 28925 41583 45637 47648 49633 52551 53166 56392 56599 56911 59115 59898 60163 63512 6352 25834" 


case "$1" in 
    "LOCAL") 
     for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s $LOC_SUB --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done 
    # multiports gaat maar tot 15 maximaal :((
    # daarom maar for loop maken 
    # $IPT -A tcp_inbound -p TCP -s $LOC_SUB -m state --state NEW -m multiport --dports $MULTIPORTS -j ACCEPT -m comment --comment "boxi specifieke poorten" 
    echo "${GREEN}Allowing $SRV for local hosts.....${NORMAL}" 
    ;; 
    "WEB") 
    for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s 0/0 --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done 
    echo "${RED}Allowing $SRV for all hosts.....${NORMAL}" 
    ;; 
    *) 
    for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s $LOC_SUB --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done 
    echo "${GREEN}Allowing $SRV for local hosts.....${NORMAL}" 
    ;; 
esac 

} 
+1

आपको कम से कम कुछ टिप्पणियां छोड़नी चाहिए कि आपका कोड क्या करता है और अंग्रेजी की तुलना में किसी अन्य भाषा में टिप्पणियां लिखने से बचें। – akluth

+0

मुझे डच नहीं पता, लेकिन मैं कुछ टिप्पणियों को समझता हूं: "मल्टीपोर्ट 15 अधिकतम तक जाता है।" और "यही कारण है कि हम इस लूप को बनाते हैं"। – nalply

संबंधित मुद्दे