मेरे सर्वर पर लगातार हमला किया जा रहा है [बंद]


32

मैं सिस्टम एडमिनिस्ट्रेशन की दुनिया में काफी नया हूं। मैं हाल ही में एक एप्लिकेशन पर काम कर रहा हूं और जब मैं अपने एप्लिकेशन सर्वर लॉग की जांच करता हूं, तो मुझे लगातार विभिन्न आईपी पते मिलते हैं, जो कि मेरे सर्वर में क्रूरता बल से घुसने की कोशिश करते हैं। यहाँ मेरे सर्वर लॉग का एक उदाहरण है:

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

क्या यह कुछ ऐसा है जो काफी सामान्य है, या मुझे इसके बारे में चिंतित / कुछ करना चाहिए?


3
पोर्ट नंबर बदलने का प्रयास करें और देखें कि क्या यह बना रहता है। यदि वे आपको विशेष रूप से लक्षित नहीं कर रहे हैं, तो यह संभवतः नहीं होगा।
गोल्डीलॉक्स

13
सबसे अच्छा समाधान SSH पर पासवर्ड प्रमाणीकरण को अक्षम करना है, क्योंकि यह निश्चित रूप से जानवर बल के हमलों को रोक देगा!
विलेम


3
@Willem - नहीं, पासवर्ड प्रमाणीकरण अक्षम करने से हमले बंद नहीं होंगे । यह केवल उन्हें असफल बना देगा (हमलावरों को एहसास नहीं होगा कि पासवर्ड प्रमाणीकरण अक्षम कर दिया गया है, और कोशिश करना जारी रखेगा)।
मार्टिन वेगाटर

जवाबों:


59

इंटरनेट की अद्भुत दुनिया में आपका स्वागत है ... क्या आप:

लेकिन असली जवाब है: हां, यह सामान्य है : बोटनेट माफिया हमेशा कुछ अतिरिक्त बुरी तरह से संरक्षित सर्वर का उपयोग कर सकते हैं ...


1
मैं जंगली, जंगली इंटरनेट में एसएसएच नहीं करना पसंद करता हूं। +1
रुई एफ रिबेरो

2
Ssh के लिए डिफ़ॉल्ट पोर्ट बदलने के साथ-साथ हमारे पास पोर्ट नॉकिंग भी है ।
पाब्लो ए

15

बाढ़ लॉग को बनाने के लिए पर्याप्त लॉगिन प्रयास होना सामान्य है।

SSH बंदरगाहों को बदलना 'अश्‍लीलता से सुरक्षा' प्रकार के समाधान का अधिक है, लेकिन यह बाढ़ में मदद करता है। मुझे लगता है कि यह बहुत सुरुचिपूर्ण नहीं है; एक कारण के लिए सेवाओं के लिए वास्तविक तथ्य पोर्ट हैं।

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

PermitRootLogin no

यह भी देखें fail2banकि अपराधी बार-बार अपराधियों के लिए sshd लॉग पर नज़र रखता है। उदाहरण के लिए, एक निश्चित आईपी से 3 मिनट में 5 विफल लॉगिन से आईपी 10 मिनट के लिए अवरुद्ध हो जाएगा। मैंने लॉग स्पैम को कम करने के लिए उस प्रतिबंध के समय को 24 घंटे तक बढ़ा दिया - सफलतापूर्वक। :)


1
apt-get install fail2ban आपको मूल रूप से कवर मिलेगा
Willem

7
"मैंने लॉग स्पैम को और कम करने के लिए उस प्रतिबंध को 24 घंटे तक बढ़ा दिया" मुझे विश्वास करो। जब तक आपके पास सर्वर तक भौतिक पहुंच नहीं है, एक दिन आपको गहरा अफसोस होगा। ;)
डैनियल

8

मैं आपको कुछ चीजें करने का सुझाव दूंगा:

  1. पोर्ट ssh बदल रहा है (1024 से कुछ ऊपर) सुन रहा है और सुनिश्चित करें कि आप प्रोटोकॉल के संस्करण 1 का उपयोग नहीं करते हैं:

/ Etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. इंस्टाल fail2ban- यह लॉग फ़ाइलों की निगरानी करता है और अस्थायी रूप से या लगातार मौजूदा फ़ायरवॉल नियमों ( iptables) को अपडेट करके विफलता-पतों को प्रतिबंधित करता है ।

  2. सुनिश्चित करें कि आपने अपने विश्वसनीय स्थानों को सफ़ेद-सूचीबद्ध किया है।


7

