मैं iptables के लिए स्वचालित परीक्षण कैसे लिख सकता हूं?


13

मैं एक लिनक्स राउटर को कॉन्फ़िगर कर रहा हूं iptables। मैं विन्यास के लिए स्वीकृति परीक्षण लिखना चाहता हूं जो चीजों को मुखर करता है जैसे:

  • इंटरनेट पर कुछ लोगों से यातायात को अग्रेषित नहीं किया जाता है, और
  • कॉर्पोरेट LAN पर होस्ट से DMZ में वेबसर्वर पर TCP को पोर्ट 80 पर अग्रेषित किया जाता है।

एक प्राचीन एफएक्यूiptables -C विकल्प का चयन करता है जो किसी को कुछ पूछने की अनुमति देता है, जैसे "एक्स से वाई, पोर्ट जेड पर एक पैकेट दिया जाता है, क्या इसे स्वीकार या छोड़ दिया जाएगा?" यद्यपि एफएक्यू सुझाव देता है कि यह इस तरह से काम करता है, iptablesलेकिन (शायद ipchainsउदाहरणों में इसका उपयोग नहीं करता है) -Cविकल्प सभी नियमों के माध्यम से चलने वाले एक परीक्षण पैकेट का अनुकरण नहीं करता है, बल्कि एक बिल्कुल मिलान नियम के लिए अस्तित्व की जांच करता है। परीक्षण के रूप में इसका बहुत कम मूल्य है। मैं यह दावा करना चाहता हूं कि नियमों का वांछित प्रभाव है, न कि वे मौजूद हैं।

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

मैं इस समस्या को कैसे हल कर सकता हूं? क्या कुछ तंत्र है जिसका उपयोग मैं मनमाना यातायात उत्पन्न करने या अनुकरण करने के लिए कर सकता हूं, फिर यह जान लें कि क्या यह (या होगा) गिरा या स्वीकार किया गया iptables?


यह भी दिलचस्प हो सकता है: Security.stackexchange.com/questions/31957/…
dawud

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

जवाबों:


2

यदि आप थोड़ी सी कोडिंग करने के लिए तैयार हैं, तो आप यह कोशिश कर सकते हैं:

  • सिस्टम कॉल के CLONE_NEWNETलिए ध्वज cloneका उपयोग करके या उपयोग करके ip netns addऔर ip netns execआदेशों के द्वारा एक नया नेटवर्क नामस्थान बनाएँ ।
  • इस नाम स्थान में tunड्राइवर का उपयोग करके वर्चुअल नेटवर्क इंटरफेस का एक सेट टोकरा ip link add
  • कॉन्फ़िगरेशन का उपयोग कर लोड करें iptables-restore
  • tunया vethउपकरणों के माध्यम से नियमों को कई पैकेट खिलाएं
  • निरीक्षण करें कि आपको सही पैकेट मिले tunया vethउपकरणों से

यह दृष्टिकोण संभवतः अग्रेषित पैकेट के लिए नियमों के परीक्षण के लिए सबसे अच्छा काम करने वाला है। मशीन से जहां / जहां iptables का उपयोग किया जाता है, वहां से कनेक्शन को थोड़ा और अधिक प्रयास करने की आवश्यकता होती है, लेकिन इस तरह से परीक्षण करना संभव होना चाहिए।

यहाँ आदेशों के अनुक्रम का एक उदाहरण है, जिसका उपयोग किया जा सकता है:

ip netns add test-iptables
ip netns add test-iptables-some-guy-on-the-internet
ip netns add test-iptables-lan-host

ip netns exec test-iptables ip link add eth0 type veth peer name eth0-peer
ip netns exec test-iptables ip link set eth0-peer netns test-iptables-some-guy-on-the-internet
ip netns exec test-iptables ip link add eth1 type veth peer name eth1-peer
ip netns exec test-iptables ip link set eth1-peer netns test-iptables-lan-host

ip netns exec test-iptables ifconfig eth0 192.0.2.2 netmask 255.255.255.0
ip netns exec test-iptables ifconfig eth1 203.0.113.1 netmask 255.255.255.0

ip netns exec test-iptables-some-guy-on-the-internet ifconfig eth0-peer 192.0.2.1 netmask 255.255.255.0
ip netns exec test-iptables-some-guy-on-the-internet route add default gateway 192.0.2.2

ip netns exec test-iptables-lan-host ifconfig eth1-peer 203.0.113.2 netmask 255.255.255.0
ip netns exec test-iptables-lan-host route add default gateway 203.0.113.1

ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2
ip netns exec test-iptables iptables-restore < /tmp/iptables-test
ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2

ip netns del test-iptables
ip netns del test-iptables-some-guy-on-the-internet
ip netns del test-iptables-lan-host

यह परीक्षण के लिए तीन नेटवर्क नामस्थान बनाएगा और उनमें से एक में iptables नियमों के एक सेट को लोड करेगा। अन्य दो इंटरनेट और लैन पर एक मेजबान के कुछ लड़के की भूमिका के रूप में सेवा करते हैं।

उपरोक्त उदाहरण में पहले telnetकमांड को कनेक्शन test-iptables-lan-hostनाम स्थान से इनकार कर दिया जाता है , दूसरा telnetकमांड एक टाइमआउट प्राप्त करता है यदि नियम पैकेट को छोड़ देता है।

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


0

पेशेवर दुनिया 2 कंपनियों द्वारा प्रदान किए गए हार्डवेयर / सॉफ्टवेयर की मदद से करती है।

www.ixiacom.com

www.spirent.com

पहले मामले में आप एक Ixia 400T चेसिस + Ixload की तरह कुछ का उपयोग कर सकते हैं।

दूसरे मामले में उनके संगत अनुप्रयोगों के साथ लाइन स्मार्टबिट्स या टेस्टसेंटर

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

सस्ता विकल्प नहीं।


यह देखना आश्चर्यजनक है कि सादा अज्ञानता कैसे चुपचाप वैध उत्तरों को अपग्रेड कर सकती है ...
पैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.