Hosting & cPanel · 3 min read

cPanel Server Hardening: আমার ব্যক্তিগত চেকলিস্ট

SSH keys, two-factor, CSF rules, fail2ban, AutoSSL with HSTS — প্রতিটা cPanel server-এ আমি যে hardening order follow করি, এবার বাংলায়।

share

নতুন cPanel server — migration হোক বা fresh build — checklist না চালিয়ে আমি production-এ হাত দিই না। এটা তাত্ত্বিক list না: এটাই সেই order যেটা আমি প্রতিটা server take over করার সময় follow করি, hosting support আর DevOps — দুই জায়গার কাজ থেকে পাওয়া অভিজ্ঞতা দিয়ে তৈরি।

১. প্রথম ৫ মিনিট: triage#

কিছু বদলানোর আগে server-টাকে চিনে নিন। এই command গুলো baseline snapshot দেয়:

bash
uptime && free -h && df -h
cat /etc/*release
rpm -qa | wc -l   # অথবা: dpkg -l | wc -l

যেটা দেখি: load average (core count-এর চেয়ে বেশি কিনা), swap usage, আর /var, /home, /backup partition-এর free space। এই baseline পরে problem diagnose করতে কাজে লাগে।

২. SSH lock down#

SSH মানে server-এর সদর দরজা — hardening শুরু হয় এখান থেকে:

  • Key-based auth — password login সম্পূর্ণ off
  • root login disable — প্রতিটা মানুষের নিজের account + sudo
  • config বদলানোর সময় সবসময় একটা অতিরিক্ত session খোলা রাখি, যাতে ভুল হলে lock out না হই
bash
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sshd -t && sudo systemctl restart sshd

sshd -t — restart-এর আগে config validate করা আমার আজীবনের habit।

৩. সব privileged account-এ two-factor#

SSH key থাকলেই শেষ না — WHM/cPanel-এর প্রতিটা privileged account-এ two-factor authentication enable করি। cPanel-এর built-in 2FA (TOTP) যথেষ্ট: যেকোনো authenticator app (Google Authenticator, Aegis) দিয়ে setup হয়ে যায়। নিয়ম সহজ — যে account-এ root privilege আছে, সেটা কখনো password-only-তে থাকবে না।

৪. Firewall: CSF দিয়ে default deny#

cPanel-এর সাথে CSF (ConfigServer Firewall) সবচেয়ে ভালো বসে। Policy একটাই — default deny, অর্থাৎ যে port গুলো লাগে শুধু সেগুলোই open:

  • 22 (SSH — নিজের IP range-এ limit করাটা আরও ভালো)
  • 80 / 443 (web)
  • বাকি cPanel service port — শুধু নিজের office IP-র জন্য

TESTING = 1 mode দিয়ে শুরু করি, কয়েকদিন log দেখে তারপর lock করি — যাতে ভুলে নিজেকেই lock out না করে ফেলি।

৫. fail2ban: বাকি সবকিছুর জন্য#

Firewall-এর পরে fail2ban হলো brute-force-এর বিরুদ্ধে দ্বিতীয় line of defense। SSH, WHM, cPanel, mail — সব jail enable করি। Repeat offender-দের IP অটোমেটিক ban হয়ে যায়, আমাকে মাঝরাতে জেগে উঠতে হয় না।

৬. AutoSSL দিয়ে TLS আর HSTS#

  • AutoSSL (Let's Encrypt) — সব domain/subdomain-এ certificate auto-renew
  • HSTS header — browser-কে বলে দেয় “এই site-এ সবসময় HTTPS”
  • HTTP → HTTPS 301 redirect পুরো site জুড়ে

HSTS enable করার আগে একবার ভেবে নিন — max-age বাড়ানো সহজ, কিন্তু ভুল হলে site ভাঙা ঠেকানো কঠিন। আমি ৩০ দিন দিয়ে শুরু করে ধীরে ধীরে ১ বছর পর্যন্ত যাই।

৭. Backup: যে habit আসল কাজে দেয়#

Hardening-এর পরেও যেদিন backup নেই, সেদিনটা ঝুঁকির দিন। JetBackup 5 দিয়ে daily incremental backup, আর মাঝে মাঝে restore test — কারণ backup ততক্ষণই ভালো, যতক্ষণ না সেটা restore করা গেছে। 3-2-1 rule মাথায় রাখি: ৩টা copy, ২ রকম media, ১টা offsite।

শেষ কথা#

এই checklist-এর order-টা ইচ্ছা করেই এমন: আগে access control, তারপর network, তারপর transport, সবার শেষে recovery। কোনো step বাদ পড়লে পুরো chain-টাই দুর্বল থেকে যায়।

আপনার server-এ আর কী add করেন? জানাতে পারেন — checklist তো আরও ভালো হতে পারে।

written by

Mohammad Sameur Rahman

Linux System Administration · Hosting Infrastructure · AWS Cloud · DevOps

keep reading

Related posts