SSH bruteforce को कैसे रोकें / रोकें [बंद]


22

मैं नेटवर्क प्रशासन के लिए बहुत नया हूं, इसलिए कृपया ध्यान दें कि मैं अभी तक ऐसा अनुभव नहीं कर रहा हूं।

मेरे पास plesk पैनल के साथ एक Ubuntu रूट सर्वर है।

कल मेरे दोस्तों और मैंने देखा कि हमारे TS3 पर भाषण की गुणवत्ता बहुत खराब हो गई। मैंने सर्वर को कुछ पिंग्स भेजे और बहुत ही उच्च पैकेट नुकसान हुआ। उसके बाद मैं थोड़ा सा पीछे हट गया और पता चला कि वहाँ एक है auth.log। मैंने इसे डाउनलोड किया और थोड़ा सा चारों ओर स्क्रॉल किया, फिर मुझे यह मिला:

May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102 
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102

ऐसा लगता है कि किसी ने कई बार SSH के ऊपर लॉग इन करने की कोशिश की। मैंने थोड़ा स्क्रॉल किया, और देखा, कि यह कोई कई अलग-अलग उपयोगकर्ता नामों का उपयोग करने की कोशिश करता है:student, tech, psi, news,...

इन लॉगिन के सैकड़ों फ़ाइल में प्रदर्शित किए गए थे।

मैंने अपने डेटासेंटर की वेबसाइट पर ट्रैफ़िक के आँकड़ों को देखा। यह केवल 17 एमबी प्रति घंटे की रफ्तार पर था। मेरे पास 100Mbit का बैकबोन है, इसलिए डेटा ट्रांसफर ही समस्या नहीं है।

फिलहाल मुझे सर्वर से किसी भी तरह से एक्सीस नहीं मिल सकता है।

मेरा प्रश्न है: मैं फिर से कैसे आरोप पा सकता हूं, मैं इस हमले को कैसे समझ सकता हूं और निम्नलिखित हमलों को रोक सकता हूं?


अभी भी इस विभाग में अपना सामान सीख रहा हूं .... लेकिन यह पोर्ट नॉकिंग के लिए अच्छा उपयोग नहीं होगा?
mjrider


जवाबों:


37

पहुंच कैसे प्राप्त करें?

यह स्पष्ट नहीं है कि आप अपने खाते तक क्यों नहीं पहुँच सकते।

यदि आपकी मशीन अटैक या हाई लोड के तहत है, तो आपको अपने प्रदाता से एक्सेस (आईपी प्रतिबंध) को प्रतिबंधित करने या सर्वर को ऑफ़लाइन लेने (इंटरनेट से डिस्कनेक्ट) के बारे में बात करनी चाहिए।

आपको बैंड के उपयोग की भी आवश्यकता हो सकती है जो आपके प्रदाता की मदद करने में सक्षम हो सकता है।

यदि किसी ने आपके सर्वर से समझौता किया है तो आपको बैकअप से पुनर्स्थापित करने या पुनर्प्राप्ति छवि का उपयोग करने की आवश्यकता हो सकती है।

अपने सर्वर पर हमलों को कैसे रोकें, विशेष रूप से एसएसएच में

जानवर सेना के लोगों को रोकने के लिए सबसे अच्छा तरीका है?

उन्हें पहली बार में अपनी मशीन के लिए मत जाओ! ब्रूट बल प्रयासों को रोकने के लिए बहुत सारे तरीके हैं इससे पहले कि वे आपके होस्ट पर जाएं, या एसएसएच स्तर पर भी।

कहा है कि, आपके ऑपरेटिंग सिस्टम को फेल 2बान जैसी किसी चीज़ से सुरक्षित रखना एक बेहतरीन विचार है। http://en.wikipedia.org/wiki/Fail2ban

Fail2ban DenyHosts के समान है ... लेकिन DenHHosts के विपरीत, जो SSH पर केंद्रित है, fail2ban किसी भी सेवा पर नजर रखने के लिए कॉन्फ़िगर किया जा सकता है, जो लॉग फाइल के लिए लॉगिन प्रयास लिखता है, और इसके बजाय /etc/hosts.den/ का उपयोग केवल IP पते / होस्ट को ब्लॉक करने के लिए किया जाता है , fail2ban Netfilter / iptables और TCP Wrappers /etc/hosts.deny का उपयोग कर सकते हैं।

