SSH सर्वर को तेज करने के खिलाफ सुरक्षित करना


14

मेरे पास थोड़ा SVN सर्वर है, पुराना dell Optiplex रनिंग डेबियन है। मेरे पास अपने सर्वर पर उतनी मांग नहीं है, क्योंकि इसका छोटा SVN सर्वर है ... लेकिन चाहते हैं कि यह सुरक्षित हो।

मैंने अभी-अभी अपने सर्वर को नए और बेहतर ऑप्टिप्लेक्स में नवीनीकृत किया, और पुराने सर्वर में थोड़ा सा देखना शुरू किया। मैंने समस्याओं का अनुभव करने के बाद इसे नीचे ले लिया। जब मैं लॉग की जांच करता हूं, तो इसका पूरा बल-बल प्रयास होता है और किसी तरह कोई मेरी मशीन में प्रवेश करने में सफल होता है। इस व्यक्ति ने दो डेयर "रूट" और "स्वैप 1" या कुछ के साथ "नार्कोगोस" नामक कुछ अतिरिक्त मात्रा का निर्माण किया। वास्तव में नहीं जानते कि वे क्यों और क्या करते हैं, लेकिन निश्चित रूप से इसे फिर से होने से रोकना चाहते हैं। मुझे यह थोड़ा अजीब लगता है, क्योंकि मैं अपना पासवर्ड कभी-कभी कुछ महीनों में बदल देता हूं, और पासवर्ड हमेशा यादृच्छिक अक्षर और संख्याओं को एक साथ रखा जाता है ... ब्रूट-बल के लिए आसान नहीं।

मुझे पता है कि मैं रूट को लॉग इन करने से रोक सकता हूं और sudoers का उपयोग कर सकता हूं ... और SSH पोर्ट को बदल सकता हूं, लेकिन मैं और क्या कर सकता हूं?

तो मुझे कुछ सवाल पूछने हैं:

  1. एक्स की गलत कोशिशों के बाद मैं 5 मिनट के लिए लॉगिंग को कैसे रोक सकता हूं। या प्रत्येक गलत कोशिश के बाद धीमा हो जाता है?

  2. क्या किसी प्रकार की केंद्रीय ब्लैकलिस्ट है जिसे एक सर्वर कनेक्ट कर सकता है? एक काली सूची जो आईपी पते को ट्रैक करती है जो "असुरक्षित" हैं और जिन्हें कभी भी एक्सेस नहीं दिया जाना चाहिए?

  3. अपने सर्वर पर सुरक्षा लागू करने के लिए मैं और क्या कर सकता हूं?

जैसा कि मैंने पहले कहा था, मैं अपाचे (www-data user problem?), Svn, mysql, php, phpmyadmin, hudson के साथ डेबियन 5 चला रहा हूं। यह 80, 443, 8080, 8180, 23 और 22 पर पोर्ट अग्रेषण के साथ एक होम नेटवर्क पर है।


जवाबों:


17

Fail2ban और पोर्ट नॉकिंग को आपकी अधिकांश जरूरतों को पूरा करना चाहिए।

अपने SSH पोर्ट को बदलना और केवल की-आधारित प्रमाणीकरण की अनुमति देना भी अनुशंसित है।

यह तर्क दिया जा सकता है कि आप अतिरिक्त सुरक्षा उपायों को जोड़ने में कम रिटर्न के एक बिंदु तक पहुंच सकते हैं, लेकिन फिर, यह आपको तय करना है कि आप "पर्याप्त सुरक्षित" हैं या नहीं।

रूट लॉगिन को अस्वीकार करना भी एक अच्छा विचार है।


2
मैं denyhosts का उपयोग करता हूं, लेकिन यह बहुत अधिक है जैसा कि विफल 2ban afaik है।
pfyon 20

Fail2Ban ध्वनि परिचित ... मैं उस पर एक नज़र होगा।
पॉल पीलेन

1
+1 Fail2Ban, 5 विफल प्रयास = 5 मिनट IP ब्लॉक। जब तक आपके पास एक हास्यास्पद आसान पासवर्ड नहीं है, तब तक इसे कभी भी 1 पासवर्ड प्रति मिनट के हिसाब से भंग नहीं किया जाएगा।
क्रिस एस

