नवीन VPS सुरक्षित करण्यासाठी पहिल्या 10 मिनिटांची यादी
नवीन VPS सुरू केल्यावर scanners लगेच login प्रयत्न करतात. या 10 मिनिटांच्या runbook मध्ये user तयार करा, SSH keys लावा, root बंद करा आणि firewall सुरू करा.
सुरुवातीची 10 मिनिटे तुमचा सर्व्हर किती सुरक्षित असेल हे ठरवतात
नवीन VPS सुरक्षित नसतो. त्याला public IP मिळताच scanners login करण्याचा प्रयत्न सुरू करतात. Default image मुळे त्यांना मोठे लक्ष्य मिळते: root अनेकदा पोहोचण्यायोग्य असतो, passwords अनेकदा अनुमत असतात, firewall नसतो आणि नियमित वेळापत्रकानुसार काहीही patched केलेले नसते. चांगली बाब म्हणजे हे सर्व बंद करण्यासाठी सुमारे दहा मिनिटे आणि काही commands पुरेसे आहेत. कोणतीही गोष्ट सर्व्हरवर ठेवण्यापूर्वी प्रत्येक नवीन सर्व्हरवर मी ही runbook प्रक्रिया वापरतो.
ही प्रक्रिया दिलेल्या क्रमाने पूर्ण करा, कारण प्रत्येक पायरी मागील पायरीवर आधारित आहे. प्रत्येक पायरीसाठी स्वतंत्र guide आहे आणि पुढे जाताना त्याची link दिली आहे. ही page त्या सर्व पायऱ्या एकत्र जोडणारा जलद मार्ग आहे.
मिनिट 1: सर्व काही अद्ययावत करा
तुमच्या provider ने दिलेल्या credentials वापरून root म्हणून लॉग इन करा आणि इतर कोणतेही काम करण्यापूर्वी system पूर्णपणे अद्ययावत करा:
apt update && apt upgrade -yपॅच नसलेला server हा सर्वात सोपा target असतो, त्यामुळे हे काम सर्वप्रथम करा. ते पूर्ण झाल्यावर automatic security updates सेट करा, जेणेकरून तुम्हाला ते लक्षात ठेवावे लागणार नाही आणि server अद्ययावत राहील.
मिनिट 2: sudo सह सामान्य वापरकर्ता तयार करा
root म्हणून काम सुरू ठेवू नका. स्वतःसाठी वापरकर्ता तयार करा आणि त्याला sudo अधिकार द्या:
adduser matt
usermod -aG sudo mattयानंतर या वापरकर्त्याच्या नावाने लॉग इन करा आणि प्रशासकीय कामांसाठी sudo वापरा. सतत root म्हणून काम केल्यास प्रत्येक चूक आणि प्रत्येक breach अमर्याद अधिकारांसह घडतो. unprivileged user म्हणून काम करणे हेच टाळण्यासाठी आहे.
मिनिट 4: SSH keys सेट करा
Passwords चा अंदाज लावता येतो; keys चा लावता येत नाही. तुमच्या स्वतःच्या laptop वर key आधीपासून नसेल, तर एक तयार करा:
ssh-keygen -t ed25519त्यानंतर public भाग server वर कॉपी करा:
ssh-copy-id matt@YOUR_SERVERनवीन user साठी ssh-copy-id मध्ये password login सुरू असणे आवश्यक आहे; ते आधीच बंद असल्यास, root चे ~/.ssh/authorized_keys /home/matt/.ssh/authorized_keys मध्ये कॉपी करा (मालकी matt कडे असावी), किंवा तुमची public key त्या file मध्ये manually paste करा.
या टप्प्यामागील संकल्पना — प्रत्येक device साठी एक key, key login खंडित करणाऱ्या permissions आणि हरवलेली key revoke करणे — SSH key management basics मध्ये स्पष्ट केली आहे.
matt म्हणून key वापरून log out करा आणि पुन्हा log in करा. पुढील टप्प्याला हात लावण्यापूर्वी ते कार्यरत असल्याची खात्री करा. key वापरून प्रवेश करता येण्यापूर्वी SSH अधिक कडक करणे म्हणजे स्वतःचाच प्रवेश बंद करून घेणे होय. त्या login वेळी Permission denied (publickey) दिसत असल्यास, password कडे परत जाण्याऐवजी ते आत्ताच दुरुस्त करा, कारण त्या एका संदेशामागे पाच वेगवेगळ्या त्रुटी असू शकतात आणि ssh -v output मुळे त्यापैकी नेमकी कोणती त्रुटी आहे हे समजते.
मिनिट 6: root login आणि password बंद करा
तुमची key कार्यरत असल्याने, आता scanners ज्या दोन प्रवेशमार्गांवर अवलंबून असतात ते बंद करा. Package upgrades मुळे ही configuration overwrite होऊ नये यासाठी drop-in file वापरा. तिचे नाव 00- ठेवा. त्यामुळे ती 50-cloud-init.conf च्या आधी sort होईल; Ubuntu cloud images मध्ये PasswordAuthentication yes समाविष्ट असते. sshd त्याला प्रथम मिळणारी value ठेवतो. त्यामुळे नंतर sort होणारी file असल्यास configuration शांतपणे निष्प्रभ ठरेल:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noत्यानंतर SSH reload करा:
sudo systemctl restart sshत्यानंतर sshd प्रत्यक्षात वापरत असलेल्या settings तपासा. त्यामुळे निष्प्रभ झालेला drop-in तुम्हाला चुकीचा निष्कर्ष काढायला लावणार नाही:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'Password बंद केल्यानंतर आणि root login काढून टाकल्यानंतर, तुमच्या server विरुद्ध होणारा सततचा brute-force network traffic यशस्वी होऊ शकत नाही. Optional port change समाविष्ट असलेली सविस्तर माहिती VPS वरील SSH hardening येथे आहे.
मिनिट 8: firewall सुरू करा
सर्व inbound traffic साठी default-deny लागू करा आणि त्यानंतर फक्त आवश्यक traffic ला परवानगी द्या. firewall enable करण्यापूर्वी SSH ला परवानगी द्या; अन्यथा तुमचे स्वतःचे connection तुटेल:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableतुम्ही प्रत्यक्षात चालवत असलेल्या प्रत्येक सेवेसाठी allow नियम जोडा. उदाहरणार्थ, website साठी 80/tcp आणि 443/tcp जोडा. यानंतर नवीन SSH session connect होत नसेल, तर काहीही बदलण्यापूर्वी error वाचा, कारण refusal म्हणजे sshd ने उत्तर दिले आहे, तर timeout सहसा firewall ने packet रोखल्याचे दर्शवतो. IPv4 आणि IPv6 दोन्ही समाविष्ट आहेत का ते तपासा. फक्त IPv4 filter करणारा firewall IPv6 बाजू पूर्णपणे उघडी ठेवतो. संपूर्ण मार्गदर्शक VPS वरील Firewalls 101 येथे आहे. हे ufw commands Ubuntu किंवा Debian गृहीत धरतात. Rocky किंवा AlmaLinux system वर default-deny चे उद्दिष्ट तेच असते; मात्र तेथे tool firewalld असते. त्यामुळे त्याऐवजी या पायरीची firewalld आवृत्ती वापरा.
मिनिट 10: Fail2ban ने स्कॅनर्सचा वेग कमी करा
शेवटी, तुमच्या पोर्टवर वारंवार प्रयत्न करणारे पत्ते बाहेर काढण्यासाठी Fail2ban जोडा:
sudo apt install -y fail2banUbuntu 24.04 मध्ये default install पहिल्या बूटपासून SSH चे संरक्षण करते. आधीपासून cryptographic keys आवश्यक असल्यामुळे, हे मुख्य संरक्षण नसून log मधील अनावश्यक नोंदी कमी करणारे आणि वारंवार प्रयत्न करणाऱ्यांना block करणारे अतिरिक्त संरक्षण आहे.
तुमची checklist
ही runbook आहे. प्रत्येक नियंत्रण तपासण्यासाठी खालील generator वापरा आणि सर्व्हरसोबत ठेवता येईल अशी, प्रत्येक पायरीसाठी अचूक command असलेली वैयक्तिक checklist तयार करा:
प्रत्येक नवीन सर्व्हरसाठी ही checklist एकदा पूर्ण करा. त्यानंतर ही प्रक्रिया सहज सवय बनेल. आत्ताची दहा मिनिटे सर्व्हर breach झाल्यानंतर येणारी अत्यंत त्रासदायक दुपार वाचवू शकतात.
आवश्यक मूलभूत व्यवस्था केल्यानंतर Ubuntu वरील स्वयंचलित security updates तुम्ही पुन्हा login न करता सर्व्हर अद्ययावत ठेवतात. त्यानंतर स्थापित केलेल्या प्रत्येक सेवेसाठी स्वतंत्र तपासणी आवश्यक असते आणि कमकुवत बिंदू बदलतात: self-hosted password vault वापरताना सर्व्हरवर plaintext साठवला जात नाही; त्यामुळे Vaultwarden चे वास्तविक धोके admin token आणि backup file हे असतात.
FAQ
नवीन VPS वर मी सर्वप्रथम काय करावे?
apt update && apt upgrade -y वापरून system अपडेट करा. त्यानंतर sudo असलेला सामान्य user तयार करा आणि root म्हणून काम करणे थांबवा. पुढे SSH keys सेट करा, root login आणि password authentication बंद करा, default-deny firewall सक्षम करा आणि Fail2ban install करा. हे काम या क्रमाने केल्यास प्रत्येक पायरी तुम्हाला server मधून lock out न करता सुरक्षितपणे करता येते.
SSH hardening करताना स्वतःला server मधून lock out होण्यापासून कसे वाचवावे?
Passwords किंवा root बंद करण्यापूर्वी SSH key login सेट करा आणि तपासा. Logout करून पुन्हा key वापरून login करा आणि ते कार्यरत असल्याची खात्री करा. त्यानंतरच PasswordAuthentication आणि PermitRootLogin बंद करा. Firewall सक्षम करताना ufw enable चालवण्यापूर्वी port 22 ला परवानगी द्या. तरीही access गमावल्यास, SSH शिवाय पुन्हा login करण्यासाठी provider चे web console वापरता येते.
छोट्या server वरही या सर्व गोष्टी खरोखर आवश्यक आहेत का?
होय, कारण scanners तुमचा server किती छोटा आहे याचा विचार करत नाहीत. ते प्रत्येक public IP वर एकाच पद्धतीने प्रयत्न करतात. संपूर्ण runbook पूर्ण करण्यासाठी साधारण दहा मिनिटे लागतात आणि सहज उपलब्ध असलेले मार्ग बंद होतात: root login नाही, password guessing नाही, तुम्ही जाणीवपूर्वक उघडलेले नसलेले कोणतेही exposure नाही आणि ज्ञात bugs आपोआप patch होतात.
सर्वांत महत्त्वाची एक पायरी कोणती?
root login बंद केलेले key-only SSH. नवीन VPS वरील बहुतेक हल्ले root विरुद्ध केलेले automated password guesses असतात. दोन्ही बंद केल्यास हल्ल्याची ही संपूर्ण श्रेणी अशक्य होते. त्यानंतर firewall आणि Fail2ban उघड्या सेवांवर मर्यादा घालतात आणि उरलेल्या प्रयत्नांचा वेग कमी करतात.
Server प्रत्यक्षात सुरक्षितपणे बंदिस्त आहे याची खात्री कशी करावी?
विश्वास ठेवण्यापूर्वी तीन गोष्टी स्वतः तपासा. sudo ss -tlnp चालवा आणि public address वर फक्त तुम्ही उघडण्याचे ठरवलेले ports listening वर आहेत याची खात्री करा. विसरलेली कोणतीही 0.0.0.0 किंवा [::] service नसावी. sudo ufw status verbose चालवा आणि default incoming policy deny आहे तसेच plain आणि (v6) दोन्ही rules उपस्थित आहेत याची खात्री करा. तसेच पहिली SSH session बंद करण्यापूर्वी नेहमी दुसरी SSH session उघडा. त्यामुळे SSH configuration मधील चुकीमुळे तुम्ही server मधून lock out होणार नाही. या तिन्ही तपासण्या योग्य असल्यास मूलभूत सुरक्षा व्यवस्था लागू झालेली आहे.