कई महत्वपूर्ण सुरक्षा तकनीकें हैं जिनके बारे में आपको ब्रूट फोर्स लॉगिन को रोकने में मदद करने पर विचार करना चाहिए:

SSH:

  • रूट को लॉगिन करने की अनुमति न दें
  • Ssh पासवर्ड की अनुमति न दें (निजी कुंजी प्रमाणीकरण का उपयोग करें)
  • हर इंटरफ़ेस पर मत सुनो
  • SSH (उदाहरण के लिए eth1) के लिए एक नेटवर्क इंटरफ़ेस बनाएँ, जो आपके द्वारा अनुरोध किए गए इंटरफ़ेस से भिन्न है (जैसे eth0)
  • आम उपयोगकर्ता नाम का उपयोग न करें
  • अनुमति सूची का उपयोग करें, और केवल उन उपयोगकर्ताओं को अनुमति दें जिनके लिए SSH एक्सेस की आवश्यकता है
  • यदि आपको इंटरनेट एक्सेस की आवश्यकता है ... आईपी के एक सीमित सेट तक पहुंच को प्रतिबंधित करें। एक स्थिर आईपी आदर्श है, हालांकि इसे xx0.0 / 16 तक लॉक करना 0.0.0.0/0 से बेहतर है
  • यदि संभव हो तो इंटरनेट एक्सेस के बिना कनेक्ट करने का एक तरीका ढूंढें, उस तरह से आप SSH के लिए सभी इंटरनेट ट्रैफ़िक से इनकार कर सकते हैं (जैसे AWS के साथ आप एक सीधा कनेक्शन प्राप्त कर सकते हैं जो इंटरनेट को बायपास करता है, इसे डायरेक्ट कनेक्ट कहा जाता है)
  • किसी भी जानवर बल के हमलों को पकड़ने के लिए fail2ban जैसे सॉफ़्टवेयर का उपयोग करें
  • सुनिश्चित करें कि OS हमेशा अद्यतित है, विशेष रूप से सुरक्षा और ssh संकुल में

आवेदन:

  • सुनिश्चित करें कि आपका एप्लिकेशन हमेशा अद्यतित है, विशेष रूप से सुरक्षा पैकेज में
  • अपना एप्लिकेशन 'व्यवस्थापक' पृष्ठ लॉक करें। ऊपर दी गई कई सलाह आपके आवेदन के व्यवस्थापक क्षेत्र पर भी लागू होती हैं।
  • पासवर्ड अपने व्यवस्थापक क्षेत्र को सुरक्षित रखें, वेब कंसोल के लिए htpasswd जैसा कुछ अंतर्निहित अंतर्निहित कमजोरियों को प्रोजेक्ट करेगा और प्रवेश के लिए एक अतिरिक्त अवरोध पैदा करेगा
  • फ़ाइल अनुमतियाँ लॉक करें। 'अपलोड फोल्डर' सभी प्रकार के गंदे सामान के प्रवेश बिंदु होने के लिए कुख्यात हैं।
  • अपने एप्लिकेशन को एक निजी नेटवर्क के पीछे रखने पर विचार करें, और केवल अपने फ्रंट-एंड लोड बैलेंसर और एक जंपबॉक्स को उजागर करें (यह VPC का उपयोग करके AWS में एक विशिष्ट सेटअप है)

1
मैं के माध्यम से Fail2ban स्थापित किया है help.ubuntu.com/community/Fail2ban यह बहुत शक्तिशाली और उपयोगकर्ता के अनुकूल (मेल अधिसूचना, ...) हो रहा है

मुझे अपने डेटासेंटर से एक संदेश मिला: एक फ्लडटैक था (यह क्या है?) और इसने कई सर्वरों के लिए कनेक्शन को बहुत खराब कर दिया। यह विशेष रूप से मेरे सर्वर पर हमला नहीं था।


1
दिलचस्प। इसलिए ऐसा लगता है कि मेरे डेटासेंटर हमले का निशाना थे। लेकिन यह जानने के लिए कि मैं इसके अलावा ब्रूटल हो गया, बहुत अच्छा है। और Fail2ban वास्तव में एक अच्छा उपकरण है। मैं अगले दिनों Iptables और SSH कॉन्फ़िग के बारे में पढ़ूंगा और इसे और अधिक सुरक्षित बनाने का प्रयास करूंगा।