@ क्रिस Sea, यह मेरे पसंदीदा में से एक है। स्क्रिप्ट किडियाँ आमतौर पर टाइमआउट से निपटने का तरीका नहीं जानती ...
gWaldo

1
@gWaldo, पुष्टिकरण पूर्वाग्रह उन चीजों को फिर से लिखने के लिए एक लंबा रास्ता तय करता है जो आप कहते हैं कि आप पहले से ही सच होने के लिए क्या पढ़ते हैं।
क्रिस एस

7

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

Fail2Ban के पास कई अच्छे उदाहरण हैं कि आपने जो कुछ भी पूछा है, उसे कैसे कॉन्फ़िगर किया जाए ... हालांकि, खराब पतों का एक सार्वभौमिक भंडार नहीं है। मुझे नहीं लगता कि एक और आईपी प्राप्त करने में आसानी के कारण ऐसी रिपॉजिटरी कहीं भी है (dhcp रिन्यू / बॉट-नेट अटैक / आदि ...)। मैं भी सामान्य 'व्यवस्थापक' प्रकार उपयोगकर्ता नाम (रूट / व्यवस्थापक / व्यवस्थापक / sysop / etc ..) का उपयोग करके ssh के माध्यम से लॉगिंग को अक्षम कर दूंगा क्योंकि ये सबसे आम तौर पर धमाकेदार होते हैं।


बहुत बढ़िया जवाब। मैं आपके साथ बोल्ड टेक्स्ट से पूरी तरह सहमत हूं ... इसलिए अक्षर को पासवर्ड के साथ मिलाया गया। की-ऑथेंटिकेशन इस सर्वर के लिए थोड़ा बहुत है ... लेकिन एक अच्छा विचार है। मैंने अब Fail2ban स्थापित किया है, ऐसा नहीं लगता है कि मुझे इसे फिर से कॉन्फ़िगर करने की आवश्यकता है और क्योंकि यह थोड़ा svn सर्वर घर पर है, मुझे इसका उपयोग करने में आसान है (यह विचार करते हुए कि यह मेरे वॉक-इन कोठरी = एस से दूर है) Thnx आपकी सलाह के लिये!
पॉल पीलेन

1
Spamhaus ज्ञात स्पैमर नेटवर्क की एक सूची प्रकाशित करता है। यह बोटनेट्स को कवर नहीं करता है, यह सिर्फ "पेशेवर" स्पैमर के रूप में जाना जाता है: spamhaus.org/drop
क्रिस एस


4

यहां कई अच्छे सुझाव दिए गए हैं। मैं सम्मानपूर्वक सुझाव देता हूं कि तीन चीजों को अपेक्षाकृत सुरक्षित बनाना चाहिए:

  1. एक यादृच्छिक उच्च बंदरगाह पर sshd चलाएँ। बॉट्स आमतौर पर केवल पोर्ट 22 के बाद जाते हैं और पोर्ट 22 पर बदलाव 2222 की तरह होते हैं।
  2. Sshd config में पासवर्ड आधारित प्रमाणीकरण अक्षम करें:

UsePAM नं

  1. केवल पूर्व-साझा एसएसएच कुंजी जोड़े के माध्यम से इस साइट के साथ प्रमाणित करें। पीकेआई आधारित प्रमाणीकरण के साथ आरंभ करने के लिए आदमी ssh-keygen पर।

उम्मीद है की यह मदद करेगा।


2
बहुत कम तनाव समाधान के लिए, मैं निश्चित रूप से एक गैर-मानक पोर्ट पर दूसरा चल रहा है। मैंने जो भी देखा है, यह परिमाण के क्रम से आपके ssh सर्वर के लिए brute force कनेक्शन पर प्रयास छोड़ देगा। एक सप्ताह की अवधि में, मेरे एक सर्वर (एक मानक बंदरगाह पर ssh चल रहा है) को 134 अवैध कनेक्शन प्रयास मिले। उसी समय की अवधि, उसी सर्वर पर एक आभासी उदाहरण (एक गैरमानक पोर्ट पर ssh चल रहा है) में 0.
DF

