ब्रूट बल SSH हमलों को रोकने के लिए विभिन्न तरीकों के पेशेवरों / विपक्षों को क्या कहते हैं?


20

IP को बंद करने के लिए कई अलग-अलग पैकेज हैं जिनमें से आपके सिस्टम पर brute-force SSH के हमलों को लॉन्च किया गया है। उदाहरण के लिए:

इन या किसी अन्य के पक्ष / विपक्ष क्या हैं?

मेरा वर्तमान समाधान ईमेल लेने के लिए है कि लॉगवॉच हर दिन उत्पन्न करता है और एग्रेगियस आईपी ​​पते को एक पाठ फ़ाइल में डंप करता है जिसे मैं एक स्क्रिप्ट में फीड करता हूं जो फिर iptables का पुनर्निर्माण करता है। यह हैकरी, समय लेने वाली और मैनुअल है, और मैं एक बेहतर तरीका चाहता हूं।

(ध्यान दें कि मैंने यह नहीं पूछा कि समस्या को हल करने का "सबसे अच्छा" तरीका क्या था, क्योंकि कुछ भी करने का "सबसे अच्छा" तरीका नहीं है।)

जवाबों:


15

मैं DenyHosts का उपयोग करता हूं, इसलिए मैं उसके लिए कम से कम जवाब दे सकता हूं:

पेशेवरों

  • यह पूरी तरह से स्वचालित है
  • यह कॉन्फ़िगर करने योग्य है (उपयोगकर्ता नाम के लिए ब्लैक लिस्ट करने से पहले कितने विफल प्रयास हुए, जो मौजूद नहीं हैं, जो उपयोगकर्ता नाम मौजूद हैं, और रूट के लिए एक विशेष प्रविष्टि)
  • यह आपको समय-समय पर नए ब्लैक लिस्टेड होस्ट की सूची के साथ ई-मेल कर सकता है, और हर बार किसी नए होस्ट को ब्लैकलिस्ट किए जाने पर दिए गए प्रोग्राम को चला सकता है।
  • यह थोड़ी देर के बाद स्वचालित रूप से संयुक्त राष्ट्र को ब्लैकलिस्ट करने का समर्थन करता है

विपक्ष

मेरे पास कोई भी अपूरणीय विपक्ष नहीं है, जब तक आप इसे सही तरीके से उपयोग नहीं करते हैं:

  • इसके डिफ़ॉल्ट कॉन्फ़िगरेशन में यह आपको नए ब्लैकलिस्ट किए गए मेजबानों के लिए सचेत नहीं करेगा, इसलिए यदि कोई आपके नेटवर्क पर सैकड़ों अलग-अलग पते से हमला कर रहा है, तो आप तुरंत उसे नोटिस नहीं कर सकते हैं जैसे कि आप अपने लॉग को मैन्युअल रूप से मॉनिटर कर रहे हैं, लेकिन (जैसा कि उल्लेख किया गया है पेशेवरों) यह आपको ई-मेल कर सकता है या नए मेजबानों को जोड़ने पर आपको सचेत करने के लिए एक निष्पादन योग्य चला सकता है
  • डिफ़ॉल्ट रूप से यह आपके मेजबानों को किसी अन्य के समान ब्लैक लिस्ट कर देगा, इसलिए आप शायद उन्हें जोड़ना चाहते हैं /etc/hosts.allow। मैंने अपना पासवर्ड टाइप करने में असफल होने पर एक बार खुद को लॉक कर लिया था, और एक बार काम से किसी ने मेरे रूट खाते में एक मजाक के रूप में लॉगिन करने की कोशिश की और मेरे काम को आईपी ब्लैकलिस्ट कर दिया, और मुझे यह पता लगाने में कुछ दिन लग गए कि मैं अचानक क्यों नहीं जुड़ सकता अब काम से मेरे नेटवर्क के लिए

19