3
22 के अलावा एक पोर्ट को सुनने के लिए ओपनश को कॉन्फ़िगर करें और 22 पोर्ट पर आने वाली किसी भी चीज़ को छोड़ने के लिए iptables को कॉन्फ़िगर करें। यदि आप अपनी मातृभूमि के अलावा किसी अन्य देश से ssh की उम्मीद नहीं करते हैं, तो countryipblocks.net/county_selection पर एक ब्लॉक सूची बनाएं । php और इसे iptables के साथ उपयोग करें।
थोरियम बीआर

4

मैं इस हमले को कैसे समझ सकता हूं और निम्नलिखित हमलों को रोक सकता हूं

आमतौर पर मैं डिफ़ॉल्ट ssh पोर्ट को 22 से 1122 की तरह बदल देता हूं। यह बॉट से कई स्वचालित हमलों को रोकता है, लेकिन एक साधारण पोर्ट स्कैन इसका पता लगा सकता है। वैसे भी:

vi /etc/ssh/sshd_config

और पोर्ट 22 को पोर्ट 1122 पर संपादित करें , लेकिन यह पर्याप्त नहीं है।

Bruteforce पर स्वचालित IPTables नियम

मैं log2iptables का उपयोग करता हूं https://github.com/theMiddleBlue/log2iptables बजाय उपयोग करता हूं, क्योंकि एक साधारण बैश स्क्रिप्ट है जो किसी भी लॉगफाइल को एक नियमित अभिव्यक्ति के साथ पार्स करता है और iptables निष्पादित करता है। उदाहरण के लिए जब 5 मैच होते हैं, तो log2iptables विशिष्ट आईपी पते को छोड़ देते हैं। यह शांत है क्योंकि टेलीग्राम एपीआई का उपयोग करें और जब मुझे कोई समस्या आती है तो वह मुझे अपने फोन पर एक संदेश भेज सकता है :)

आशा है कि यह मदद करेगा!


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

1

मैंने इसे एक साथ रखा है, हर 15 मिनट में क्रोनजोब आदि के रूप में चलाएं:

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

0

यह SSH हमलों के लिए मेरा वैकल्पिक समाधान है। यदि उपयोग न किया जाए तो यह विचार SSH डेमॉन को बंद रखता है। नो ओपन पोर्ट नो अटैक। आप इसे आज़मा सकते हैं। यह खुला स्रोत है https://github.com/indy99/nnet_port_guard


1
सर्वर दोष में आपका स्वागत है! आपके उत्तर से यह पता चलता है कि प्रश्न का व्यावहारिक हल दूसरी वेबसाइट के माध्यम से उपलब्ध है। क्यू एंड ए वेबसाइटों के स्टैक एक्सचेंज परिवार आमतौर पर इस प्रकार के उत्तर पर डूब जाते हैं क्योंकि अन्य वेबसाइटें हट सकती हैं, नष्ट हो सकती हैं या बदल सकती हैं। कृपया पढ़ें मैं एक अच्छा उत्तर कैसे लिखूं? और समस्या को हल करने के लिए आवश्यक कदमों को शामिल करने के लिए अपने उत्तर को संशोधित करने पर विचार करें। और साइट का दौरा करना मत भूलना ।
पॉल

0

सेंटोस / आरएचईएल के लिए स्वचालित समाधान ब्लॉक एक्टर्स को ब्लॉक करें

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

     #/bin/bash
     # Save a copy of the existing hosts.deny file for safety
     cp /etc/hosts.deny /etc/hosts.deny.bak
     # Get a list of the offending IP addresses and process them
     for z in `grep "Invalid\|Failed" /var/log/secure | awk '{ print $NF }' | sort | uniq`
     do
     # Get the number of times this IP hit us
     hits=`grep "Invalid\|Failed" /var/log/secure* | grep $z | wc -l`
     # Check whether this IP is already blocked
     blocked=`grep $z /etc/hosts.deny | wc -l`
     # If they hit us more than 3 times and are not already on the deny list
     # add them to the deny list
     if [ $hits -gt 3 -a $blocked -eq 0 ]
     then
          echo "sshd : $z" >> /etc/hosts.deny
     fi
     done

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