इसे इंटरनेट से कनेक्ट करने से पहले मैं घुसपैठ और मैलवेयर से कैसे बचाव कर सकता हूं (विशेष रूप से सार्वजनिक आईपी पते पर)?


60

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

इसे कम करने के लिए क्या किया जा सकता है?

यह उचित रूप से अच्छी तरह से जाना जाता है कि किसी को "पी" उपयोगकर्ता (डेबियन) और "रूट" (आर्क) के लिए पासवर्ड बदलना चाहिए, लेकिन अन्य सिस्टम अकाउंट्स के बारे में कैसे (जैसे "टैली", "पीएनडी?") उनमें से कोई है? सार्वभौमिक पासवर्ड जो संभवतः सभी इकाइयों के लिए समान हैं?

और क्या अन्य पैकेजों में कोई ज्ञात भेद्यताएं हैं, जो कि पाई के लिए उपलब्ध एसडी छवियों में स्थापित हैं (जैसे हार्डवेयर सीमाओं के कारण, या उन पैकेजों के कट-डाउन संस्करण?)

विशेष रूप से, मैं ssh, mysql और किसी भी अन्य सेवाओं के बारे में चिंतित हूं जो एक नव-स्थापित छवि पर चल रही हो सकती हैं।

जवाबों:


23

स्टॉक डेबियन निचोड़ छवि के बारे में अब तक मैंने जिन चीजों पर ध्यान दिया है:

  • / etc / छाया में उन खातों के लिए पासवर्ड हैश का एक गुच्छा है जो pi खाता (बिल्डबोट, आदि) नहीं हैं। पीआई खाते पर पासवर्ड बदलें, स्वाभाविक रूप से, यदि आप पहले से ही नहीं हैं (या अपने लिए एक नया उपयोगकर्ता खाता बनाते हैं और पीआई खाते को हटाते हैं), लेकिन अन्य प्रविष्टियों को भी संपादित करें और हैश को * s के साथ बदलें। नोट / etc / passwd में pi खाते के लिए डुप्लिकेट प्रविष्टियाँ शामिल हैं, जो एड्यूसर / भ्रम से बाहर आने वाले नरक को भ्रमित करती हैं, बस एक को हटा दें।

  • डिफ़ॉल्ट ssh डेमॉन कॉन्फ़िगरेशन दूरस्थ रूट लॉगिन की अनुमति देता है। यह अक्षम होना चाहिए।

  • कनेक्शन के लिए सुनने वाली चीजों के सेट की जांच करने के लिए नेटस्टैट का उपयोग करना; सामान की एक आश्चर्यजनक मात्रा एक विशिष्ट न्यूनतम डेबियन नेटस्टीन की तुलना में चल रही है। यह आम तौर पर आपकी ज़रूरत की चीज़ों के संपर्क को कम करने के लिए एक अच्छा विचार है , इसलिए पहले या तो सब कुछ अक्षम या फ़ायरवॉल करें , फिर बस उन सेवाओं को उजागर करें जिन्हें आप जानबूझकर सार्वजनिक इंटरनेट पर दिखाई देना चाहते हैं (आमतौर पर सिर्फ ssh या ssh + http)।

  • आप छवि में लोगों का उपयोग करने के बजाय ssh होस्ट कुंजी को बदलना चाहते हैं (AIUI नवीनतम छवि वास्तव में उन्हें पहले चरण में पुनर्जीवित करती है)


1
मैं आपके पहले बयान के साथ समस्या नहीं देखता। वे अतिरिक्त उपयोगकर्ता कौन से हैं? क्या उन्हें लॉगिन के लिए अक्षम नहीं किया जाना चाहिए? आप suउन्हें प्रयास करके देख सकते हैं।
जीविंग

2
मैं यह देने जा रहा हूँ -1। मुख्य रूप से क्योंकि आप मैन्युअल रूप से छाया फ़ाइल को संपादित करने का सुझाव देते हैं। जो एक बहुत बुरा विचार है।
Jivings

@ जीवन वह नहीं है। वह बस का उपयोग कर के रूप में अच्छी तरह से हो सकता है vipw; यह एक बुरा विचार है? नहीं यह नहीं। उपयोग करने के लिए +1 vipw
user2497

41

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

पासवर्डों

सबसे पहले आपको उन उपयोगकर्ताओं के लिए डिफ़ॉल्ट पासवर्ड बदलना चाहिए जो लॉगिन करने में सक्षम हैं। डेबियन के लिए यह केवल डिफ़ॉल्ट उपयोगकर्ता Pi है । आर्क लिनक्स के लिए यह सुपर यूजर रूट हैpasswdकमांड लाइन पर टाइप करने पर उपयोगकर्ता के रूप में लॉग इन करने पर पासवर्ड बदल जाते हैं ।

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

अंधकार

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