हाँ, चिंतित रहें । आप कभी नहीं जल सकते हैं, लेकिन आपको आईटी सर्वोत्तम अभ्यास का पालन करना चाहिए। माफी से अधिक सुरक्षित।

मैं एक अस्पताल में एक नेटवर्क व्यवस्थापक हूं। हमेशा एक बॉक्स को सीधे इंटरनेट से जोड़ना एक बुरा विचार है। आप जो देख रहे हैं वह सभी हजारों स्वचालित स्कैनर हैं जो इंटरनेट पर भेद्यता के लिए स्कैन करते हैं। मैं सभी प्रकार के सॉफ़्टवेयर (ssh, telnet, ftp, आदि) के लिए इन और सभी प्रकार की चीज़ों (पोर्ट स्कैन, विभिन्न ज्ञात भेद्यता परीक्षण) को हमारे आईडी बॉक्स पर दिखाता
हूं। आपकी मशीन फ़ायरवॉल / NAT समाधान के पीछे होनी चाहिए और आपको केवल इंटरनेट (80, 443 आदि) के लिए आवश्यक बंदरगाहों को पोर्ट-फॉरवर्ड करना। यह करना अपेक्षाकृत आसान है।
ऐसा कुछ होना जो आप मैनेजमेन्ट (एसएसएच टेलनेट) के लिए उपयोग कर सकते हैं, इंटरनेट का सामना करने के लिए एक बुरा विचार है क्योंकि यदि - जो भी कारण से - उस सर्वर पर एसएसएच / टेलनेट सॉफ्टवेयर में एक बग है, तो स्वचालित बॉट एक दिल की धड़कन में इसका पता लगाएगा। और आप खराब हो जाएंगे। सॉफ्टवेयर में कीड़े हर समय होते हैं और पैच जारी होने में या आपको इसे पैच करने के लिए याद रखने में कुछ समय लग सकता है।

यदि आपको दूरस्थ रूप से प्रबंधित करने की आवश्यकता है, तो वीपीएन समाधान की तरह कुछ स्थापित करें या यदि आप विंडोज का उपयोग करते हैं, तो दूरस्थ डेस्कटॉप के लिए टर्मिनल सेवा गेटवे सेट करें। मुझे पता है कि आप वीपीएन और नेट के लिए राउटिंग और रिमोट एक्सेस सेट करने के लिए 2 एनआईसी के साथ एक अलग लिनक्स या विंडोज बॉक्स का उपयोग कर सकते हैं यदि आप सिर्फ एक छोटी सी दुकान हैं। अन्यथा, सिस्को जैसे विक्रेताओं के पास हार्डवेयर फ़ायरवॉल / NAT समाधान (सिस्को एएसए) है।

सारांश में, अपनी मशीन को NAT के पीछे रखें। सेवा के उद्देश्य को चलाने के लिए आवश्यक बंदरगाहों को ही आगे बढ़ाएं। इंटरनेट के लिए प्रबंधन के लिए उपयोग की जाने वाली सेवाओं को पोर्ट न करें , इसके बजाय दूरस्थ प्रबंधन के लिए वीपीएन में देखें।

PS चेंजिंग SSH पोर्ट लॉग वॉल्यूम के साथ मदद कर सकता है लेकिन यह वास्तव में SSH तक पहुंच को रोकता नहीं है। हजारों स्वचालित भेद्यता खोजकर्ताओं में से कोई एक पोर्ट पोर्ट स्कैन कर सकता है और यह देखने के लिए कि पोर्ट किस सेवाओं के लिए सुन रहे हैं। आप इसे स्वयं एक उपकरण के साथ कर सकते हैं जिसे नैंप कहा जाता है ।


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

हां, आप सही हैं कि मेरा मतलब क्या है, वीपीएन का उपयोग फ़ायरवॉल / नेट पास करने के लिए सर्वर में ssh करें
व्यक्ति

1
fwiw सबसे वीपीएन सेटअप क्लाइंट ऑथेंटिकेशन की कई परतों से गुजरते हैं और साथ ही एक बिंदु प्रदान करते हैं बाहरी ट्रैफिक आंतरिक नेटवर्क तक पहुंच सकते हैं। कई नोड्स वाले बनाम। वीपीएन कंसंट्रेटर्स भी आमतौर पर अपने आप में, sshdउदाहरण के लिए , उदाहरण के लिए संभवत: दिलचस्प लक्ष्य नहीं हैं । एक ssh जंपबॉक्स सबसे वीपीएन कॉन्फ़िगरेशन के रूप में सुरक्षित हो सकता है, लेकिन सामान्य तौर पर, यह नहीं है कि यह कैसे काम करता है।
4

