मैं IPtables द्वारा अवरुद्ध आईपी पते को कैसे सूचीबद्ध करूं?


16

Ssh के खिलाफ क्रूर बल के हमलों को रोकने के लिए मैंने कुछ iptables नियम (नीचे) जोड़े हैं । सवाल यह है: मैं अवरुद्ध आईपी पते कैसे सूचीबद्ध कर सकता हूं?

(1)
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

1
iptables -L INPUT -v -nसभी अवरुद्ध आईपी से पता चलता है
गतिशील

जवाबों:


16

एक विकल्प यह होगा कि आप अपने किसी भी पैकेट को किसी नियम से लॉग इन करें:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl -j LOG --log-prefix "FW_DROPPED: "

से पहले तुरंत डालें DROPनियम । फिर, आप इसमें "FW_DROPPED" के साथ किसी भी चीज़ के लिए syslog फ़ाइल को grep कर सकते हैं और IP की सूची होगी। लॉग फ़ाइल में प्रविष्टियाँ कुछ इस तरह दिखती हैं:

Jun  3 08:05:57 some-machine kernel: [15852451.420557] FW_DROPPED: IN=eth0 OUT= MAC=00:50:ba:4a:d9:e3:00:12:17:3a:e3:64:08:00 SRC=228.23.45.189 DST=192.168.1.1 LEN=48 TOS=0x00 PREC=0x00 TTL=106 ID=10941 PROTO=TCP SPT=58212 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

तो, "SRC =" का अनुसरण करने वाले स्निपिंग आपको गिराए गए आईपी दिखाएंगे। क्रमबद्ध करें, डुप्लिकेट को समाप्त करना, और आपकी सूची आपके पास होगी।

मैंने Iptables ट्यूटोरियल को iptables / netfilter के लिए सबसे उपयोगी दस्तावेज माना है।


हां, यह ऐसा करने का तरीका है।
ब्रेंट

इसके लिए आपको अपने नियमों की नक़ल करनी होगी क्योंकि आप एक ही नियम में लॉग इन और ड्रॉप नहीं करते हैं।
डेविड पशले

3
यह बेहतर होगा यदि वह एक उपयोगकर्ता श्रृंखला बनाता है जहां वह लॉगिंग करता है और आपत्तिजनक पैकेट छोड़ता है। ऐसा करने से अनावश्यक रूप से दोहराव दूर हो जाता है। यह इस तरह किया जा सकता है: iptables -N हमले; iptables-INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m हाल --update --seconds 60 --hitcount 8 --rttl --name SSH -j हमलों; iptables-हमलों -j लॉग-लॉग-उपसर्ग "FW_DROPPED:"; iptables-हमलों -j DROP
क्रिस्टियान Ciupitu

1
माना। टेबल्स / चेन जाने का रास्ता है; iptables के पूरे बिंदु, वास्तव में। मैं स्वीकार किए जाते हैं, चुपचाप गिरा, श्रव्य रूप से खारिज कर दिया, त्याग दिया, संदिग्ध बाढ़, अवैध, संदिग्ध जांच, संदिग्ध स्कैन, अज्ञात प्रकार, और देखा यातायात के लिए अलग-अलग तालिकाओं का निर्माण करता हूं। मेरे परिवार कल्याण इस पुरानी लिपि (चेतावनी: स्व-प्रचार) पर आधारित हैं: code.google.com/p/klondike-firewall/source/browse/trunk/…
yukondude

1
Ipt_recent मॉड्यूल जिसे ipozgaj और David Pashley ने संदर्भित किया है, एक सुंदर निफ्टी जोड़ है, हालांकि यह एक ही ठीक-ठीक कारण प्रदान नहीं कर सकता है क्योंकि एक विशेष IP को गिरा दिया गया था (जैसा कि आप अलग-अलग-log- उपसर्ग सेटिंग्स के साथ कर सकते हैं) या का ट्रैक रखें टाइमस्टैम्प के साथ हमलों का लंबा इतिहास। हालांकि कॉन्सर्ट में दोनों तकनीकों का उपयोग करने के लिए निश्चित रूप से एक अच्छा विचार है।
yukondude


4

की ओर देखें

/proc/net/ipt_recent/YOURNAME

जहाँ आपका नाम आपके iptables नियम में --name विकल्प के साथ प्रयोग किया गया नाम है।


कुछ डिस्ट्रोस (उदाहरण के लिए डेबियन) पर, मान्य पथ है:/proc/net/xt_recent/[list-name]
इताची


1

उदाहरण के लिए, इनपुट स्पूफिंग के लिए मैं क्या करता हूं, श्रृंखला को परिभाषित करना है SPOOF_REJECT:

