নুসরাত বগুড়া থেকে অনলাইনে শাড়ি আর থ্রি-পিস বিক্রি করেন। WooCommerce-এর সাইট, সারা দেশে কুরিয়ারে ডেলিভারি, মাসে গড়ে ১৩৮টা অর্ডার। ২০২৫-এর মার্চে এক সকালে এক নিয়মিত ক্রেতা ফোন করে বললেন, “আপা, আপনার সাইটটা মোবাইলে খুললেই কী একটা জুয়ার সাইটে নিয়ে যাচ্ছে।” নুসরাত সঙ্গে সঙ্গে নিজের ল্যাপটপে সাইট খুললেন। সব ঠিকঠাক। ফোনেও খুললেন — সেটাও ঠিক। তিনি ধরে নিলেন ক্রেতার ফোনে ভাইরাস।
ধারণাটা ভুল ছিল, আর এই ভুলটাই তাঁর সবচেয়ে দামি সপ্তাহটা কেড়ে নিল।
যে জিনিসটা নিজের চোখে দেখা যায় না
ম্যালওয়্যারটা বোকা ছিল না। রিডাইরেক্ট চালু হতো শুধু তখনই, যখন তিনটা শর্ত একসঙ্গে মিলত — ভিজিটর মোবাইল থেকে আসছে, গুগল সার্চ থেকে আসছে, এবং সাইটে লগইন করা নেই। মানে মালিক নিজে যতবার সাইট খুলবেন, ততবারই সব স্বাভাবিক দেখবেন। এটা আজকাল প্রায় স্ট্যান্ডার্ড কৌশল; কারণ যত দেরিতে মালিক টের পাবে, তত বেশি দিন সাইটটা ব্যবহার করা যাবে।
নয় দিন পর Search Console থেকে মেইল এল — “Deceptive site ahead”। ততক্ষণে ক্রোম আর ফেসবুক দুই জায়গাতেই লাল সতর্কবার্তা বসে গেছে। ফেসবুক থেকে লিংক শেয়ার করলে সেটাও ব্লক।
তিন সপ্তাহে যা হারাল
- অর্গানিক সেশন: মাসে ৪,২০০ থেকে নেমে ৩৮০
- অর্ডার: ১৩৮ থেকে নেমে ২১
- ফেসবুক পেজ থেকে লিংক শেয়ার: সম্পূর্ণ ব্লক, প্রায় তিন সপ্তাহ
- ক্লিনআপে দক্ষ লোককে দিতে হয়েছে ৳১৫,০০০, লেগেছে ১১ দিন
- গুগলের সতর্কবার্তা উঠতে রিকনসিডারেশন রিকোয়েস্টের পর আরও ছয় সপ্তাহ
- আনুমানিক হারানো বিক্রি: ৳২.৪ লাখ
সিকিউরিটি খরচটা বিরক্তিকর মনে হয় ঠিক ততক্ষণ, যতক্ষণ না হ্যাকের বিলটা হাতে আসে। নুসরাতের ক্ষেত্রে অনুপাতটা ছিল প্রায় ১:১৭।
কারণটা ছিল খুব সাধারণ
ফরেনসিক করে যা পাওয়া গেল, সেটা নতুন কিছু নয়। দুই বছর আগে একটা টেলিগ্রাম গ্রুপ থেকে “GPL” বলে একটা প্রিমিয়াম স্লাইডার প্লাগিন ফ্রিতে নামানো হয়েছিল — যার লাইসেন্স আসলে ৳৪,০০০-এর মতো। ওই প্লাগিনের ভেতরেই বসানো ছিল একটা ব্যাকডোর। সেটা দিয়ে wp-content/uploads/2024/09/ ফোল্ডারে একটা নিরীহ নামের PHP ফাইল বসানো হয়, আর তিন মাস আগে wp_support নামে একটা অ্যাডমিন অ্যাকাউন্ট তৈরি করা হয়। সাইটে ঢোকার দরজা তিন মাস ধরে খোলা ছিল; আক্রমণটা শুরু হয় অনেক পরে।
সঙ্গে আরও কয়েকটা জিনিস ছিল, যেগুলো একা একা কিছু না, কিন্তু একসঙ্গে হলে সাইট হ্যাক হওয়া কেবল সময়ের ব্যাপার: WordPress কোর তখনও ৬.১-এ আটকে, ৯টা প্লাগিন আপডেট পেন্ডিং, ইউজারনেম admin, পাসওয়ার্ড দোকানের নাম আর জন্মসাল মিলিয়ে, আর হোস্টিং কোম্পানির “ফ্রি ব্যাকআপ” মানে ছিল একটাই কপি, একই সার্ভারে — যেটা ততদিনে সংক্রমিত হয়ে গেছে।
নুসরাত এখন যে ছয়টা জিনিস চালান
হ্যাকের পর তিনি কোনো দামি এন্টারপ্রাইজ সেটআপ কেনেননি। যা করেছেন, সেটা যেকোনো WordPress মালিক এক সপ্তাহান্তে করে ফেলতে পারেন। WordPress সিকিউরিটি শুরু করার জন্য এর বাইরে বিশেষ কিছু লাগেও না।
১. নাল করা প্লাগিন-থিম, একটাও না। এটাই বাংলাদেশে হ্যাক হওয়ার এক নম্বর কারণ, এবং এটা নিয়ে খুব কম কথা হয়। ৪ হাজার টাকার লাইসেন্স বাঁচাতে গিয়ে ২.৪ লাখ টাকা হারানোর হিসাবটা একবার কষলেই সিদ্ধান্ত নিতে সমস্যা হয় না। যদি বাজেট না থাকে, ফ্রি রিপোজিটরির প্লাগিন ব্যবহার করুন — নাল করা প্রিমিয়াম নয়।
২. যা ব্যবহার হয় না, তা মুছে ফেলুন। নিষ্ক্রিয় প্লাগিনও সার্ভারে ফাইল হিসেবে থেকে যায় এবং তার দুর্বলতা দিয়েই আক্রমণ হতে পারে। নুসরাত ৩৪টা প্লাগিন থেকে নামিয়ে এনেছেন ১৯টায়। থিমের ক্ষেত্রেও একই — একটা প্যারেন্ট, একটা চাইল্ড, বাকিগুলো ডিলিট।
৩. আপডেটের একটা নিয়ম বেঁধে নিন। কোরের মাইনর আর সিকিউরিটি আপডেট অটো-অন। প্লাগিনের সিকিউরিটি আপডেট এলে ৪৮ ঘণ্টার মধ্যে করা। বড় আপডেট আগে স্টেজিং সাবডোমেইনে পরীক্ষা করে তারপর লাইভে। মাসে একবার প্লাগিন তালিকা চোখ বুলিয়ে দেখা, কোনটার ডেভেলপার দুই বছর ধরে চুপ।
৪. লগইনের দরজা শক্ত করুন। admin ইউজারনেম বাদ, প্রতিটা অ্যাডমিনের জন্য টু-ফ্যাক্টর (Wordfence Login Security বা WP 2FA — দুটোই ফ্রি), Bitwarden-এ ২০ অক্ষরের ইউনিক পাসওয়ার্ড, আর লগইন অ্যাটেম্পট লিমিট। যাঁদের সত্যিই অ্যাডমিন হওয়ার দরকার নেই — যেমন কনটেন্ট লেখেন যিনি — তাঁদের Editor রোল দিন।
৫. ব্যাকআপ সার্ভারের বাইরে রাখুন, আর রিস্টোর করে দেখুন। UpdraftPlus দিয়ে গুগল ড্রাইভে — প্রতিদিন ডেটাবেজ, সপ্তাহে একবার পুরো ফাইল, ১৪ কপি জমা থাকে। সবচেয়ে জরুরি অংশটা মানুষ বাদ দেয়: তিন মাসে একবার একটা স্টেজিং সাইটে রিস্টোর করে দেখা যে ব্যাকআপটা আসলেই কাজ করে। যে ব্যাকআপ কখনও রিস্টোর করে দেখা হয়নি, সেটা ব্যাকআপ নয় — শুধু একটা আশা।
৬. খবর পাওয়ার ব্যবস্থা রাখুন। নতুন অ্যাডমিন ইউজার তৈরি হলে বা কোনো প্লাগিন অ্যাক্টিভ হলে ইমেইল অ্যালার্ট (Wordfence ফ্রি ভার্সনেই আছে), UptimeRobot দিয়ে সাইট ডাউন হলে খবর, আর Search Console-এর মেইল যেন এমন ইনবক্সে যায় যেটা আপনি রোজ খোলেন। নুসরাতের ক্ষেত্রে নয় দিনের দেরিটাই ক্ষতিটাকে কয়েকগুণ বাড়িয়েছিল।
যে দরজাটা প্রায় সবার খোলা থাকে — পুরোনো মানুষ
ক্লিনআপের সময় নুসরাতের সাইটে সচল অ্যাডমিন অ্যাকাউন্ট পাওয়া গিয়েছিল সাতটা। এর মধ্যে দুজন হলেন তিন বছর আগে সাইট বানিয়ে দেওয়া ডেভেলপার, একজন সেই কাজিন যিনি একবার প্রোডাক্ট আপলোড করতে সাহায্য করেছিলেন, আর একজন প্রাক্তন কর্মী যিনি ২০২৩ সালেই চাকরি ছেড়েছেন। কেউ খারাপ কিছু করেননি — কিন্তু তাঁদের প্রত্যেকের পাসওয়ার্ড এখনও কোথাও না কোথাও সেভ করা আছে, হয়তো এমন কোনো ফোনে যেটা হারিয়ে গেছে। বাংলাদেশের ছোট ব্যবসায় এটা সবচেয়ে সাধারণ, অথচ সবচেয়ে কম আলোচিত ঝুঁকি।
নিয়মটা সহজ: কাজ শেষ হলে অ্যাক্সেস বন্ধ। বাইরের কেউ কাজ করলে তাঁকে অ্যাডমিন নয়, প্রয়োজনমতো রোল দিন এবং কাজ শেষে ডিলিট করুন। ছয় মাসে একবার ইউজার লিস্টটা খুলে দেখুন — প্রতিটা নাম চিনতে পারছেন কি না। যাঁকে চিনছেন না, তিনি হয় ভুলে যাওয়া কেউ, নয়তো আপনার আক্রমণকারী।
হোস্টিং নিয়ে যে কথাটা কেউ বলতে চায় না
তিনি বছরে ২,৪০০ টাকার শেয়ার্ড হোস্টিংয়ে ছিলেন, যেখানে একই সার্ভারে শত শত অ্যাকাউন্ট, PHP ৭.৪ (যেটার সাপোর্ট বহু আগেই শেষ), আর ব্যাকআপ বলতে ওই এক কপি। এখন তিনি বছরে ৯,৬০০ টাকার একটা প্ল্যানে — আলাদা অ্যাকাউন্ট আইসোলেশন, PHP ৮.২, সার্ভারের বাইরে দৈনিক ব্যাকআপ, আর ম্যালওয়্যার স্ক্যান। সঙ্গে Cloudflare-এর ফ্রি প্ল্যান আর Bot Fight Mode চালু। সব মিলিয়ে বছরে খরচ ১৪ হাজার টাকার নিচে। আগের হিসাবটা মনে করিয়ে দিই: ক্ষতি হয়েছিল ২.৪ লাখ।
হ্যাক হয়ে গেলে প্রথম যা করবেন
- সাইট মেইনটেন্যান্স মোডে দিন বা সাময়িকভাবে বন্ধ করুন — ক্ষতি ছড়ানো থামান
- হোস্টিং, cPanel, FTP, ডেটাবেজ আর সব WordPress অ্যাডমিনের পাসওয়ার্ড বদলান
wp-config.php-এর সিকিউরিটি কি (salts) নতুন করে জেনারেট করুন — এতে সব সেশন লগআউট হয়ে যাবে- অচেনা অ্যাডমিন ইউজার আছে কি না দেখুন, থাকলে মুছুন
- কোর, থিম আর প্লাগিনের ফাইল আসল কপি দিয়ে রিপ্লেস করুন; uploads ফোল্ডারে কোনো PHP ফাইল থাকার কথা নয়
- পরিষ্কার হওয়ার পর Search Console থেকে রিকনসিডারেশন রিকোয়েস্ট পাঠান, তারপর ধৈর্য ধরুন
নুসরাত এখন যে প্রশ্নগুলোর উত্তর জানেন
একটা সিকিউরিটি প্লাগিন বসালেই কি নিরাপদ? না। Wordfence বা Sucuri খুব কাজের, কিন্তু নাল করা প্লাগিনের ভেতরে বসানো ব্যাকডোর তারা অনেক সময় ধরতে পারে না, কারণ ফাইলটা “বৈধ” প্লাগিনেরই অংশ। সিকিউরিটি প্লাগিন একটা স্তর মাত্র; আসল কাজ হলো দরজাগুলো কম রাখা।
নাল প্লাগিন কি সব সময়ই ক্ষতিকর? সবগুলোয় ম্যালওয়্যার থাকে না, কিন্তু কোনটায় আছে সেটা আপনি আগে থেকে জানতে পারবেন না — আর জানার একমাত্র উপায় হলো হ্যাক হওয়া। তার উপর নাল প্লাগিন আপডেট পায় না, ফলে ছয় মাস পর সেটা এমনিতেই ঝুঁকি হয়ে দাঁড়ায়।
wp-admin ঠিকানা লুকিয়ে রাখলে কি নিরাপত্তা বাড়ে? সামান্য বাড়ে, বট ট্রাফিক কমে। কিন্তু এটা নিরাপত্তা নয়, লুকোচুরি। এতে আসল দুর্বলতা একটুও কমে না, আর সেটআপ ভুল হলে আপনি নিজেই ঢুকতে পারবেন না। আগে টু-ফ্যাক্টর আর আপডেট ঠিক করুন, তারপর এসব ভাবুন।
ছোট সাইট, আমাকে কে হ্যাক করবে? আপনাকে কেউ বেছে নেয়নি। বট সারা ইন্টারনেট স্ক্যান করে নির্দিষ্ট প্লাগিনের নির্দিষ্ট ভার্সন খোঁজে, তারপর স্বয়ংক্রিয়ভাবে ঢোকে। আপনার সাইট তাদের কাছে ব্যবসা নয় — স্প্যাম পাঠানোর একটা সার্ভার, বা জুয়ার সাইটে ট্রাফিক পাঠানোর একটা রাস্তা। ছোট হওয়াটা কোনো সুরক্ষা নয়।
যদি আপনার সাইটে ব্যবসা চলে, তাহলে সিকিউরিটি কোনো আলাদা প্রজেক্ট নয় — এটা রক্ষণাবেক্ষণের অংশ, ঠিক যেমন দোকানের তালা। স্ট্যাক অ্যালিক্স WordPress সাইটের সিকিউরিটি অডিট, ম্যালওয়্যার ক্লিনআপ আর মাসিক মেইনটেন্যান্স — তিনটাই করে। সাইট নিয়ে খচখচ করলে একবার দেখিয়ে নিন; আগে দেখালে খরচ সব সময়ই কম।