5

आप कर्नेल के आंतरिक फ़ायरवॉल को iptables द्वारा कॉन्फ़िगर कर सकते हैं । ताकि केवल कुछ मशीनें आपके सर्वर पर जा सकें और अन्य IP पैकेजों को छोड़ दें। man iptablesअधिक जानकारी के लिए देखें ।

उदाहरण के लिए, यदि 192.168.1.67 आपके द्वारा ssh होस्ट है, तो सर्वर प्रकार पर:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
ध्यान दें कि यदि दूरस्थ प्रबंधन आपका एकमात्र विकल्प है, तो आप गंभीर रूप से खराब हो जाएंगे। अधिकांश आईपी केवल अर्ध-स्थायी होते हैं। हार्डवेयर बदलें और आपको जला दिया जाएगा।
मस्त

3

क्या आपको वास्तव में इंटरनेट पर अपने सर्वर की आवश्यकता है? यदि आप वास्तव में इसे इंटरनेट पर रखना चाहते हैं, तो सुनिश्चित करें कि इसे वहां डालने से पहले यह सुरक्षित है।

पोर्ट को बदलना अस्पष्टता के माध्यम से सुरक्षा है। यदि आपका हमलावर सिर्फ चलने वाली स्क्रिप्ट की तुलना में अधिक परिष्कृत है तो यह मदद नहीं करेगा।

पहले से ही उल्लेखित कुछ चीजें जो मैं भी सुझाता हूं:

  1. मैं Fail2Ban से सहमत हूं, और ठीक से कॉन्फ़िगर किए गए स्क्रिप्ट और बे में सबसे परिष्कृत हैकर्स को रखेगा।
  2. PermitRootLogin को किसी पर सेट करना आवश्यक नहीं है।
  3. एक फ़ायरवॉल कॉन्फ़िगर करें। मैं आमतौर पर केवल iptables नियमों को संपादित करता हूं, लेकिन UFW या फायरहोल जैसी कोई चीज भी काम करेगी।

मैं सिर्फ इस समुदाय में शामिल हुआ क्योंकि दो चीजें हैं जो मुझे नहीं लगता कि पर्याप्त रूप से संबोधित की गई हैं।

  • फ़ायरवॉल में पूरी तरह से आवश्यक नहीं है, जो सब कुछ ब्लॉक / अक्षम करें। इससे पहले कि आप कोई भी पोर्ट खोलें, खुद से पूछें, "क्या मुझे इंटरनेट से इस सेवा की आवश्यकता है?" आपके द्वारा खोला जाने वाला प्रत्येक पोर्ट / सेवा एक और संभावित वेक्टर बन जाता है जिसका कोई शोषण करने में सक्षम हो सकता है। यदि उस सेवा में कोई बग है जो उन्हें सर्वर तक रूट एक्सेस प्राप्त करने की अनुमति देता है तो वे उस पर सब कुछ एक्सेस करने में सक्षम हो सकते हैं। आपकी सुरक्षा केवल सबसे कमजोर कड़ी की तरह मजबूत है।
  • अब अंतिम बात के लिए और यकीनन सबसे महत्वपूर्ण है। स्क्रिप्ट जो आपने ssh तक पहुँचने का प्रयास करते देखी है, वह समय के साथ आपके पासवर्ड का अनुमान लगाने में सक्षम हो सकती है। Fail2Ban उन्हें बहुत धीमा कर देगा, लेकिन वे अभी भी संभावित रूप से इसका अनुमान लगा सकते थे। यदि वे करते हैं, तो आप पहुंच योग्य सेवाओं पर 2 कारक प्रमाणीकरण चाहते हैं। उसके लिए मैं डुओ सिक्योरिटी के साथ एक मुफ्त खाते की सिफारिश करता हूं। https://www.duosecurity.com/docs/duounix

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

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

2

@Cff उत्तर के लिए एक और उदाहरण, यदि आप अपने SSH सर्वर पर किसी भी "ट्राय" के लिए प्रतिबंध लगाने का इरादा रखते हैं:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

यह एक 'टैग' कनेक्शन का प्रयास करता है और यदि 600 (10mn) में 4 से अधिक होता है, तो मूल 'प्रतिबंधित' है। @ सुरक्षित समाधान के बजाय इसका उपयोग करें क्योंकि यह अधिक सुरक्षित है (यदि आप अपने आप को बाहर निकालते हैं, तो 10mn और फिर से प्रयास करें)।

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