एक और एक असफल है 2ban , जो iptables पर निर्भर करता है (इसलिए यह किसी भी सेवा के साथ काम करता है, न कि केवल ssh)। विफलता 2ban के साथ, आप कर सकते हैं:

  • किसी भी लॉग फ़ाइल के लिए पथ निर्दिष्ट करें (Apache, ssh, nginx, मेल सर्वर, ...)।
  • हमले के पैटर्न के लिए regex निर्दिष्ट करें (उदाहरण के लिए, 6 में nginx पहुंच लॉग पर एक ही आईपी द्वारा 10 "404 से अधिक त्रुटियां")
  • रेगेक्स निर्दिष्ट करें कि कुछ पैटर्न को अनदेखा करें (बहुत उपयोगी!)
  • प्रतिबंध समय निर्दिष्ट करें
  • एक ईमेल भेजें (या किसी अन्य चेतावनी ...)
  • पूरी तरह से अनुकूलन (आप अपने खुद के अलर्ट और फिल्टर लिख सकते हैं)

DenyHosts का एक "नुकसान" यह है कि इसमें tcp रैपर की आवश्यकता होती है, इसलिए यह केवल उन सेवाओं के साथ काम करेगा जो /etc/hosts.deny फ़ाइल को देखते हैं। लेकिन डेनहॉस्ट्स के साथ निष्पक्ष होने के लिए, अधिकांश लिनक्स वितरणों पर टीसीपी रैपर्स का उपयोग करने के लिए sshd संकलित किया जाता है। मुझे यह भी पता चलता है कि फेल 2बान (लेकिन कम शक्तिशाली) की तुलना में बॉक्स से बाहर कॉन्फ़िगर करने में आसान होने के लिए डेनहॉस्ट हैं।

एक समान SF प्रश्न का संदर्भ


fail2ban, शुक्र है, यह भी pf के साथ काम करता है - न केवल iptables
अच्छा व्यक्ति

10

स्कैन-आधारित हमलों के खिलाफ एक सरल और व्यावहारिक रूप से प्रभावी सुरक्षा मानक बंदरगाह का उपयोग नहीं करना है। 443 (https पोर्ट) आपको विभिन्न ब्रूट-फोर्स हमलों के लिए उजागर करता है जो आपके कमजोर पासवर्ड को क्रैक नहीं कर रहे हैं, और संभवतः डिफ़ॉल्ट पोर्ट (22) की तुलना में अधिक फायरवॉल के माध्यम से काम करता है।

Ssh ब्रूट बल के हमलों को रोकने के लिए अधिकांश तरीके आत्म-DoS (उफ़, मैंने कॉन्फ़िगरेशन को खराब कर दिया है!) के शानदार तरीके हैं! उफ़, मैंने त्वरित rsync का एक गुच्छा किया और अब दिन के लिए प्रतिबंधित है!) या असिस्टेड-सेल्फ-DoS (उफ़ हमलावर से आता है / मुझे (डायनेमिक आईपी रेंज, कॉलेज नेटवर्क ...) के रूप में एक ही सबनेट में एक मशीन विकृत कर दिया है और मैं भी प्रतिबंध लगा रहा हूँ!)।

यदि आप केवल कुछ स्थानों से लॉग इन करते हैं, तो आप केवल आईपी पते को श्वेतसूची में रख सकते हैं। यह स्पष्ट रूप से अच्छा नहीं है अगर आप अपने लैपटॉप या सेल फोन से जाना चाहते हैं।

एक ssh डेमॉन जो केवल IPv6 कनेक्शन को सुनता है, आपको कुछ वर्षों के लिए स्कैन से बचाना चाहिए। लेकिन कई फायरवॉल आपको आईपीवी 6 को किसी भी उचित तरीके से परिवहन नहीं करने देंगे।

एक अन्य विधि जिसका आप उल्लेख नहीं करते हैं वह है पोर्ट नॉकिंग । यह स्वयं-DoS समस्याओं (मिसकॉन्फ़िगरेशन के अलावा) से ग्रस्त नहीं है, लेकिन यह फ़ायरवॉल को अच्छी तरह से पार नहीं करता है, और कनेक्शन स्थापना के लिए कई सेकंड की विलंबता जोड़ सकता है।

