मैं आपको सलाह दूंगा कि आप पहली बार रूट खाते का उपयोग करें। यदि आप इसे इस तरह सेट करते हैं:
- अपने
sshd_configको लक्ष्य मशीन पर कॉन्फ़िगर करें PermitRootLogin without-password।
ssh-keygenSSH निजी कुंजी बनाने के लिए बैकअप खींचने वाली मशीन का उपयोग करें (केवल अगर आपके पास पहले से SSH कुंजी नहीं है)। एक पासफ़्रेज़ सेट न करें। Google एक ट्यूटोरियल अगर आपको इसके लिए विवरण की आवश्यकता है, तो बहुत कुछ होना चाहिए।
/root/.ssh/id_rsa.pubबैकअप मशीन की सामग्री /root/.ssh/authorized_keysको अपने लक्ष्य मशीन पर लागू करें।
- अब आपके बैकअप मशीन में पासवर्ड प्रमाणीकरण का उपयोग किए बिना, आपके लक्ष्य मशीन के लिए रूट एक्सेस है।
तब परिणामी सेटअप बहुत सुरक्षित होना चाहिए।
sudo, विशेष NOPASSWDरूप से टिप्पणियों में सिफारिश के साथ संयुक्त , रूट खाते का उपयोग करने पर कोई सुरक्षा लाभ नहीं है। उदाहरण के लिए यह सुझाव:
अपनी /etc/sudoersफ़ाइल में निम्न जोड़ें :rsyncuser ALL= NOPASSWD:/usr/bin/rsync
अनिवार्य रूप से rsyncuserवैसे भी रूट अनुमति देता है। तुम पूछो:
@MartinvonWittich के rsyncसाथ निष्पादित होने के कारण एक पूर्ण रूट शेल हासिल करना आसान है sudo? कृपया [एम] ई [माध्यम से] चलें।
खैर, सरल। अनुशंसित कॉन्फ़िगरेशन के साथ, rsyncuserअब rsyncपासवर्ड के लिए पूछे बिना भी रूट के रूप में चल सकता है । rsyncफ़ाइलों में हेरफेर करने के लिए एक बहुत शक्तिशाली उपकरण है, इसलिए अब rsyncuserरूट अनुमतियों के साथ फ़ाइलों में हेरफेर करने के लिए एक बहुत शक्तिशाली उपकरण है। इसका फायदा उठाने का एक तरीका मुझे बस कुछ ही मिनटों में मिला (उबंटू 13.04 पर परीक्षण किया गया, आवश्यकता है dash, bashकाम नहीं किया):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
जैसा कि आप देख सकते हैं, मैंने खुद को एक मूल खोल बनाया है; whoamiअपने खाते को रूट के रूप में पहचानता है, मैं फ़ाइलों को बना /etcसकता हूं और मैं इससे पढ़ सकता हूं /etc/shadow। मेरा शोषण बाइनरी पर सेट्यूड बिट सेट करना था dash; यह लिनक्स को हमेशा इस मामले में स्वामी की अनुमति के साथ उस बाइनरी को चलाने का कारण बनता है।
अच्छे कारणों से वास्तविक जड़ का होना [अनुशंसित] नहीं है। - 15 घंटे पहले रेडानिमलवार
नहीं, अनाड़ी रूप से उन स्थितियों में रूट खाते के आसपास काम करना जहां यह उपयोग करने के लिए बिल्कुल उपयुक्त है यह अच्छे कारणों के लिए नहीं है। यह कार्गो पंथ प्रोग्रामिंग का सिर्फ एक और रूप है - आप वास्तव में sudo बनाम रूट के पीछे की अवधारणा को नहीं समझते हैं, आप बस इस धारणा को "मूल रूप से बुरा है, sudo अच्छा है" लागू करते हैं क्योंकि आपने कहीं पढ़ा है।
एक तरफ, ऐसी परिस्थितियां हैं जहां sudoनिश्चित रूप से नौकरी के लिए सही उपकरण है। उदाहरण के लिए, जब आप अंतःक्रियात्मक रूप से एक ग्राफ़िकल लिनक्स डेस्कटॉप पर काम कर रहे हैं, तो हम उबंटू कहते हैं, तो उपयोग करने के लिए sudoउन दुर्लभ मामलों में ठीक है जहां आपको कभी-कभी रूट एक्सेस की आवश्यकता होती है। उबंटू जानबूझकर एक निष्क्रिय रूट खाता है और आपको sudoउपयोगकर्ताओं को हमेशा लॉग इन करने के लिए रूट खाते का उपयोग करने से रोकने के लिए डिफ़ॉल्ट रूप से उपयोग करने के लिए मजबूर करता है। जब उपयोगकर्ता बस वेब ब्राउज़र जैसे उदा का उपयोग करना चाहता है, तो रूट के रूप में लॉग इन करना एक खतरनाक बात होगी। , और इसलिए डिफ़ॉल्ट रूप से रूट खाता नहीं होना बेवकूफ लोगों को ऐसा करने से रोकता है।
दूसरी तरफ, आपकी जैसी स्थितियां हैं, जहां एक स्वचालित स्क्रिप्ट को किसी चीज़ के लिए रूट अनुमतियों की आवश्यकता होती है, उदाहरण के लिए बैकअप बनाने के लिए। अब sudoरूट खाते के चारों ओर काम करने के लिए उपयोग करना न केवल व्यर्थ है, यह खतरनाक भी है: पहली नज़र में rsyncuserयह एक सामान्य अप्रभावित खाते की तरह दिखता है। लेकिन जैसा कि मैंने पहले ही समझाया है, एक हमलावर के लिए पूर्ण रूट एक्सेस हासिल करना बहुत आसान होगा यदि वह पहले से ही rsyncuserएक्सेस प्राप्त कर चुका है । तो अनिवार्य रूप से, अब आपके पास एक अतिरिक्त रूट खाता है जो रूट खाते की तरह बिल्कुल नहीं दिखता है, जो अच्छी बात नहीं है।
rootपहली बार में खाते का उपयोग करें ।sudo, विशेषNOPASSWDरूप से टिप्पणियों में अनुशंसित के साथ संयुक्त , वास्तव में आपकी मशीन की सुरक्षा में सुधार नहीं करता है।