1

मैं हमेशा से CSF / LFD का बहुत बड़ा प्रशंसक रहा हूं , जो bruteforce, portcan, और कुछ अन्य विकल्पों की कोशिश कर रहे लोगों के आईपी पते को ब्लॉक कर सकता है। यह मूल रूप से आईपी तालिकाओं के लिए एक बहुत बड़ा पर्ल-रैपर है, लेकिन कॉन्फ़िगरेशन फ़ाइल को पढ़ना मुश्किल नहीं है और प्रलेखन खराब नहीं है।


क्या आपको पता है कि जब भी कोई पोर्ट-स्कैन को सर्वर पर प्रीफ़ॉर्म किया जाता है तो क्या कोई ऐसा तरीका है जिससे किसी को अलर्ट (ईमेल द्वारा) किया जा सकता है?
पॉल पीलें

1

आप sshguard में भी देख सकते हैं। मैंने इसका इस्तेमाल नहीं किया है लेकिन मैंने अच्छी बातें सुनी हैं।

स्रोत:
http://isc.sans.edu/diary.html?storyid=9370

http://www.sshguard.net/

http://www.sshguard.net/docs/faqs/

"शशगार्ड अपनी लॉगिंग गतिविधि से सर्वरों की निगरानी करता है। जब लॉग्स यह संदेश देते हैं कि कोई व्यक्ति बैड थिंग कर रहा है, तो शशगार्ड उसे रोककर प्रतिक्रिया करता है / वह इसे थोड़ी देर के लिए रोक देता है। शशगार्ड का स्पर्श व्यक्तित्व है: जब एक शरारती टाइक आपके मेजबान को परेशान करता है, तो यह प्रतिक्रिया करता है। मजबूत और मजबूत। "


यह साफ लगता है ... मैं इस पर एक नज़र डालेंगे। thnx
पॉल पीलें

1

मैं डिफ़ॉल्ट पोर्ट पर इंटरनेट से जुड़ा एक SSH सर्वर है और कभी भी समस्याओं का अनुभव नहीं किया है।

  • SSH के लिए tcp_wrappers (अर्थात। hosts.allow hosts.deny) .. मुझे नहीं लगता कि वहाँ कोई SSH है जिसमें समर्थन संकलित नहीं है
  • tcp_wrappers के साथ संयोजन में iptables ने मेरे यादृच्छिक पोर्ट स्कैन / ब्रूटफोर्स प्रयासों के लगभग 99% को समाप्त कर दिया .. एकमात्र समस्या यह है कि आपको यह जानना आवश्यक है कि आप उन IP / IP श्रेणियों को अनुमति देने के लिए कहां से जुड़ रहे हैं ... मैंने बस किया मेरे आईपी रेंज को देखने के लिए मेरे क्षेत्र के आस-पास के लोकप्रिय प्रदाताओं की खोज और उन्हें अनुमति देने के लिए .. अधिकांश स्कैन दूर की भूमि से आते प्रतीत होते हैं :)
  • PermitRootLogin बिना-पासवर्ड (यानी केवल केवल RSA / DSA प्रमुख जोड़े जो एक पास-वाक्यांश के साथ एन्क्रिप्ट किए गए हैं) स्वचालित कार्यों के लिए अद्भुत रूप से काम करते हैं .. जब मैं बातचीत करने के लिए लॉगिन करता हूं तो मैं स्पष्ट रूप से अपने खाते (नियमित) का उपयोग करता हूं जिसे सुडोल पहुंच के साथ कॉन्फ़िगर किया गया है
  • sudoers
  • लगातार अपडेट .. मैं इस बॉक्स को सभी सुरक्षा / महत्वपूर्ण अपडेट के साथ अक्सर अपडेट करता हूं
  • पासवर्ड / पासफ़्रेज़ बदलता है
  • चकोरोटिटक को हर बार और फिर से देखने के लिए कि क्या मुझे कोई मुद्दा मिला है .. (वहाँ कई हैं जो इस कार्य को करते हैं)

आशा करता हूँ की ये काम करेगा!


