SSH hardening-এর গোড়া: key, root login বন্ধ ও fail2ban
SSH আপনার server-এর দরজা, আর bot সারাদিন সেখানে কড়া নাড়ে। কয়েকটি সেটিং ঢোকা অনেক কঠিন করে।

SSH দিয়ে আপনি দূর থেকে server-এ login করেন। Public IP-যুক্ত যেকোনো server স্বয়ংক্রিয় login চেষ্টা ক্রমাগত পায়, তাই server বানানোর পর SSH নিরাপদ করা প্রথম কাজগুলোর একটি।
১. Password নয়, SSH key ব্যবহার করুন
Key pair-এ একটি private key (আপনার কম্পিউটারে থাকে, শেয়ার হয় না) ও একটি public key (server-এ বসানো) থাকে।
ssh-keygen -t ed25519 -C "you@example.com" # key pair বানান; passphrase দিন
ssh-copy-id user@server # public key server-এ বসান
Private key ফাইল সুরক্ষিত রাখুন (chmod 600) এবং passphrase দিন, যাতে চুরি যাওয়া ল্যাপটপ server দিয়ে না দেয়।
২. SSH server-এর সেটিং বদলান
/etc/ssh/sshd_config (বা /etc/ssh/sshd_config.d/-এর একটি ফাইল) সম্পাদনা করুন। কাজের সেটিং:
PasswordAuthentication no # শুধু key
PermitRootLogin no # সাধারণ user হিসেবে login, তারপর sudo
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
AllowUsers deploy admin # শুধু এই user-রা login করতে পারবে
X11Forwarding no
ফাইল যাচাই করে reload করুন:
sudo sshd -t # কনফিগারেশন পরীক্ষা
sudo systemctl reload ssh # কিছু সিস্টেমে service-এর নাম "sshd"
৩. নিজেকে লক আউট করবেন না
- পরীক্ষার সময় বর্তমান session খোলা রাখুন।
- প্রথমটি বন্ধ করার আগে দ্বিতীয় terminal খুলে key দিয়ে login করা যায় কি না নিশ্চিত করুন।
- Password ও root login বন্ধ করার আগে আপনার public key বসানো এবং user-এর
sudoঅধিকার আছে নিশ্চিত করুন। - Cloud provider-এ থাকলে উদ্ধারের জন্য web console কীভাবে পাবেন জানুন।
৪. Firewall ব্যবহার করুন
শুধু দরকারি port অনুমতি দিন। যেমন ufw দিয়ে:
sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
Firewall চালু করার আগে SSH অনুমতি দিন। স্থির IP থাকলে SSH তাতে সীমিত করুন। অনেক cloud firewall (security group)-ও এটি করতে পারে।
৫. fail2ban দিয়ে আক্রমণকারীকে ধীর করুন
fail2ban log পড়ে এবং বহুবার login ব্যর্থ করা IP অস্থায়ীভাবে বন্ধ করে।
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
শুধু key থাকলে password আন্দাজ কাজ করতে পারে না, কিন্তু fail2ban noise ও load কমায়।
৬. অন্যান্য ভালো অভ্যাস
- সিস্টেম হালনাগাদ রাখুন (security update, সম্ভব হলে স্বয়ংক্রিয়)।
- প্রতি মানুষ ও device-এর আলাদা key রাখুন, চলে যাওয়া মানুষের key সরান (
~/.ssh/authorized_keys)। - SSH-এ two-factor বা VPN বা bastion host-এর মধ্য দিয়ে access ভাবুন।
- 22 থেকে port বদল log-এর noise কমায় কিন্তু আসল নিরাপত্তা নয়। Key ও firewall-ই আসল।
lastওjournalctl -u sshদিয়ে login কার্যকলাপ দেখুন।- Private key কখনো শেয়ার করবেন না, chat বা repository-তে পেস্ট করবেন না।
দ্রুত checklist
- শুধু key, password বন্ধ।
- Root login বন্ধ, sudo-সহ নামযুক্ত user।
AllowUsersসেট।- Firewall চালু, শুধু দরকারি port খোলা।
- fail2ban চলছে।
- Update চালু, পুরোনো key সরানো।
- দ্বিতীয় terminal থেকে পরীক্ষিত।
মূল কথা: password-এর বদলে key, root login বন্ধ, firewall ও fail2ban SSH-এর বেশিরভাগ আক্রমণ ঠেকায়, আর দ্বিতীয় terminal-এ পরীক্ষা নিজেকে লক আউট হওয়া থেকে বাঁচায়।
Linux ও DevOps সিরিজ, পর্ব ১ (server ও container): 5 নম্বর (মোট 5)। আগের লেখা: Docker-এর গোড়া: image, container ও প্রথম Dockerfile.