यहां जो कुछ भी करने की आवश्यकता है, वह आमतौर पर इस्तेमाल किए जाने वाले प्रोटोकॉल के लिए डिफ़ॉल्ट बंदरगाहों को बदलना है। उदाहरण के लिए, डिफ़ॉल्ट SSH पोर्ट 22 और FTP 21 है। मेरे सिस्टम पर SSH 222 और FTP 221 का उपयोग करता है, जो किसी भी स्वचालित हमले से इन प्रोटोकॉल को अस्पष्ट करना चाहिए।

कनेक्शन सुरक्षा

सबसे पहले, सबसे महत्वपूर्ण सुरक्षा चिंता यह है कि रूट खाता SSH के माध्यम से लॉग इन करने में सक्षम नहीं होना चाहिए । आप /etc/ssh/sshd_configइस लाइन पर टिप्पणी या हटाकर फ़ाइल में रूट लॉगिन को अक्षम कर सकते हैं :

PermitRootLogin yes

इसे डिफ़ॉल्ट रूप से सेट नहीं किया जाना चाहिए, लेकिन यह सुनिश्चित करना सबसे अच्छा है।


यदि आप एसएसएच का उपयोग करते हैं, और बीच के हमलों में आदमी के बारे में चिंतित हैं, तो अपने पासवर्ड के खिलाफ शब्दकोश में हमला करते हैं, तो आप उपयोग कर सकते हैं SSH Keys

की-बेस्ड ऑथेंटिकेशन में पासवर्ड ऑथेंटिकेशन के कई फायदे हैं, उदाहरण के लिए प्लेन-फोर्स की तुलना में की-ब्रूट-फोर्स के लिए की-वैल्यू काफी कठिन हैं।

SSH कुंजी प्रमाणीकरण सेट करने के लिए आपको पहले कुंजी जोड़ी बनाने की आवश्यकता है। यह आपके क्लाइंट मशीन पर सबसे आसानी से किया जाता है (वह मशीन जिसके साथ आप Pi को एक्सेस करना चाहते हैं)।

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.

जैसा कि आप देख सकते हैं, इसने दो फाइलें बनाई हैं, निजी कुंजी id_rsaऔर सार्वजनिक कुंजी id_rsa.pub

निजी कुंजी केवल आपके लिए जानी जाती है और इसे सुरक्षित रूप से संरक्षित किया जाना चाहिए । इसके विपरीत, सार्वजनिक कुंजी किसी भी SSH सर्वर के साथ स्वतंत्र रूप से साझा की जा सकती है जिससे आप कनेक्ट करना चाहते हैं।

तो हम क्या करना चाहते हैं रास्पबेरी पाई पर सार्वजनिक कुंजी की प्रतिलिपि बनाएँ । हम इसे बहुत आसानी से कर सकते हैं:

ssh-copy-id pi@address

piरास्पबेरी पाई उपयोगकर्ता नाम कहां है, और पाई addressका आईपी पता है।

मैं दोहराऊंगा, हम सार्वजनिक कुंजी वितरित करते हैं । निजी कुंजी तुम्हारी है। इसे कसकर पकड़ें, उस कुंजी को जारी करने के लिए सिस्टम की सुरक्षा को तोड़ता है।

आर्क विकि यह कैसे काम करता है पर एक उत्कृष्ट विवरण नहीं है:

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

सार्वजनिक कुंजी प्रमाणीकरण की सुरक्षा के बारे में अधिक जानकारी के लिए, विकिपीडिया की गहन व्याख्या है

जगह में SSH सुरक्षा के साथ आप एन्क्रिप्टेड, सुरक्षित डेटा स्थानान्तरण की एक भयानक राशि कर सकते हैं। यदि आवश्यक हो तो व्यावहारिक रूप से हर दूसरे पोर्ट कनेक्शन को एसएसएच के माध्यम से रूट किया जा सकता है। आप एसएसएच के माध्यम से एक्स सत्र को भी आगे बढ़ा सकते हैं ताकि यह दूसरी मशीन पर दिखाई दे।

एक दिलचस्प उदाहरण के रूप में, कल मैं अपने डेस्कटॉप पर एक्लिप्स चला रहा था, इसे अपने रास्पबेरी पाई पर देख रहा था, और मेरी नेटबुक से माउस और कीबोर्ड को नियंत्रित कर रहा था। ऐसी है एसएसएच की शक्ति।

अनुमतियां

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

cat /etc/shadow

shadowफाइल सिस्टम पर उपयोगकर्ताओं के लिए एन्क्रिप्टेड पासवर्ड होता है, इसलिए हम इसे पर एक नज़र लेने के लिए किसी को भी के बारे में अभी नहीं चाहेगा! तो आपको यह प्रतिक्रिया देखनी चाहिए:

cat: /etc/shadow: Permission denied

हम देख सकते हैं कि यह फ़ाइल की अनुमतियों पर एक नज़र डालकर क्यों है:

ls -l /etc/shadow
-rw------- 1 root root 821 Jun 11 22:13 /etc/shadow

यह हमें बताता है कि फ़ाइल रूट के स्वामित्व में है, और केवल स्वामी ने अनुमतियों को पढ़ा / लिखा है। चलिए उस आउटपुट को तोड़ते हैं।

-rw-------