1

ऐसा करने का एक बेहतर तरीका है, विफलता 2ban का उपयोग करने का मतलब है कि आपको एक आवेदन जोड़ना होगा, और यह एप्लिकेशन परत पर संचालित होता है।

यदि आप iptables का उपयोग करते हैं तो यह अधिक कुशल है क्योंकि यह नेटवर्क लेयर पर काम करता है और आपको एक अतिरिक्त एप्लिकेशन इंस्टॉल करने की आवश्यकता नहीं है।

हाल के मॉड्यूल का उपयोग करें http://www.snowman.net/projects/ipt_recent/

iptables -N SSHSCAN
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSHSCAN
iptables -A SSHSCAN -m recent --set --name SSH
iptables -A SSHSCAN -m recent --update --seconds 300 --hitcount 3 --name SSH -j LOG --log-level info --log-prefix "SSH SCAN blocked: "
iptables -A SSHSCAN -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
iptables -A SSHSCAN -j ACCEPT

0

एक विकल्प (अन्य सुरक्षा उपायों के अतिरिक्त उपयोग किया जाता है) में 22 से अधिक पोर्ट पर sshd सुनना है। मैंने इसे स्वयं करने की कोशिश नहीं की है, लेकिन यह सुना है कि यह बॉट्स द्वारा शुद्ध पाशविक बल के हमलों की संख्या को कम करता है।

मुझे इस बात पर ज़ोर देना चाहिए कि यह वास्तविक सुरक्षा नहीं है, बस स्वचालित ब्रूट बल हमलों की संख्या को कम करता है। बहुत अधिक काम मैं हर बंदरगाह की जाँच करने के लिए लगता है।


मैंने ऐसा ही किया, 23 को पोर्ट करने के लिए swiched। मुख्य रूप से क्योंकि मेरे पास पोर्ट 22 पर एक और सर्वर था (जिसे मैंने अब ले लिया है)।
पॉल पीलें

2
23 telnetहालांकि के लिए एक आरक्षित बंदरगाह है । यह अक्सर उन बंदरगाहों का उपयोग करने के लिए एक बेहतर विचार है जो आरक्षित नहीं हैं, जैसे कि> 60k। iana.org/assignments/port-numbers आपको आरक्षित पोर्ट संख्या की एक सूची देता है।
44एफ़िंक

पारितोषिक के लिए धन्यवाद। मैं इस मशीन (अभी तक) पर सिद्धांत का उपयोग नहीं करता, लेकिन पोर्ट को बदल देगा। मेरे पास 52000 - 59000 के बीच की पोर्ट रेंज है जो मैं अपने पेशेवर सर्वर पर उपयोग करता हूं, इस एक के लिए एक ही उपयोग करने की सोच रहा हूं।
पॉल पीलें

1
@Paul: I don't use te[l]net on this machine- इसे इस तरह रखें। जब आप विभिन्न कारणों से एक टेलनेट क्लाइंट चाहते हैं , तो जब आपके पास ssh उपलब्ध हो तो टेलनेट सर्वर चलाने का कोई कारण नहीं है। तार पर प्लेनटेक्स्ट पासवर्ड खराब हैं
एमएलपी

0

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


सामान्य तौर पर मैं आपके समाधान के लिए सहमत हूं। मेरा मानना ​​है कि मैं जिस कंपनी में काम करता हूं, उसके लिए यह मानक है ... लेकिन मुझे नहीं लगता कि यह मेरे लिए कुछ है। समस्या यह है कि मैं मुख्य रूप से अपने मैकबुक प्रो का उपयोग घर (स्थानीय नेटवर्क), काम से (स्थैतिक आईपी) या जाने पर (3 जी मॉडेम / आईफोन का उपयोग करके) करता हूं। पिछले एक समस्या के लिए अगर मेरे पास एक वीपीएन नहीं है जो बहुत ज्यादा है तो मुझे लगता है। आपके उत्तर के लिए धन्यवाद।
पॉल पीलें

0