यदि आपके पास अच्छे पासवर्ड हैं, या आप पासवर्ड प्रमाणीकरण के बिना रह सकते हैं, तो पासवर्ड प्रमाणीकरण को अक्षम करें। (कुंजी और वन-टाइम पासवर्ड अधिकांश उपयोग के मामलों के लिए पर्याप्त हैं: यदि आप एक ssh कुंजी को स्टोर करने के लिए क्लाइंट मशीन पर भरोसा नहीं करते हैं, तो आप इस पर भरोसा नहीं करते हैं कि केलॉगर भी नहीं है)। तब जानवर बल के हमलों में आपको CPU और बैंडविड्थ की थोड़ी लागत आएगी, लेकिन आपको एक घुसपैठ के लिए उजागर नहीं करना चाहिए (जब तक कि आपने अपनी कोई भी कुंजी चेक नहीं की है एक डेबियन कम-एन्ट्रापी ओपनएसएसएल से आया है )।

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


1
मैं मानता हूं कि अपने आप को प्रतिबंधित नहीं करने के लिए कुछ अभ्यास करना पड़ता है ;-) डिफ़ॉल्ट बंदरगाहों को बदलना और पासवर्ड पर भरोसा नहीं करना लेकिन पासवर्ड से सुरक्षित कुंजी पर भी अच्छी सलाह है। लेकिन मैं वास्तव में नहीं जानता कि मुझे बॉट नेटवर्क को अपनी एक्सेस लॉग फाइल भरने की अनुमति क्यों देनी चाहिए जबकि मेरे ssh और वेब सर्वर को प्रति घंटे हजारों अनुरोधों को अस्वीकार करना पड़ता है। विफलता 2ban के साथ, मेरा एक्सेस लॉग साफ है और मेरे सर्वर एप्लिकेशन को यह ट्रैफ़िक बिल्कुल भी नहीं दिखाई देता है (पहले एक्स खराब अनुरोधों को छोड़कर)।
बार्थेलेमी

एक गैर-मानक पोर्ट का उपयोग करने से बहुत अधिक सुरक्षा नहीं मिलती है। एक गैर-मानक पोर्ट पर SSH के लिए स्कैन करने में केवल कुछ ही मिनट लगते हैं, फिर पोर्ट 22 पर SSH के लिए स्कैनिंग (मान लें कि पटाखा एक स्कैन करता है और स्कैन एक IDS द्वारा अवरुद्ध नहीं किया गया था। लेकिन अगर आपके पास IDS है, तो पोर्ट ऑब्सफिकेशन संभवतः अनावश्यक है। )। यदि मैं एक पटाखा था और मुझे एक गैर-मानक बंदरगाह पर एसएसएच मिला, तो मुझे और भी अधिक दिलचस्पी होगी क्योंकि मुझे पता है कि व्यवस्थापक ने सोचा कि यह सेवा छिपाने के लिए काफी कीमती थी, और अस्पष्टता से सुरक्षा पर निर्भर है।
स्टीफन लासिवस्की

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

1
@Stefan मैं अमानवीय बंदरगाहों को उपद्रव (ब्रूट-फोर्स स्कैन) के प्रभावी समाधान के रूप में देखता हूं और वास्तव में सुरक्षा उपाय के रूप में नहीं (यानी, किसी को मेरे सर्वर को नियंत्रित करने से रोकता है)।
बर्थेलेमी

1
@ एक अलग बंदरगाह निर्दिष्ट करना शायद ही एक उपद्रव है। इसमें सिर्फ एक लाइन है .ssh/config। तालाबंदी एक समस्या है अगर फ़ायरवॉल आपको नहीं जाने देगा, और सबसे आसान समाधान 22 पोर्ट पर रहना है और 443 पर भी सुनना है। मैं सहमत हूं कि पोर्ट को स्विच करना वास्तव में सुरक्षा में सुधार नहीं करता है, शायद मुझे यह स्पष्ट करना चाहिए । मुझे नहीं पता कि आप SSH डेमॉन के लिए पासवर्ड प्रमाणीकरण का समर्थन नहीं करना क्यों असंभव मानते हैं: यह केवल sshd_configOpenSSH के साथ एक लाइन जोड़ने की बात है , सबसे आम कार्यान्वयन।
गिल्स एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.