यह अनुमतियों की स्थिति है। पहला बिट हमें फ़ाइल का प्रकार बताता है ( -मतलब नियमित फ़ाइल)। अगले तीन बिट्स फ़ाइल के स्वामी के लिए उपलब्ध कार्यों का प्रतिनिधित्व करते हैं । दूसरे तीन बिट्स समूह का प्रतिनिधित्व करते हैं , और अंतिम तीन अन्य या सभी के लिए हैं। इस प्रकार पूर्ण अनुमति वाली एक निर्देशिका इस तरह दिखाई देगी:

drwxrwxrwx  10 root root   280 Jun 20 11:40 tmp/

यह स्वामी, समूह और अन्य सभी के लिए अनुमतियों को पढ़ने, लिखने और निष्पादित करने के लिए है।

अगला महत्वपूर्ण हिस्सा दो नाम हैं। हमारे मामले में root root। पहला उपयोगकर्ता फ़ाइल का स्वामी है। दूसरा यूजरग्रुप है । उदाहरण के लिए यह देखना आम होगा:

drwxr-xr-x  10 pi users   280 Jun 20 11:40 home/pi

यह उपयोगकर्ता piको उसकी होम डायरेक्टरी पर पढ़ने / लिखने और अन्य सभी उपयोगकर्ताओं के लिए एक्सेस पढ़ने की अनुमति देता है।

अनुमतियाँ अक्सर अष्टांगिक मूल्यों का उपयोग करके नियंत्रित और संदर्भित की जाती हैं। उदाहरण के लिए, यदि हम केवल उस स्वामी के लिए rw सेट करना चाहते हैं जिसे हम टाइप करेंगे:

chmod 600 /path/to/file

यह एक मूल अवलोकन है, लिनक्स फ़ाइल अनुमतियों के बारे में अधिक जानकारी के लिए, यहां एक अच्छा लेख है।


फ़ाइलों और फ़ोल्डरों को सुरक्षित करते समय यह समझ महत्वपूर्ण है। उदाहरण के लिए, मान लें कि हमने SSH कीज़ लगाई हैं। हम निश्चित रूप से किसी अन्य उपयोगकर्ता को हमारी ~/.sshनिर्देशिका के अंदर नहीं देखना चाहते हैं , या वे हमारी निजी कुंजी लेने में सक्षम होंगे। इस प्रकार हम उनके पढ़ने के विशेषाधिकार हटा देते हैं:

chmod 700 ~/.ssh
ls -la ~/.ssh 
drwx------   2 james users  4096 Jun 18 03:05 .

मुझे उम्मीद है कि यह लिनक्स को सुरक्षित करने के साथ आपकी कुछ चिंताओं को दूर करता है। इससे आपको यह देखने में सक्षम होना चाहिए कि यह एक बहुत ही सुरक्षित प्रणाली है और यदि आप सावधान हैं तो आपको कोई सुरक्षा समस्या नहीं होनी चाहिए।


10
मैं आपकी अस्पष्ट टिप्पणी से असहमत हूं, यह आपके डिवाइस पर खुले बंदरगाहों को मैप करने और आपके ssh सर्वर को खोजने के लिए सेकंड लेगा। पासवर्ड लॉगिन अक्षम करें और सामान्य बंदरगाहों से चिपके रहें। मुझे संदेह है कि आपको बिल्कुल ftp की ज़रूरत है, इसके बजाय scp का उपयोग करें।
एलेक्स चेम्बरलेन

2
@AlexChamberlain यह हमलावरों के लिए एक अस्थायी गति है, लेकिन किसी भी तरह से अकेले पूर्ण समाधान नहीं है।
Jivings 11

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

2
@AlexChamberlain, डेबियन ssh प्रमुख पराजय के दौरान हमने पोर्ट 22 पर बहुत सारे प्रयास किए और कहीं भी कोई भी नहीं। उस उदाहरण में, एक अलग पोर्ट पर चलने से आपको बहुत समय मिल जाएगा, जबकि हैकर्स इस बात की कोशिश कर रहे थे कि शोषित मेजबानों में से कौन सा मूल्यवान था। एसबीओ लगभग उतना मदद नहीं करता है अगर हमलावर आपको विशेष रूप से लक्षित कर रहा है।
जॉन ला रोय

1
मैं सहमत हूँ। मेरा कहना यह था कि यह सिर्फ नियतकालिक नहीं है - हाल की स्मृति में एक समय रहा है जहां एसबीओ ने निश्चित रूप से मदद की, और एक महत्वपूर्ण अंतर बनाया ।
जॉन ला रोय

6

Bruteforce हमलों को रोकने के लिए, आप स्थापित और कॉन्फ़िगर कर सकते हैं fail2ban। यह लॉग फ़ाइलों (जैसे /var/log/auth.log) को पार्स करेगा और यह पता लगाने की कोशिश करेगा कि क्या कई लॉगिन प्रयास विफल हो गए हैं। फिर, यह स्वचालित रूप से स्रोत आईपी पते के साथ प्रतिबंध लगाएगा iptables

इंटरनेट के चारों ओर हॉव्टो का एक समूह है।

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