Linux VPS पर SSH को सुरक्षित कैसे करें
एक सार्वजनिक VPS ऑनलाइन होने के कुछ ही मिनटों में स्वचालित लॉगिन प्रयास प्राप्त करने लगता है। ये चरण SSH पर हमले को कहीं ज़्यादा कठिन बना देते हैं। ये निर्देश Ubuntu या Debian के लिए लिखे गए हैं; अगर आपने अभी तक सर्वर नहीं बनाया है, तो आप Linux VPS किराए पर ले सकते हैं और एक साफ़ image से शुरुआत कर सकते हैं। नई सेटिंग्स को दूसरी विंडो से जाँचने तक अपना मौजूदा SSH session खुला रखें।
1. sudo के साथ एक सामान्य यूज़र बनाएँ
adduser deploy
usermod -aG sudo deploy2. Password की जगह SSH keys इस्तेमाल करें
अपने कंप्यूटर पर:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPPassword बंद करने से पहले एक बार key से लॉगिन करके पुष्टि कर लें कि वह काम कर रही है।
3. Password और root login बंद करें
/etc/ssh/sshd_config.d/99-hardening.conf बनाएँ:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Syntax जाँचें और service को reload करें। Ubuntu और Debian पर service का नाम ssh है, जबकि RHEL-आधारित सिस्टम पर sshd:
sudo sshd -t && sudo systemctl reload sshदूसरा terminal खोलें और फिर से लॉगिन करें। उसके बाद ही पुराना session बंद करें।
4. Firewall चालू करें
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseकेवल वही ports खोलें जिनकी आपको ज़रूरत है, जैसे web server के लिए 80 और 443। आप cloud console में firewall rule बनाकर SSH को अपने IP पते तक भी सीमित कर सकते हैं।
5. Fail2ban से बार-बार की विफलताओं को रोकें
sudo apt install -y fail2ban/etc/fail2ban/jail.local बनाएँ:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. सुरक्षा अपडेट स्वचालित रूप से इंस्टॉल करें
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. वैकल्पिक अतिरिक्त उपाय
- SSH port बदलने से log का शोर कम होता है, लेकिन यह अपने-आप में सुरक्षा उपाय नहीं है।
- Private key को passphrase से सुरक्षित रखें और उसका backup किसी सुरक्षित जगह पर रखें।
lastऔरsudo journalctl -u ssh --since todayसे लॉगिन की समीक्षा करें।- सर्वर कॉन्फ़िगर होने के बाद एक snapshot लें, ताकि आप साफ़ आधार स्थिति पर वापस जा सकें।
अगर आप लॉक-आउट हो गए हैं, तो अपने cloud panel के browser console से लॉगिन करके कॉन्फ़िगरेशन ठीक करें। सुरक्षा की अगली परत के लिए हमारी DDoS सुरक्षा गाइड देखें।
अक्सर पूछे जाने वाले प्रश्न
क्या root login बंद करना सुरक्षित है?
हाँ, बशर्ते पहले आपने एक sudo यूज़र बनाया हो और उसकी key का काम करना जाँच लिया हो। administrative commands आप अब भी sudo से चला सकते हैं।
अगर केवल keys इस्तेमाल करते हैं, तो क्या Fail2ban चाहिए?
यह वैकल्पिक है। Password लॉगिन बंद होने पर brute force सफल नहीं हो सकता, लेकिन Fail2ban log का शोर और लोड कम करता है।
अगर मेरी SSH key खो जाए तो?
अपने cloud panel के console से लॉगिन करें, ~/.ssh/authorized_keys में नई public key जोड़ें और पुरानी key हटा दें।