सवाल लिनक्स: रिमोट sysadmin के लिए सेट अप


प्रत्येक अब और फिर मुझे रिमोट सपोर्ट, समस्या निवारण और / या लिनक्स सिस्टम पर प्रदर्शन ट्यूनिंग प्रदान करने का अजीब अनुरोध मिलता है।

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

दूसरी ओर छोटी कंपनियों और व्यक्तियों ने हमेशा मुझे यह स्थापित करने के लिए बारी किया कि उन्हें स्थापित करने के लिए उन्हें क्या करना है। आम तौर पर उनके सर्वर सीधे इंटरनेट से जुड़े होते हैं और मौजूदा सुरक्षा उपायों में उनके लिनक्स वितरण के लिए डिफ़ॉल्ट शामिल होते हैं।

लगभग हमेशा मुझे रूट स्तर की पहुंच की आवश्यकता होगी और जो भी मेरे लिए पहुंच स्थापित करेगा वह एक विशेषज्ञ sysadmin नहीं है। मैं उनका रूट पासवर्ड नहीं चाहता हूं और मुझे भी यकीन है मेरी कार्रवाई दुर्भावनापूर्ण नहीं होगा, लेकिन मुझे क्या उचित सरल निर्देश देना चाहिए:

  • एक खाता खोलें और सुरक्षित रूप से प्रमाण पत्र का आदान-प्रदान करें
  • रूट (सूडो) का उपयोग सेट करें
  • मेरे खाते तक पहुंच प्रतिबंधित करें
  • लेखा परीक्षा निशान प्रदान करें

(और हां, मुझे पता है और हमेशा उन ग्राहकों को चेतावनी देते हैं कि एक बार जब मेरे पास कोई भी दुर्भावनापूर्ण कार्रवाई छिपाने के लिए व्यवस्थापक पहुंच हो, तो यह मान लें कि मेरे पास ऑडिट ट्रेल बनाने में छिपाने और सक्रिय रूप से भाग लेने के लिए कुछ भी नहीं है।)

नीचे दिए गए चरणों पर क्या सुधार किया जा सकता है?


मेरा वर्तमान निर्देश सेट:

एक खाता खोलें और सुरक्षित रूप से प्रमाण पत्र का आदान-प्रदान करें

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

sudo useradd -p '$1$********' hbruijn

मैं एक सार्वजनिक कुंजी एसएसएच (प्रति ग्राहक विशिष्ट कुंजी जोड़ी) प्रदान करता हूं और पूछता हूं कि उन्होंने मेरा खाता उस कुंजी के साथ स्थापित किया है:

sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys 

रूट (सूडो) का उपयोग सेट करें

मैं क्लाइंट से मेरे लिए सुडो स्थापित करने के लिए कहता हूं sudo sudoedit या अपने पसंदीदा संपादक का उपयोग करके और इसमें शामिल हों /etc/sudoers:

hbruijn ALL=(ALL) ALL

मेरे खाते तक पहुंच प्रतिबंधित करें

आम तौर पर क्लाइंट पासवर्ड आधारित लॉग इन की अनुमति देता है और मैं उन्हें निम्नलिखित दो पंक्तियों को जोड़ने के लिए कहता हूं /etc/ssh/sshd_config कम से कम मेरे खाते को एसएसएच कुंजी पर सीमित करने के लिए:

Match user hbruijn
PasswordAuthentication no

क्लाइंट के आधार पर मैं हमेशा एक एकल स्टेटिक होस्ट (उदाहरण के लिए 1 9 2.168.1.2) प्रदान करने के लिए एक एकल बुर्ज होस्ट के माध्यम से अपने सभी एसएसएच एक्सेस को रूट कर दूंगा और / या आईपी-एड्रेस रेंज प्रदान करता हूं जो मेरे आईएसपी उपयोग करता है (उदाहरण के लिए 10.80। 0.0 / 14)। यदि एसएसएच एक्सेस प्रतिबंधित है तो ग्राहक को फ़ायरवॉल श्वेतसूची में जोड़ने की आवश्यकता हो सकती है (हालांकि एसएसएच से अधिक अक्सर फ़िल्टर नहीं किया जाता है)।

आपने पहले से ही उन आईपी पते को देखा है from= में प्रतिबंध ~.ssh/authorized_keys फ़ाइल जो मेजबान को सीमित करती है, जिससे मेरी कुंजी का उपयोग उनके सिस्टम तक पहुंचने के लिए किया जा सकता है।

लेखा परीक्षा निशान प्रदान करें

अब तक किसी भी ग्राहक ने मुझसे इसके लिए नहीं पूछा है, और मैंने अपने गधे को कवर करने के लिए निम्नलिखित से कुछ भी विशिष्ट नहीं किया है:

मैं लगातार उपयोग करने की कोशिश करता हूं sudo व्यक्तिगत आदेश के साथ और उपयोग रोकने से रोकने की कोशिश करें sudo -i या sudo su -। मैं उपयोग करने की कोशिश नहीं करता sudo vim /path/to/file  लेकिन उपयोग करें sudoedit बजाय।

डिफ़ॉल्ट रूप से सभी विशेषाधिकार प्राप्त कार्यों को syslog (और /var/log/secure):

Sep 26 11:00:03 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=jboss ; COMMAND=sudoedit /usr/share/jbossas/domain/configuration/domain.xml  
Sep 26 11:00:34 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/messages

मैंने ज्यादातर अपने काम के माहौल को अनुकूलित करने पर छोड़ दिया है, केवल एक चीज जो मैं वास्तव में करता हूं वह मेरे अंदर निम्न निर्धारित करती है ~/.bash_profile बैश इतिहास में वृद्धि और समय-टिकटों को शामिल करने के लिए:

export HISTSIZE=99999999999
export HISTFILESIZE=99999999999
export HISTIGNORE="w:ls:ls -lart:dmesg:history:fg"
export HISTTIMEFORMAT='%F %H:%M:%S  '
shopt -s histappend

50
2017-09-26 11:54


मूल


आप लॉग इन कर सकते हैं (तथ्य के बाद बदलने के लिए आसान) और यहां तक ​​कि सत्र साझा करें screen, इसलिए चरम मामलों में, आपका ग्राहक लाइव देख सकता है जो आप कर रहे हैं। - Sven♦
यदि आप बेहतर ऑडिट ट्रेल जोड़ना चाहते हैं तो आपको उन्हें दूरस्थ लॉगिंग सक्षम करने के लिए निर्देश देना चाहिए यदि उनके पास संभावना है - Fredi


जवाब:


दिमाग में आने वाली एकमात्र चीज जोड़ना होगा --expiredate को adduser कहते हैं।
इसके साथ ग्राहक जानता है कि आपकी पहुंच स्वचालित रूप से एक निश्चित तिथि पर समाप्त हो जाएगी।

उसे अभी भी आपको भरोसा करने की आवश्यकता है क्योंकि आपके पास रूट पहुंच है और अभी भी समाप्त होने वाले ध्वज को हटा सकता है।


24
2017-09-26 12:34





आप अपने सत्रों को रिकॉर्ड कर सकते हैं स्क्रिप्ट (1) उपयोगिता।

$ script session.log
Script started, file is session.log
$ ls
file1  session.log
exit
Script done, file is session.log

फिर सब कुछ session.log में है।


15
2017-09-26 16:29



क्या आप रिमोट सिस्टम को एसएसएच सत्र शुरू करने से पहले, या रिमोट सिस्टम पर अपनी प्रोफाइल के हिस्से के रूप में शामिल करने से पहले अपने मेजबान पर चलने की अनुशंसा करेंगे? - HBruijn
मुझे लगता है कि आप या तो कर सकते हैं - मैंने केवल इसका इस्तेमाल किया है जब ज्यादातर लोग वास्तव में परवाह नहीं करते हैं। - Iain


चूंकि आप पहले से ही एक एसएसएच पब्लिक कुंजी के साथ लॉग इन कर रहे हैं, इसलिए यदि आप पासवर्ड हैश की आपूर्ति नहीं करते हैं तो यह चीजों को थोड़ा कस कर देगा; इसके बजाय उन्हें उपयोग करने के लिए कहो adduser --disabled-password (समतुल्य रूप, useradd -p '!', मुझे लगता है), जो प्रभावी रूप से बराबर है PasswordAuthentication no उस खाते के लिए, इसके अलावा कोई भी व्यक्ति आपके ईमेल पर स्नूप करने का कोई मौका नहीं है, पासवर्ड हैश को क्रूर-बल कर सकता है और आपके जैसा लॉग इन कर सकता है।


7
2017-09-26 15:51



के अतिरिक्त Match user hbruijn \n PasswordAuthentication no sshd_config को किसी को भी मेरे डिक्रिप्ट किए गए पासवर्ड के साथ दूरस्थ रूप से लॉग इन करने से रोकना चाहिए (संभावित रूप से स्थानीय उपयोगकर्ता इसका उपयोग कर सकते हैं su - hbruijn) लेकिन जहां तक ​​मुझे पता है कि मुझे अभी भी एक वैध पासवर्ड होना चाहिए sudo यद्यपि उद्देश्य। शायद लॉग इन करने के बाद मुझे बस अपना पासवर्ड रीसेट करना चाहिए? - HBruijn
ओह, सुडो के बारे में अच्छा मुद्दा। मुझे यकीन नहीं है कि एक खाता है या नहीं --disabled-password राज्य को चलकर पासवर्ड दिया जा सकता है passwd उस खाते से। - zwol
आपके द्वारा प्रदान किए गए पासवर्ड हैश पर किसी को भी सुनने में क्या रोकता है? वह हिस्सा एक कमजोर लिंक है जो एसएसएच कुंजी का उपयोग करके कमजोर पड़ता है, इससे कोई फर्क नहीं पड़ता कि आपकी सार्वजनिक कुंजी को अवरुद्ध किया गया है या नहीं। - JamesRyan
क्या वह कमजोर लिंक हल हो सकता है जिससे ग्राहक भी सूडर्स फ़ाइल में एक लाइन जोड़ सकता है hbruijn ALL=(ALL) NOPASSWD: /usr/bin/passwd hbruijn? - Dezza


जब आप सार्वजनिक / निजी कुंजी का उपयोग करने जा रहे हैं, तो बिल्कुल एक पासवर्ड क्यों प्रदान करें।

सार्वजनिक कुंजी साझा करने के लिए हैं, इसलिए यह है कि आपको सुरक्षित रूप से क्रेडेंशियल्स का आदान-प्रदान करने के लिए उपयोग करना चाहिए, पासवर्ड नहीं है।

sudo useradd --disabled-password hbruijn

अपनी सार्वजनिक कुंजी भेजते समय, एक दूसरे फोन पर फिंगरप्रिंट को सत्यापित करें, जैसे फ़ोन कॉल, ताकि आप जान सकें कि इसे किसी भी तरह से बदल दिया गया है।

चूंकि अब आपके पास सूडो का उपयोग करने के लिए कोई पासवर्ड नहीं होगा, इसलिए आपको अपनी लाइन को सूडोर्स फ़ाइल में भी बदलने की आवश्यकता है

hbruijn ALL=(ALL) NOPASSWD:ALL

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


2
2017-09-30 09:12