DenyHosts, http://denyhosts.sourceforge.net/ , एक अच्छी परियोजना है जिसके साथ मेरी किस्मत अच्छी थी। यदि आप denyhosts को सिंक्रोनाइज़ करने के लिए सेट करते हैं, तो यह एक प्रतिबंध सूची में जोड़ने के लिए नए IP डाउनलोड करेगा, जिन्हें denyhosts का उपयोग करके अन्य सिस्टम को bruteforce करना होगा। यह उन आईपीओं को भी समाप्त करता है जिन्होंने कुछ समय के लिए बल भंग करने की कोशिश नहीं की है।

सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करना और पासवर्ड लॉगिंग को अक्षम करना संभवतः सबसे अच्छी बात है जो आप हालांकि कर सकते हैं। किसी भी क्रूर बल के हमलों को हराता है।


0

मेरे लिए क्या प्रभावी रहा है:

  1. जैसा कि दूसरों ने कहा है, sshd_config में कोई रूट लॉगिन, PasswordAuthentication नहीं (केवल लॉगिन w / चाबियाँ) के लिए सेट

  2. केवल एक या दो उपयोगकर्ताओं ने ssh के माध्यम से लॉग इन करने की अनुमति दी है और उन्हें अर्ध-अस्पष्ट नाम मिले हैं जो सामान्य ब्रूट-फोर्स टूल उपयोगकर्ता नाम सूचियों पर नहीं हैं (जैसे, "व्यवस्थापक" या "एपाचे" या "वेब" या "" जॉनी ")

  3. प्रतिबंधात्मक फ़ायरवॉल नियम (मूल रूप से, सब कुछ अवरुद्ध लेकिन मेरी सेवा बंदरगाह और ssh)। मैं और अधिक क्रूड स्कैन (अपने साथी के चीरगिन के लिए) को बंद करने के लिए पिंग को प्रतिबंधित करता हूं।

  4. अपने वेब होस्ट पर, मैं कुछ विशिष्ट IP पतों तक पहुँच को प्रतिबंधित करता हूँ - लेकिन ऐसा लगता है कि यह आपके लिए कोई विकल्प नहीं है। निश्चित रूप से यह हमारे सभी मेजबानों पर खुद नहीं कर सकते। आप "पोर्ट-नॉकिंग" भी देखना चाहते हैं।

  5. और मेरे पसंदीदा: OSSEC के सक्रिय प्रतिक्रिया मॉड्यूल को कई त्रुटियों के लिए कई क्रूर बल स्थितियों और अलर्ट को भी अवरुद्ध करना है। यह समय की y राशि में x अमान्य लॉगिन का पता लगाता है, और फिर एक निश्चित अवधि के लिए (iptables फ़ायरवॉल-ड्रॉप कमांड के माध्यम से) ब्लॉक करता है। मैं मज़े के लिए अब लगभग 12 घंटे के लिए रोक रहा हूं। :)

एक बात जो मैं यहाँ कर रहा हूँ यह सुनिश्चित करने के लिए कि मैं बहुत अधिक गलत चीज़ को ब्लॉक नहीं करता, वह यह है कि /etc/ossec.conf में, मैं एक उच्च स्तर पर सक्रिय प्रतिक्रिया सेट करता हूँ (जो डिफ़ॉल्ट कॉन्फ़िगरेशन में मौजूद नहीं है) और फिर sshd_rules.xml के माध्यम से जाएं और उन नियमों को सेट करें जिन्हें मैं उस स्तर पर ब्लॉक करना चाहता हूं और आवश्यकतानुसार ब्लॉक बनाम अलर्ट के लिए थ्रेसहोल्ड को संशोधित करना चाहता हूं।

यदि आप अपाचे चला रहे हैं, तो आप अपाचे-नियमों का उल्लंघन करने वाले सामान को भी रोक सकते हैं। मैं केवल NAT मुद्दे के कारण इन पर रोक नहीं लगाता, मैं एक संपूर्ण विश्वविद्यालय या कुछ को अवरुद्ध करने के बारे में सोचना चाहता हूं। :) इसके अलावा, आप लॉग फाइल में कुछ शर्तों पर ब्लॉक करने के लिए कस्टम नियम लिख सकते हैं, जो वास्तव में मददगार हो सकते हैं।

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