हर अब और फिर मुझे लिनक्स सिस्टम पर दूरस्थ समर्थन, समस्या निवारण और / या प्रदर्शन ट्यूनिंग प्रदान करने के लिए अजीब अनुरोध मिलता है।
बड़ी कंपनियों के पास अक्सर विक्रेताओं / आपूर्तिकर्ताओं को दूरस्थ पहुंच प्रदान करने के लिए पहले से ही अच्छी तरह से स्थापित प्रक्रियाएं होती हैं और मुझे केवल उन लोगों का पालन करने की आवश्यकता होती है। (बेहतर या बदतर के लिए।)
दूसरी ओर छोटी कंपनियों और व्यक्तियों ने मुझे बारी-बारी से उन्हें निर्देश दिया कि वे मुझे स्थापित करने के लिए क्या करें। आमतौर पर उनके सर्वर सीधे इंटरनेट से जुड़े होते हैं और मौजूदा सुरक्षा उपायों में उनके लिनक्स वितरण के लिए डिफॉल्ट होते हैं।
लगभग हमेशा मुझे रूट लेवल एक्सेस की आवश्यकता होगी और जो कोई भी मेरे लिए एक्सेस की स्थापना करेगा, वह विशेषज्ञ विशेषज्ञ नहीं है। मुझे उनका रूट पासवर्ड नहीं चाहिए और मुझे पूरा यकीन है कि मेरी हरकतें दुर्भावनापूर्ण नहीं होंगी, लेकिन मुझे जो भी सरल निर्देश देने चाहिए, वह मुझे देना चाहिए:
- एक खाता स्थापित करें और सुरक्षित रूप से लेन-देन का आदान-प्रदान करें
- रूट (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
screen
कर सकते हैं, इसलिए चरम मामलों में, आपका क्लाइंट लाइव देख सकता है कि आप क्या कर रहे हैं।