Linux VPS-এ SSH কীভাবে সুরক্ষিত করবেন
একটি public VPS অনলাইনে আসার কয়েক মিনিটের মধ্যেই স্বয়ংক্রিয় login চেষ্টার মুখে পড়ে। নিচের ধাপগুলো SSH-কে আক্রমণের জন্য অনেক কঠিন করে তোলে। এগুলো Ubuntu বা Debian-এর জন্য লেখা; যদি এখনো কোনো server তৈরি না করে থাকেন, তাহলে একটি Linux VPS ভাড়া নিন এবং একটি পরিষ্কার image থেকে শুরু করুন। দ্বিতীয় window থেকে নতুন সেটিংস পরীক্ষা না করা পর্যন্ত আপনার বর্তমান SSH session খোলা রাখুন।
1. sudo সহ একটি সাধারণ ব্যবহারকারী তৈরি করুন
adduser deploy
usermod -aG sudo deploy2. Password-এর বদলে SSH key ব্যবহার করুন
নিজের computer-এ:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPPassword বন্ধ করার আগে একবার key দিয়ে login করে নিশ্চিত হয়ে নিন যে এটি কাজ করছে।
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 খুলে আবার login করুন। এরপরই পুরোনো session বন্ধ করুন।
4. Firewall চালু করুন
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseশুধু প্রয়োজনীয় port খুলুন, যেমন web server-এর জন্য 80 ও 443। Cloud console-এর firewall rule দিয়ে আপনি চাইলে SSH-কে শুধু নিজের IP address-এ সীমাবদ্ধ করতে পারেন।
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দিয়ে login-এর ইতিহাস দেখুন।- Server কনফিগার হওয়ার পর একটি snapshot নিন, যাতে প্রয়োজনে একটি পরিষ্কার baseline-এ ফিরে যেতে পারেন।
যদি নিজেকে server থেকে বের হয়ে থাকতে দেখেন, তাহলে configuration ঠিক করতে cloud panel-এর browser console ব্যবহার করে login করুন। পরের স্তরের প্রতিরক্ষা নিয়ে জানতে আমাদের DDoS সুরক্ষা গাইড দেখুন।
সাধারণ জিজ্ঞাসা
Root login বন্ধ করা কি নিরাপদ?
হ্যাঁ, তবে আগে একটি sudo ব্যবহারকারী তৈরি করে তার key কাজ করছে কি না তা পরীক্ষা করে নিতে হবে। এরপরও sudo দিয়ে প্রশাসনিক command চালানো যাবে।
শুধু key ব্যবহার করলে কি Fail2ban লাগবে?
এটি ঐচ্ছিক। Password login বন্ধ থাকলে brute force সফল হতে পারে না, তবে Fail2ban log-এর ভিড় ও load কমায়।
SSH key হারিয়ে গেলে কী করব?
Cloud panel-এর console ব্যবহার করে login করুন, একটি নতুন public key ~/.ssh/authorized_keys-এ যোগ করুন এবং পুরোনোটি মুছে ফেলুন।