নতুন VPS-এর জন্য Linux server hardening checklist
ইন্টারনেটে আসা নতুন server কয়েক মিনিটেই খোঁচানো হয়। এই checklist সবচেয়ে বেশি ঝুঁকি আগে সরানোর ধাপ দেখায়।

Public IP-যুক্ত নতুন server-কে bot প্রায় সঙ্গে সঙ্গে scan করে। Hardening মানে আক্রমণকারী যা ছুঁতে পারে তা কমানো এবং কিছু ভুল হলে ক্ষতি সীমিত রাখা। ধাপগুলো ক্রমে করুন এবং প্রতিটি বদল দ্বিতীয় session থেকে পরীক্ষা করুন যাতে নিজেকে লক আউট না করেন।
১. সবকিছু update করুন
sudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades
স্বয়ংক্রিয় security update চালু করুন। বাস্তবের বেশিরভাগ compromise পুরোনো, জানা ত্রুটি কাজে লাগায়। Kernel update হলে reboot করুন, বা থাকলে live-patch service ব্যবহার করুন।
২. User ও sudo
sudo-সহ একটি সাধারণ user বানান এবং root হিসেবে কাজ বন্ধ করুন।- প্রত্যেক মানুষকে নিজের অ্যাকাউন্ট দিন। login ভাগ করবেন না।
- যে অ্যাকাউন্ট লাগে না তা সরান বা lock করুন।
sudoসাবধানে ব্যবহার করুন, সম্ভব হলে শুধু দরকারি কমান্ডের অনুমতি দিন।
৩. SSH নিরাপদ করুন
Key ব্যবহার করুন, password ও root login বন্ধ করুন, user সীমিত করুন এবং পরীক্ষার সময় দ্বিতীয় session খোলা রাখুন। বিস্তারিত এই সিরিজের SSH hardening লেখায়।
৪. Firewall
শুধু যা দরকার তা অনুমতি দিন, বাকিটা বন্ধ।
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
চালু করার আগে SSH অনুমতি দিন। ss -tulpn দিয়ে কী শুনছে দেখুন। Database ও admin টুল localhost বা private network-এ শুনবে, কখনো public interface-এ নয়। দ্বিতীয় স্তর হিসেবে cloud provider-এর firewall (security group)-ও ব্যবহার করুন।
৫. কম জিনিস চালান
চলমান প্রতিটি service-ই আক্রমণের পথ।
systemctl list-units --type=service --state=runningদিয়ে service দেখুন।- যা ব্যবহার করেন না তা সরান বা disable করুন।
- শুধু দরকারি package install করুন।
- প্রতিটি অ্যাপ নিজের আলাদা non-root user-এ systemd unit দিয়ে চালান, যেমন এই সিরিজে আগে বলা হয়েছে।
৬. ফাইল ও secret সুরক্ষা
- সঠিক permission দিন: secret-সহ config
600বা640, কখনো সবার লিখনযোগ্য ফাইল নয়। - Secret রাখুন শুধু service user-এর পড়ার যোগ্য environment ফাইলে, Git বা command history-তে নয়।
- মাঝে মাঝে অদ্ভুত setuid ফাইল ও সবার লিখনযোগ্য directory খুঁজে দেখুন।
৭. Log ও শনাক্তকরণ
- Log (
journalctl,/var/log) রাখুন এবং log rotation দিয়ে নিশ্চিত করুন তারা disk ভরে না। - বারবার login চেষ্টা ধীর করতে fail2ban বসান।
- গুরুত্বপূর্ণ log ও alert server-এর বাইরে পাঠান, কারণ আক্রমণকারী স্থানীয় log মুছতে পারে।
- গুরুত্বপূর্ণ server-এ AIDE বা auditd rule-এর মতো file integrity বা intrusion detection টুল ভাবুন।
৮. Backup
নিয়মিত, পরীক্ষিত, বাইরের backup রাখুন এবং encrypt করুন। Hardening সমস্যার সম্ভাবনা কমায়; সমস্যা ঘটলে backup-ই বাঁচায়। Backup কৌশল লেখাটি দেখুন।
৯. অতিরিক্ত স্তর (দরকার মতো)
- পরিচালনার জন্য two-factor authentication বা VPN/bastion।
- AppArmor-এর মতো mandatory access control চালু রাখুন (Ubuntu-তে ডিফল্ট)।
- CIS benchmark-এর মতো বিশ্বস্ত নির্দেশিকা অনুযায়ী kernel ও network সেটিং (
sysctl)। - Public সাইটের সামনে web application firewall বা CDN, origin কেবল CDN-কে গ্রহণ করার মতো বাঁধা।
১০. এটিকে নিয়মিত কাজ বানান
- সাপ্তাহিক: update, ব্যর্থ login ও disk space দেখুন।
- মাসিক: user, SSH key, খোলা port ও backup পর্যালোচনা করুন এবং restore পরীক্ষা করুন।
- সেটআপের ধাপ লিখে রাখুন (বা configuration management বা script ব্যবহার করুন), যাতে আবার বানানো server প্রথমটির মতোই নিরাপদ হয়।
দ্রুত checklist
- Update করা, স্বয়ংক্রিয় security update চালু।
- sudo-সহ non-root user, root login বন্ধ।
- শুধু SSH key।
- Firewall চালু, শুধু দরকারি port খোলা।
- অব্যবহৃত service সরানো।
- Secret সুরক্ষিত, সঠিক permission।
- Log রাখা, fail2ban চালু, alert সেট।
- পরীক্ষিত offsite backup।
মূল কথা: দ্রুত patch করুন, যা প্রকাশিত তা ছোট করুন, key ও least privilege ব্যবহার করুন, log দেখুন এবং পরীক্ষিত backup রাখুন। উন্নত টুলের আগে মৌলিক কাজগুলো ভালোভাবে ও নিয়মিত করুন।
Linux ও DevOps সিরিজ, পর্ব ২ (delivery ও পরিচালনা): 5 নম্বর (মোট 5)। আগের লেখা: Backup কৌশল: ৩-২-১ নিয়ম ও restore পরীক্ষা.