iptables -N SPOOF_REJECT
iptables -A SPOOF_REJECT -j LOG --log-prefix "Input spoof detected: "
iptables -A SPOOF_REJECT -j REJECT

यदि वे खराब हैं तो इस श्रृंखला में पैकेट भेजने के लिए:

iptables -A INPUT -i $EXT_DEV1 -s $INT_NET -j SPOOF_REJECT
iptables -A INPUT -i $EXT_DEV2 -s $INT_NET -j SPOOF_REJECT

आप पैकेट की प्रत्येक श्रेणी के लिए कुछ ऐसा कर सकते हैं जिसे आप ड्रॉप करते हैं या देखने के लिए syslog में एक लाइन प्राप्त करने के लिए अस्वीकार करते हैं, फिर समय-समय पर इन लॉग लाइनों से सिर्फ आईपी पते प्राप्त करने के लिए grep, कट, सॉर्ट करते हैं।

प्रत्येक श्रेणी के लिए अलग-अलग श्रृंखलाओं का उपयोग करने का लाभ यह है कि आपका कॉन्फ़िगरेशन अधिक सीधा हो जाता है और आपके iptablesकॉन्फ़िगरेशन को पढ़ना आसान हो जाता है । जैसा कि आप अधिक से अधिक नियम जोड़ते हैं, आपको खुशी होगी कि आपने विशिष्ट विभिन्न क्रियाओं के लिए व्यक्तिगत श्रृंखलाओं का उपयोग किया है।


कैसे ठीक है, क्या आप खराब पैकेट का पता लगाते हैं? मेरे अनुभव में यह सामान्य मामले में असंभव है।
मार्क

ऊपर सिर्फ एक उदाहरण है। यहाँ, मैं INPUT श्रृंखला में आने वाले किसी भी पैकेट की तलाश कर रहा हूँ जो बाहरी डिवाइस से आ रहा है फिर भी मेरे नेटवर्क पर आंतरिक आईपी पते से आने का दावा करता है। इस मामले में, मैं पते के स्पूफिंग का पूरी तरह से पता लगा सकता हूं, लेकिन हां, सामान्य मामले में चीजें अलग हैं।
एडी

1

"सवाल यह है: मैं अवरुद्ध आईपी पते को कैसे सूचीबद्ध कर सकता हूं?"

एक BANNED श्रृंखला बनाएँ:

iptables -N BANNED
iptables -F BANNED

एक लॉगिंग श्रृंखला बनाएँ:

iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP

अधिकांश अन्य नियमों से पहले INPUT श्रृंखला में प्रतिबंधित श्रृंखला में कूद जोड़ें

...
iptables -A INPUT -j BANNED
...

अब प्रतिबंधित श्रृंखला में ipaddresses जोड़ें:

flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...

आप इसे टिप्पणी विकल्पों के साथ एक डेटाबेस की तरह भी उपयोग कर सकते हैं, ताकि आप जान सकें कि कब और क्यों आदि झुंड महत्वपूर्ण है जब iptables को कई प्रक्रियाओं द्वारा अक्सर अपडेट किया जा रहा है - ऐसा प्रतीत होता है कि iptables में कोई लॉकिंग नहीं है।

प्रतिबंधित श्रृंखला में प्रतिबंधित पते और नियमों को देखने के लिए:

iptables -S BANNED

देखने के लिए सिर्फ अद्वितीय ipaddresses:

iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

मेरे पास कई सर्वर हैं जो अपने सर्वर पर चल रहे syslog फ़ाइलों और वेबलॉग्स की जाँच कर रहे हैं, इसलिए यदि किसी के द्वारा कुछ भी बुरा प्रयास किया जा रहा है, तो उनके पते पर कुछ दिनों के लिए स्वचालित रूप से प्रतिबंध लगा दिया जाता है, जो प्रकार और गंभीरता और पिछले हमलों की संख्या पर निर्भर करता है। जानकारी को mysql डेटाबेस में लॉग किया जाता है, और समय-समय पर समाप्त हो जाता है। पते भी हर दूसरी मशीन पर क्लस्टर में वितरित किए जाते हैं mysql प्रतिकृति पर ताकि वे भी संरक्षित रहें और सिंक में रहें। मेरा सॉफ़्टवेयर नेटवर्क का मालिक भी दिखता है और ISP को शिकायत दर्ज करता है।

10 साल के काम के बाद, मैं इसे जल्द ही सभी के लिए उपलब्ध कराने की उम्मीद करता हूं। वर्तमान में मेरे पास लगभग 1.5 मिलियन आईपी एड्रेस हिस्टरी और हज़ारों मेल और ssh हमले हैं, जो नेट को साफ करने में मदद करते हैं। यदि अधिक इसका उपयोग करेगा तो मुझे आशा है कि इसका अधिक प्रभाव होगा।

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