SSH শক্তিশালী করা: কী, পোর্ট, বিধিনিষেধ
কীভাবে sshd কনফিগার করবেন: শুধু কী দিয়ে লগইন, ইউজার ও অ্যাড্রেস সীমিত করা, পোর্ট পরিবর্তন, এবং এই প্রক্রিয়ায় অ্যাক্সেস না হারানোর উপায়।
আপডেট: ২৩ আগস্ট, ২০২৬
SSH হলো আপনার প্রতিদিনের ব্যবহৃত মেশিনে ঢোকার একমাত্র দরজা, এবং স্বয়ংক্রিয় ব্রুট-ফোর্স আক্রমণের প্রধান লক্ষ্য। একবার কনফিগার করলে এরপর আর কোনো মনোযোগের প্রয়োজন হয় না।
সব পরিবর্তন আলাদা ফাইলে করুন, /etc/ssh/sshd_config.d/99-hardening.conf — এভাবে প্যাকেজ আপডেট আপনার কাজ ওভাররাইট করে আপনাকে অ্যাক্সেসহীন করে ফেলবে না।
পাসওয়ার্ডের বদলে কী
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
PermitEmptyPasswords no
প্রয়োগ করার আগে নিশ্চিত করুন যে কী আসলে কাজ করে: আলাদা উইন্ডোতে এটি দিয়ে লগ ইন করুন। /hosting/vds/m/<id> প্যানেলের “Access” ট্যাবে যোগ করা কী root ইউজারের কাছে যায়; অন্য ইউজারদের জন্য আপনাকে হাতে ~/.ssh/authorized_keys-এ বসাতে হবে।
আপনার দিকে একটি কী তৈরি করা:
ssh-keygen -t ed25519 -C "work laptop"
ed25519 RSA-এর চেয়ে ছোট ও দ্রুত। আপনার টুল যদি এটি সাপোর্ট না করে, তাহলে কমপক্ষে 4096 বিট দৈর্ঘ্যের rsa ব্যবহার করুন।
কে লগ ইন করতে পারবে
PermitRootLogin prohibit-password
AllowUsers artem deploy
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 2
পাসওয়ার্ড নিষ্ক্রিয় করার পর AllowUsers হলো সবচেয়ে কার্যকর নিয়ম: অন্যের নামে ব্রুট-ফোর্স করা সাথে সাথে বন্ধ হয়ে যায়। root সম্পর্কে আরও — পাসওয়ার্ড দিয়ে root লগইন নিষ্ক্রিয় করুন।
একটি ঠিকানা সীমাবদ্ধতা, যদি আপনি নির্দিষ্ট স্থান থেকে কাজ করেন:
Match Address 203.0.113.5
PermitRootLogin yes
পোর্ট পরিবর্তন
SSH-কে 22 থেকে একটি অ-স্ট্যান্ডার্ড পোর্টে সরানো আপনাকে লক্ষ্যযুক্ত আক্রমণ থেকে রক্ষা করে না, তবে আপনার লগে স্বয়ংক্রিয় স্ক্যানার থেকে প্রায় সব শব্দ সরিয়ে দেয়।
Port 2222
ধাপগুলোর ক্রম কঠোরভাবে এই:
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
ssh -p 2222 artem@<address>
ufw delete allow 22/tcp
ফায়ারওয়াল নিয়ম রিস্টার্টের আগে আসে, এবং পুরোনোটি সরানো হয় শুধুমাত্র নতুন পোর্টে সফল লগইনের পরে। আরও দেখুন পোর্ট।
প্রয়োগ ও যাচাই
sshd -t
sshd -T | grep -Ei "passwordauth|permitroot|allowusers|port"
systemctl restart ssh
sshd -t সিনট্যাক্স পরীক্ষা করে, sshd -T চূড়ান্ত কার্যকর কনফিগারেশন দেখায় — সেটিই, আপনি ফাইলে যা লিখেছেন তা নয়।
কনফিগার করার সময় আপনার বর্তমান সেশন খোলা রাখুন। এটি sshd রিস্টার্টে টিকে থাকবে, এবং এর মাধ্যমে আপনি ব্যর্থ পরিবর্তন রোলব্যাক করতে পারবেন। যদি আপনি নিজেকে লক আউট করেন — প্যানেলের “Console” ট্যাব SSH থেকে স্বাধীনভাবে কাজ করে।
সাধারণ ভুল
| ভুল | পরিণতি | সমাধান |
|---|---|---|
| কী পরীক্ষা না করে পাসওয়ার্ড নিষ্ক্রিয় করা | নেটওয়ার্ক অ্যাক্সেসের সম্পূর্ণ ক্ষতি | প্যানেল কনসোল দিয়ে লগ ইন করুন এবং সেটিং পুনরুদ্ধার করুন |
sshd_config.d-এর লাইনের উপরে মূল ফাইলে সম্পাদনা | সেটিং কার্যকর হয় না | sshd -T দিয়ে পরীক্ষা করুন |
| ufw নিয়ম ছাড়া পোর্ট পরিবর্তন | অ্যাক্সেসের ক্ষতি | আগে নিয়ম, তারপর পোর্ট |
~/.ssh-এ 700-এর চেয়ে প্রশস্ত পারমিশন | কী নীরবে উপেক্ষিত হয় | chmod 700 ~/.ssh, chmod 600 authorized_keys |
নিজের নাম ছাড়া AllowUsers | আপনি নিজেকে লক আউট করেন | প্যানেল কনসোল, ফাইল সম্পাদনা করুন |
sshd_config-এ, একটি প্যারামিটারের প্রথম উপস্থিতি জিতে যায়, এবংsshd_config.d-এর ফাইলগুলো শুরুতে অন্তর্ভুক্ত হয়। তাই ফাইল পড়ার বদলেsshd -Tদিয়ে ফলাফল যাচাই করুন।
fail2ban বাকি ব্রুট-ফোর্স শব্দ সরিয়ে দেবে।