नए VPS पर पहले 10 मिनट
नया VPS पहले ही मिनट से निशाने पर होता है। यह दस-मिनट की रनबुक यूज़र बनाती है, SSH कुंजियाँ सेट करती है, root लॉगिन बंद करती है और फ़ायरवॉल चालू करती है।
पहले 10 मिनट तय करते हैं कि आपका सर्वर कितना सुरक्षित रहेगा
बिल्कुल नया VPS सुरक्षित नहीं होता। जिस पल उसे पब्लिक IP मिलती है, उसी पल से स्कैनर उस पर लॉगिन की कोशिशें शुरू कर देते हैं, और डिफ़ॉल्ट इमेज उन्हें एक बड़ा निशाना थमा देती है: root अक्सर सीधे पहुँच में, पासवर्ड अक्सर चालू, कोई फ़ायरवॉल नहीं, और नियमित पैचिंग का कोई इंतज़ाम नहीं। अच्छी ख़बर यह है कि ये सारे दरवाज़े बंद करने में क़रीब दस मिनट और गिनी-चुनी कमांडें लगती हैं। यही वह रनबुक (कदम-दर-कदम की तयशुदा प्रक्रिया) है जिसे मैं हर नए सर्वर पर, उस पर कुछ भी रखने से पहले, चलाता हूँ।
इन कदमों को क्रम से पूरा करें, क्योंकि हर कदम पिछले पर टिका है। हर कदम की अपनी अलग गाइड है, जिसके लिंक जगह-जगह दिए गए हैं; यह पेज वह तेज़ रास्ता है जो इन सबको आपस में जोड़ता है।
मिनट 1: सब कुछ अपडेट करें
अपने प्रोवाइडर से मिले क्रेडेंशियल्स के साथ root के रूप में लॉग इन करें, और बाक़ी सब से पहले सिस्टम को पूरी तरह अप-टू-डेट कर लें:
apt update && apt upgrade -yबिना पैच वाली मशीन सबसे आसान निशाना होती है, इसलिए यह कदम सबसे पहले आता है। यह पूरा होते ही स्वचालित सुरक्षा अपडेट सेट कर दें, ताकि आपके याद रखे बिना भी सिस्टम पैच होता रहे।
मिनट 2: sudo वाला एक सामान्य यूज़र बनाएँ
root के रूप में काम करते न रहें। अपने लिए एक यूज़र बनाएँ और उसे sudo दें:
adduser matt
usermod -aG sudo mattयहाँ से आगे आप इसी यूज़र के रूप में लॉग इन करेंगे और एडमिन कामों के लिए sudo इस्तेमाल करेंगे। हर समय root के रूप में चलने का मतलब है कि हर ग़लती और हर सेंधमारी असीमित ताक़त के साथ होती है — बिना विशेषाधिकार वाले यूज़र के रूप में काम करना ठीक इसी को रोकने के लिए है।
मिनट 4: SSH कुंजियाँ सेट करें
पासवर्ड का अंदाज़ा लगाया जा सकता है; कुंजियों का नहीं। अपने लैपटॉप पर, अगर आपके पास पहले से कोई कुंजी नहीं है, तो एक बना लें:
ssh-keygen -t ed25519फिर उसका पब्लिक हिस्सा सर्वर पर कॉपी करें:
ssh-copy-id matt@YOUR_SERVERssh-copy-id के लिए ज़रूरी है कि नए यूज़र के लिए पासवर्ड लॉगिन चालू हो; अगर वह पहले से बंद है, तो root की ~/.ssh/authorized_keys को /home/matt/.ssh/authorized_keys में कॉपी करें (मालिकाना हक़ matt का हो), या अपनी पब्लिक कुंजी उस फ़ाइल में हाथ से चिपका दें।
इस कदम के पीछे का मॉडल — हर डिवाइस के लिए एक कुंजी, वे परमिशन जो कुंजी लॉगिन तोड़ देती हैं, और खोई हुई कुंजी को रद्द करना — SSH कुंजी प्रबंधन की मूल बातें में समझाया गया है।
लॉग आउट करके कुंजी के सहारे matt के रूप में दोबारा लॉग इन करें, और अगले कदम पर बढ़ने से पहले पक्का कर लें कि यह काम कर रहा है। कुंजी से अंदर आ पाने से पहले ही SSH को कस देना — लोग ठीक इसी तरह खुद को बाहर लॉक कर लेते हैं।
मिनट 6: root लॉगिन और पासवर्ड बंद करें
अब जब आपकी कुंजी काम कर रही है, तो वे दोनों दरवाज़े बंद कर दें जिन पर स्कैनर टिके होते हैं। एक drop-in फ़ाइल (मुख्य कॉन्फ़िगरेशन से अलग रखी जाने वाली अतिरिक्त फ़ाइल) इस्तेमाल करें, ताकि पैकेज अपग्रेड उसे ओवरराइट न कर दें। उसका नाम 00- से शुरू करें ताकि वह क्रम में 50-cloud-init.conf से पहले आए — Ubuntu की क्लाउड इमेजें यह फ़ाइल PasswordAuthentication yes के साथ लेकर आती हैं; sshd पढ़ी गई पहली वैल्यू ही रखता है, इसलिए क्रम में बाद में आने वाली फ़ाइल चुपचाप बेअसर रह जाती है:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noफिर SSH को रीलोड करें:
sudo systemctl restart sshइसके बाद वे सेटिंग्स जाँचें जो sshd असल में इस्तेमाल कर रहा है, ताकि क्रम में पिछड़कर बेअसर रह गई कोई drop-in फ़ाइल आपको धोखा न दे सके:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'पासवर्ड बंद और root लॉगिन ख़त्म होने के बाद, आपके सर्वर पर लगातार चल रहा ब्रूट-फ़ोर्स (पासवर्ड आज़मा-आज़माकर तोड़ने की कोशिश) ट्रैफ़िक कामयाब हो ही नहीं सकता। पूरा ब्योरा, वैकल्पिक पोर्ट बदलाव समेत, VPS पर SSH हार्डनिंग में है।
मिनट 8: फ़ायरवॉल चालू करें
अंदर आने वाले सारे ट्रैफ़िक को डिफ़ॉल्ट रूप से रोकें, फिर सिर्फ़ वही खोलें जिसकी आपको ज़रूरत है। फ़ायरवॉल चालू करने से पहले SSH को अनुमति दे दें, वरना आप अपना ही कनेक्शन काट बैठेंगे:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableजो भी सर्विस आप वाक़ई चला रहे हों, उसके लिए allow नियम जोड़ें — जैसे किसी वेबसाइट के लिए 80/tcp और 443/tcp। जाँच लें कि IPv4 और IPv6 दोनों कवर हैं, क्योंकि सिर्फ़ IPv4 छानने वाला फ़ायरवॉल IPv6 वाला हिस्सा पूरी तरह खुला छोड़ देता है। पूरा तरीक़ा VPS पर फ़ायरवॉल की बुनियादी गाइड में है।
मिनट 10: Fail2ban से स्कैनरों को धीमा करें
आख़िर में, Fail2ban जोड़ें, जो आपके पोर्ट पर हथौड़े बरसाने वाले पतों को बाहर निकाल देता है:
sudo apt install -y fail2banUbuntu 24.04 पर स्टॉक इंस्टॉल पहले बूट से ही SSH की हिफ़ाज़त करता है। कुंजियाँ पहले से अनिवार्य होने के कारण यह आपकी मुख्य रक्षा नहीं, बल्कि एक अतिरिक्त सुरक्षा-परत है, जो लॉग का शोर घटाती है और बार-बार कोशिश करने वाले पतों को ब्लॉक करती है।
आपकी चेकलिस्ट
बस, यही पूरी रनबुक है। नीचे दिए गए जनरेटर से हर सुरक्षा-उपाय पर टिक लगाएँ और एक निजी चेकलिस्ट तैयार करें, जिसे आप सर्वर के साथ सँभालकर रख सकें — हर कदम की सटीक कमांड समेत:
हर नए सर्वर पर इसे एक बार ऊपर से नीचे दोहराइए, और पूरा क्रम आपकी उँगलियों में बस जाएगा। अभी के दस मिनट आपको उस बेहद बुरी दोपहर से बचा लेते हैं, जो सर्वर के हैक हो जाने के बाद आती है।
ज़रूरी बुनियाद तैयार हो जाने के बाद Ubuntu पर स्वचालित सुरक्षा अपडेट सर्वर को अप-टू-डेट रखते हैं, बिना आपके दोबारा लॉग इन किए।
FAQ
नए VPS पर सबसे पहले क्या करना चाहिए?
apt update && apt upgrade -y से सिस्टम अपडेट करें, फिर sudo वाला एक सामान्य यूज़र बनाएँ और root के रूप में काम करना बंद कर दें। उसके बाद SSH कुंजियाँ सेट करें, root लॉगिन और पासवर्ड ऑथेंटिकेशन बंद करें, डिफ़ॉल्ट रूप से सब रोकने वाला फ़ायरवॉल चालू करें, और Fail2ban इंस्टॉल करें। इसी क्रम में करने का मतलब है कि हर कदम खुद को बाहर लॉक किए बिना, सुरक्षित ढंग से उठाया जा सकता है।
SSH हार्डनिंग के दौरान खुद को बाहर लॉक करने से कैसे बचें?
पासवर्ड या root बंद करने से पहले अपना SSH कुंजी लॉगिन सेट करके परख लें। लॉग आउट करके कुंजी से दोबारा लॉग इन करें और पुष्टि करें कि वह काम करता है — उसके बाद ही PasswordAuthentication और PermitRootLogin बंद करें। फ़ायरवॉल चालू करते समय ufw enable चलाने से पहले पोर्ट 22 को अनुमति दें। फिर भी बाहर लॉक हो जाएँ, तो आपके प्रोवाइडर का वेब कंसोल बिना SSH के आपको वापस अंदर पहुँचा देता है।
क्या एक छोटे सर्वर पर सचमुच इन सबकी ज़रूरत है?
हाँ, क्योंकि स्कैनरों को इसकी परवाह नहीं कि आपका सर्वर कितना छोटा है। वे हर पब्लिक IP को एक ही तरीक़े से आज़माते हैं। पूरी रनबुक में क़रीब दस मिनट लगते हैं और यह सारे आसान रास्ते बंद कर देती है: कोई root लॉगिन नहीं, पासवर्ड के अंदाज़े की कोई गुंजाइश नहीं, ऐसा कुछ भी खुला नहीं जो आपने खुद न चुना हो, और जाने-माने बग अपने-आप पैच होते रहते हैं।
सबसे ज़रूरी कदम कौन-सा है?
सिर्फ़ कुंजी से SSH लॉगिन, और root लॉगिन बंद। नए VPS पर होने वाले ज़्यादातर हमले root के पासवर्ड का अंदाज़ा लगाने की स्वचालित कोशिशें होती हैं, और इन दोनों को बंद करते ही हमलों की यह पूरी श्रेणी नामुमकिन हो जाती है। फ़ायरवॉल और Fail2ban फिर यह सीमित करते हैं कि क्या-क्या खुला है, और जो बचा रह जाए उसे धीमा करते हैं।
कैसे पक्का करें कि सर्वर वाक़ई पूरी तरह सुरक्षित हो चुका है?
भरोसा करने से पहले तीन चीज़ें हाथ से जाँचें। sudo ss -tlnp चलाएँ और पुष्टि करें कि सिर्फ़ वही पोर्ट किसी पब्लिक पते पर सुन रहे हैं जिन्हें आपने जान-बूझकर खोला था, और ऐसी कोई 0.0.0.0 या [::] वाली सर्विस नहीं है जिसे आप भूल चुके थे। sudo ufw status verbose चलाएँ और पुष्टि करें कि डिफ़ॉल्ट इनकमिंग पॉलिसी deny है और सादे तथा (v6) दोनों तरह के नियम मौजूद हैं। और पहला SSH सेशन बंद करने से पहले हमेशा दूसरा SSH सेशन खोल लें, ताकि SSH कॉन्फ़िगरेशन की कोई ग़लती आपको सर्वर से बाहर लॉक न कर सके। ये तीनों ठीक दिखें, तो बुनियादी चीज़ें अपनी जगह पर हैं।