लिनक्स: दूरस्थ sysadmin के लिए स्थापित किया गया


51

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

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

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

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

  • एक खाता स्थापित करें और सुरक्षित रूप से लेन-देन का आदान-प्रदान करें
  • रूट (sudo) एक्सेस सेट करें
  • मेरे खाते तक पहुंच प्रतिबंधित करें
  • ऑडिट ट्रेल प्रदान करें

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

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


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

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

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

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

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

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) एक्सेस सेट करें

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

hbruijn ALL=(ALL) ALL

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

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

Match user hbruijn
PasswordAuthentication no

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

आपने पहले से ही उन आईपी-पतों को फाइल 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

8
आप लॉग कर सकते हैं (तथ्य के बाद आसानी से बदल सकते हैं) और यहां तक ​​कि सत्र भी साझा screenकर सकते हैं, इसलिए चरम मामलों में, आपका क्लाइंट लाइव देख सकता है कि आप क्या कर रहे हैं।
स्वेन

आप एक बेहतर लेखापरीक्षा निशान जोड़ना चाहते हैं आप अगर वे संभावना है रिमोट लॉगिंग सक्षम करने के लिए उन्हें निर्देश देना चाहिए
Fredi

जवाबों:


24

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

आपको अभी भी उस पर भरोसा करने की आवश्यकता है क्योंकि आपके पास रूट एक्सेस है और अभी भी एक्सपायर फ्लैग को हटा सकता है।


15

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

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

तो सब कुछ session.log में है।


क्या आप दूरस्थ होस्ट सिस्टम पर ssh सत्र शुरू करने से पहले अपने स्वयं के होस्ट पर चलने की सलाह देंगे, या इसे रिमोट सिस्टम पर मेरी प्रोफ़ाइल के भाग के रूप में शामिल करेंगे?
HBruijn

1
मुझे लगता है कि आप या तो कर सकते हैं - मैंने केवल इसका उपयोग किया है एक बार ज्यादातर लोग वास्तव में परवाह नहीं करते हैं।
user9517

7

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


3
Match user hbruijn \n PasswordAuthentication noSshd_config के अतिरिक्त को किसी को भी मेरे डिक्रिप्ट किए गए पासवर्ड (संभवतः स्थानीय उपयोगकर्ता इसका उपयोग कर सकते हैं su - hbruijn) के साथ दूर से लॉग इन करने से रोकना चाहिए, लेकिन जहां तक ​​मुझे पता है कि मुझे अभी भी sudoउद्देश्यों के लिए एक वैध पासवर्ड की आवश्यकता है । शायद मुझे लॉग इन करने के बाद बस अपना पासवर्ड रीसेट करना चाहिए?
HBruijn

ओह, सुडोल के बारे में अच्छी बात है। मुझे यकीन नहीं है कि क्या --disabled-passwordराज्य में किसी खाते passwdको उस खाते से चलाकर पासवर्ड दिया जा सकता है ।
zwol

इसके अलावा, आपके द्वारा प्रदान किए गए पासवर्ड हैश पर सुनने से किसी को क्या रोकता है? वह हिस्सा एक कमजोर कड़ी है जो ssh कुंजियों का उपयोग करते हुए कम करती है जहां यह महत्वपूर्ण नहीं है कि आपकी सार्वजनिक कुंजी इंटरसेप्टेड है या नहीं।
जेम्सरन

3
क्या उस कमजोर लिंक को हल किया जा सकता है जिससे ग्राहक भी sudoers फ़ाइल की तरह एक लाइन जोड़ सकते हैं hbruijn ALL=(ALL) NOPASSWD: /usr/bin/passwd hbruijn?
दीज़ा

2

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

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

sudo useradd --disabled-password hbruijn

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

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

hbruijn ALL=(ALL) NOPASSWD:ALL

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

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