‘ভাই, সাইটে ঢুকলেই জুয়ার সাইটে রিডাইরেক্ট করে দিচ্ছে, কিন্তু আমি ঢুকলে ঠিকই দেখায়’ — বছরে এই মেসেজটা আমরা ডজনখানেক পাই। ব্যাপারটা রহস্যময় নয়, বরং একেবারে ক্লাসিক: ম্যালওয়্যারটা ক্লোকিং করছে। লগ-ইন করা অ্যাডমিন বা রিপিট ভিজিটরকে আসল সাইট দেখাচ্ছে, আর সার্চ থেকে আসা নতুন ভিজিটর ও গুগলবটকে দেখাচ্ছে স্প্যাম। মালিক টের পান সবার শেষে — সাধারণত যখন গুগল ‘This site may be hacked’ লেবেল লাগিয়ে দেয়।
এই লেখাটা তাই দুই ভাগে সাজানো — কীভাবে ঢোকা বন্ধ করবেন, আর ঢুকে গেলে কীভাবে ধাপে ধাপে বের করবেন এবং প্রমাণ করবেন যে সত্যিই বের হয়েছে।
ম্যালওয়্যার কোন দরজা দিয়ে ঢোকে (বাংলাদেশের বাস্তবতা)
আমাদের ক্লিনআপ কেসগুলোতে ঘুরেফিরে একই কয়েকটা উৎস আসে। সৎভাবে বললে — এগুলোর প্রায় সবগুলোই এড়ানো যেত।
- নাল্ড থিম/প্লাগইন। ফেসবুক গ্রুপ থেকে নামানো ‘ফ্রি প্রিমিয়াম’ থিম। ৳৫,৯০০ টাকার লাইসেন্স বাঁচাতে গিয়ে এমন কোড বসানো হয় যাতে ইচ্ছাকৃতভাবেই ব্যাকডোর ঢোকানো থাকে। এটাই এক নম্বর কারণ, তুলনা ছাড়া।
- আপডেট না করা প্লাগইন। পরিচিত ভালনারেবিলিটির এক্সপ্লয়েট পাবলিক হওয়ার ৭২ ঘণ্টার মধ্যেই অটোমেটেড বট স্ক্যান শুরু করে দেয়।
- শেয়ার্ড হোস্টিংয়ে ক্রস-সাইট ইনফেকশন। একই cPanel অ্যাকাউন্টের নিচে ছয়টা সাইট — একটা সংক্রমিত হলে বাকিগুলোতেও ফাইল লিখে দেয়।
- অফিসের পিসি। ক্র্যাক করা Windows অ্যাক্টিভেটর বা ‘ফ্রি’ সফটওয়্যারের সাথে আসা ইনফো-স্টিলার FileZilla/WinSCP-তে সেভ করা FTP পাসওয়ার্ড চুরি করে নেয়, তারপর সরাসরি সার্ভারে ফাইল আপলোড করে।
- পেনড্রাইভ। বাংলাদেশে এখনো শর্টকাট ভাইরাস/অটোরান ওয়ার্ম দিব্যি বেঁচে আছে — কম্পিউটারের দোকান থেকে ফাইল কপি করে আনা মানেই ঝুঁকি।
মনে রাখবেন: অ্যান্টিভাইরাস আপনার ল্যাপটপ রক্ষা করে, ওয়েবসাইট নয়। সার্ভারে বসানো PHP ওয়েবশেল Windows Defender কোনোদিনই দেখতে পাবে না, কারণ সেটা আপনার কম্পিউটারেই নেই।
স্তর ১: এন্ডপয়েন্ট (আপনার আর টিমের কম্পিউটার)
সবচেয়ে অবহেলিত অথচ সবচেয়ে সস্তা স্তর। ৳০ খরচে যা করবেন: জেনুইন Windows-এ Defender চালু রাখুন (থার্ড-পার্টি ফ্রি অ্যান্টিভাইরাস দরকার নেই), Controlled Folder Access অন করুন যাতে র্যানসমওয়্যার আপনার Documents ফোল্ডার এনক্রিপ্ট করতে না পারে, আর ফাইল এক্সটেনশন দেখানো চালু করুন — কারণ invoice.pdf.exe ফাইলটা এক্সটেনশন লুকানো থাকলে নিরীহ PDF-ই মনে হয়।
একটু এগিয়ে যেতে চাইলে PowerShell-এ Attack Surface Reduction রুল চালু করুন — যেমন Office ডকুমেন্টকে চাইল্ড প্রসেস চালাতে না দেওয়া, যেটা ম্যাক্রো-ভিত্তিক আক্রমণের সবচেয়ে সাধারণ ধাপ। আর FileZilla-তে পাসওয়ার্ড সেভ করা বন্ধ করুন; ওগুলো প্লেইনটেক্সটের কাছাকাছি ফরম্যাটে বসে থাকে, আর স্টিলার ম্যালওয়্যার সবার আগে ওই ফাইলটাই খোঁজে।
স্তর ২: সার্ভার হার্ডেনিং — ঢোকার পরেও যেন কাজে না লাগে
ধরে নিন একদিন কেউ একটা ফাইল আপলোড করতে পারবেই। তখন প্রশ্ন হলো, সেই ফাইলটা এক্সিকিউট হবে কি না। WordPress সাইটে এই চারটা কনফিগ প্রায় সব ওয়েবশেল অকেজো করে দেয়:
wp-content/uploadsফোল্ডারে PHP এক্সিকিউশন বন্ধ করুন। Apache হলে ওই ফোল্ডারে একটা.htaccessরাখুন যাতে<Files *.php> Require all denied </Files>থাকে। মিডিয়া লাইব্রেরিতে PHP চলার কোনো বৈধ কারণ নেই।wp-config.php-তেdefine('DISALLOW_FILE_EDIT', true);— অ্যাডমিন প্যানেল থেকে থিম/প্লাগইন এডিটর বন্ধ। অ্যাটাকার অ্যাডমিন পাসওয়ার্ড পেলেও এক ক্লিকে কোড বসাতে পারবে না।- ফাইল পারমিশন: ফোল্ডার ৭৫৫, ফাইল ৬৪৪, আর
wp-config.php৬০০। কোথাও ৭৭৭ দেখলে সেটা ঠিক করুন — ‘প্লাগইন কাজ করছিল না তাই ৭৭৭ দিয়েছি’ এই একটা সিদ্ধান্তেই বহু সাইট গেছে। - XML-RPC দরকার না হলে বন্ধ করুন, আর wp-admin/wp-login-এ রেট লিমিট বসান (Cloudflare-এর ফ্রি প্ল্যানেই রুল দেওয়া যায়)।
স্তর ৩: সন্দেহ হলে ফরেনসিক — ব্যাকডোর কীভাবে খুঁজবেন
স্ক্যানার প্লাগইনে ভরসা রেখে বসে থাকবেন না; SSH-এ ঢুকে নিজে দেখুন। সবচেয়ে দ্রুত সূত্র হলো টাইমস্ট্যাম্প — অ্যাটাকার যেদিন ঢুকেছে সেদিন কিছু ফাইল লেখা হয়েছেই।
# গত ৭ দিনে বদলানো সব PHP ফাইল
find . -name '*.php' -mtime -7 -ls
# uploads ফোল্ডারে PHP ফাইল — এখানে একটাও থাকার কথা নয়
find wp-content/uploads -name '*.php'
# ক্লাসিক অবফাসকেশন প্যাটার্ন
grep -rEl 'eval\(|base64_decode|gzinflate|str_rot13|assert\(' wp-content/ | head -50তারপর কোরের সাথে মিলিয়ে দেখুন। WP-CLI থাকলে wp core verify-checksums আর wp plugin verify-checksums --all চালান — এটা অফিসিয়াল রিপোজিটরির হ্যাশের সাথে আপনার ফাইল মেলায় এবং বদলে যাওয়া ফাইল ধরিয়ে দেয়। প্রিমিয়াম থিমের ক্ষেত্রে ভেন্ডরের ফ্রেশ জিপ নামিয়ে diff -r করুন।
ডেটাবেসও দেখুন — ব্যাকডোর সবসময় ফাইলে থাকে না। wp_users টেবিলে অচেনা অ্যাডমিন আছে কি না, wp_options-এর active_plugins-এ অদ্ভুত এন্ট্রি ঢুকেছে কি না, আর wp_posts-এ ইনজেক্ট করা লিংক আছে কি না। সার্ভারে crontab -l চালিয়ে দেখুন কোনো অজানা cron জব প্রতি ঘণ্টায় ফাইল ফিরিয়ে আনছে কি না — রি-ইনফেকশনের এটাই সবচেয়ে কমন কারণ।
ক্লোকিং ধরার সহজ ট্রিক: গুগলবট সেজে পেজটা টানুন। curl -A 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' https://yoursite.com | grep -i 'casino\|bet\|loan' — ব্রাউজারে যা দেখছেন না, এখানে সেটা বেরিয়ে আসবে।
স্তর ৪: ক্লিন করার সঠিক ধাপ (ক্রমটা গুরুত্বপূর্ণ)
শুধু সন্দেহজনক ফাইল ডিলিট করে থেমে গেলে ৭২ ঘণ্টার মধ্যে আবার ফিরে আসবে। কাজটা এই ক্রমে করুন: প্রথমে সাইট মেইনটেন্যান্স মোডে দিন এবং বর্তমান অবস্থার একটা ব্যাকআপ রাখুন (এভিডেন্স হিসেবে, রিস্টোরের জন্য নয়)। তারপর WordPress কোর, সব প্লাগইন ও থিম ফ্রেশ কপি দিয়ে রিপ্লেস করুন — প্যাচ নয়, পুরো রিপ্লেস। নাল্ড কিছু থাকলে সেটা ডিলিট, লাইসেন্স কিনুন বা বিকল্প খুঁজুন।
এরপর ক্রেডেনশিয়াল রোটেশন — এই ধাপটা বাদ পড়লে বাকি সব বৃথা। cPanel পাসওয়ার্ড, সব FTP/SSH অ্যাকাউন্ট, ডেটাবেস ইউজারের পাসওয়ার্ড, প্রতিটা WP অ্যাডমিন অ্যাকাউন্ট, আর wp-config.php-এর সল্ট কি (নতুন করে জেনারেট করলে সব সেশন লগআউট হয়ে যায় — এটাই দরকার)। অচেনা ইউজার অ্যাকাউন্ট ডিলিট করুন।
ব্যাকআপ থেকে রিস্টোর করা সবচেয়ে ভুল রিফ্লেক্স। বেশিরভাগ ব্যাকডোর সপ্তাহখানেক চুপচাপ বসে থাকে, তাই আপনার ‘আগের ভালো ব্যাকআপ’-এও ব্যাকডোরটা আছে। রিস্টোর করলে আপনি ম্যালওয়্যারটাই ফেরত আনছেন, শুধু স্প্যামটা সাময়িকভাবে হাওয়া হয়ে গেছে।
স্তর ৫: ক্লিন হয়েছে — প্রমাণ করুন
ক্লিনআপের পর যাচাইয়ের চেকলিস্ট: (১) সার্ভারে ClamAV দিয়ে clamscan -r --infected . চালান; (২) Googlebot ইউজার-এজেন্ট দিয়ে ৫-১০টা পেজ curl করে স্প্যাম কি-ওয়ার্ড খুঁজুন; (৩) Google Search Console-এর Security Issues সেকশনে গিয়ে রিভিউ রিকোয়েস্ট দিন এবং ‘Removals’ নয়, ইনডেক্সে থাকা স্প্যাম URL-গুলো URL Inspection দিয়ে রি-ক্রল দিন; (৪) সাত দিন পর আবার find . -name '*.php' -mtime -7 চালান — নতুন কোনো PHP ফাইল আসছে কি না দেখতে। কিছু না এলে বুঝবেন দরজা সত্যিই বন্ধ হয়েছে।
অ্যাডভান্সড: এরপরের ধাপ
একবার পুড়লে দ্বিতীয়বার যেন না পোড়ে সেই ব্যবস্থা করুন। ফাইল ইন্টিগ্রিটি মনিটরিং বসান — একটা ক্রন জব যা প্রতিদিন সব ফাইলের হ্যাশ নিয়ে আগের দিনের সাথে মেলায় এবং পার্থক্য পেলে ইমেইল করে; VPS-এ এটা ১৫ লাইনের শেল স্ক্রিপ্ট। ব্যাকআপে ৩-২-১ নিয়ম মানুন (৩ কপি, ২ মিডিয়া, ১ অফসাইট) এবং অফসাইট কপিটা এমন জায়গায় রাখুন যেখানে সার্ভারের ক্রেডেনশিয়াল দিয়ে ডিলিট করা যায় না। VPS হলে fail2ban দিয়ে বারবার ব্যর্থ লগইন ব্লক করুন, আর সব অ্যাডমিন অ্যাকাউন্টে 2FA বাধ্যতামূলক করুন।
সাধারণ প্রশ্ন
Wordfence বা Sucuri-র ফ্রি ভার্সন কি যথেষ্ট? ম্যালিশাস প্যাটার্ন ধরার জন্য ভালো সহায়ক, কিন্তু এগুলো সিগনেচারভিত্তিক — নতুন বা কাস্টম ওয়েবশেল প্রায়ই মিস করে। এদেরকে স্মোক ডিটেক্টর ভাবুন, দমকল বাহিনী নয়। আসল সুরক্ষা আসে হার্ডেনিং আর আপডেট থেকে।
সাইট ক্লিন করলাম, গুগলের ওয়ার্নিং সরছে না কেন? Search Console → Security Issues থেকে ম্যানুয়ালি রিভিউ রিকোয়েস্ট দিতে হয়। রিভিউ-তে সাধারণত কয়েক দিন লাগে, আর সাইট আবার সংক্রমিত পাওয়া গেলে রিকোয়েস্ট রিজেক্ট হয় — তাই আগে নিশ্চিত হোন, তারপর রিকোয়েস্ট দিন।
হোস্টিং কোম্পানি বলছে সমস্যা আমার সাইটেই, ওদের সার্ভারে নয় — এটা কি ঠিক? সাধারণত হ্যাঁ। শেয়ার্ড হোস্টিংয়ে সার্ভার-লেভেল আপডেট ওদের দায়িত্ব, কিন্তু আপনার অ্যাপ্লিকেশন (থিম, প্লাগইন, পাসওয়ার্ড) আপনার দায়িত্ব। তবে একই অ্যাকাউন্টে একাধিক সাইট থাকলে ক্রস-ইনফেকশনের কথা ওদের জিজ্ঞেস করুন।
নাল্ড থিমের ব্যাকডোর কি শুধু ডিলিট করলেই যায়? না। বেশিরভাগ নাল্ড থিম ইনস্টলের সময়ই কোরের অন্য জায়গায় বা ডেটাবেসে অতিরিক্ত কোড বসিয়ে রাখে। থিম ডিলিটের পরও উপরের ফরেনসিক ধাপগুলো পুরোটা চালাতে হবে।
ম্যালওয়্যার সুরক্ষা একটা প্লাগইন নয়, একটা অভ্যাস — আপডেট, লাইসেন্সড কোড, শক্ত পারমিশন আর নিয়মিত যাচাই। স্ট্যাক অ্যালিক্স-এ আমরা সাইট ক্লিনআপ, হার্ডেনিং আর মনিটরিং সেটআপ করি, এবং কেন হ্যাক হলো সেটার একটা সৎ রিপোর্টও দিই — কারণ কারণটা না জানলে একই ঘটনা আবার ঘটে। প্রয়োজন হলে নির্দ্বিধায় নক দিন।

