وقتی سایتمان هک میشود: عواقب فاجعهبار و نقشه راه نجات
علائم واضح و فوری وبسایت هک شده
علائم قابل مشاهده:
- محتوای ناخواسته یا اسپم در صفحات
- تغییر صفحه اصلی به محتوای مخرب
- ریدایرکت خودکار به سایتهای دیگر
- پاپآپهای مزاحم و تبلیغات غیرمعمول
- صفحات جدید با عنوانهای غریب در نتایج گوگل
علائم فنی:
- هشدار “این سایت ممکن است هک شده” در گوگل
- افزایش ناگهانی مصرف CPU و RAM سرور
- فایلهای ناشناخته در دایرکتوری سرور
- کاربران جدید در پنل ادمین
- ایمیلهای هرزنامه از سرور شما
نمودار علائم هک:
مشکوک به هک
↓
علائم ظاهری → بررسی محتوا
علائم فنی → بررسی سرور
علائم امنیتی → بررسی لاگها
↓
تأیید هک → شروع فرآیند نجات
فاز اول: مهار فوری آسیب و جلوگیری از گسترش (تکنیک 1-4)
تکنیک 1: آفلاین کردن فوری سایت (حالت تعمیرات)
چرا مهم است؟
سایت آلوده میتواند بازدیدکنندگان را آلوده کند، اطلاعات آنها را سرقت کند و رتبه SEO شما را نابود کند.
آفلاین کردن فوری سایت در وردپرسی
-
گام 1: پیدا کردن فایل .htaccess
1. وارد cPanel شوید
2. File Manager را باز کنید
3. به مسیر public_html بروید
4. در بالای صفحه “Settings” کلیک کنید
5. گزینه “Show Hidden Files” را فعال کنید
6. فایل .htaccess را پیدا میکنید (در پوشه اصلی وردپرس)


-
گام 2: ویرایش فایل
1. روی .htaccess راستکلیک کنید
2. “Edit” را انتخاب کنید
3. در ابتدای فایل این کد را اضافه کنید:


RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^185\.88\.155\.20$
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
[RewriteRule ^(.*)$ /maintenance.html [R=302,L
- گام 3: ساخت صفحه Maintenance
نحوه ساخت:
1. در همان File Manager باشید (در پوشه public_html)
2. روی دکمه “+ File” یا “New File” کلیک کنید
3. نام فایل را بنویسید: maintenance.html
4. روی فایل جدید راستکلیک → Edit
5. محتوای زیر را کپی و Paste کنید:


<!DOCTYPE html>
<html>
<head>
<title>در حال تعمیرات</title>
<meta charset="utf-8">
</head>
<body style="text-align:center; padding-top:100px; font-family:Tahoma;">
<h1>🔧 سایت در حال تعمیرات است</h1>
<p>به زودی برمیگردیم!</p>
</body>
</html>

- گام 4: جایگزینی IP شما: برگردید به فایل .htaccess که در گام 2 ویرایش کردید.
در این خط:
RewriteCond %{REMOTE_ADDR} !^185\.88\.155\.20$
↑↑↑ این عدد ↑↑↑
تکنیک 2: تغییر فوری تمام رمزهای عبور
|
سرویس |
اولویت |
دستورالعمل |
|
پنلهاستینگ. |
بحرانی |
cPanel/DirectAdmin – اول از همه. |
|
FTP |
بحرانی |
تمام اکانتهای FTP را حذف/تغییر دهید |
|
دیتابیس |
بحرانی |
MySQL User Password از phpMyAdmin |
|
ادمین CMS |
بحرانی |
wp-admin یا admin panel |
|
SSH |
بحرانی |
اگر دسترسی SSH دارید |
- رمز ضعیف: admin123
- رمز قوی: K#9mP@x2$vL8&qW5
– ترکیب حروف (A-z)، اعداد (0-9)، نمادها (!@#$)
– هیچ کلمه قاموسی ندارد
تکنیک 3: قطع موقت دسترسیهای مشکوک
- روش 1: از داخل phpMyAdmin
مسیر: cPanel → Databases → phpMyAdmin
- وارد cPanel شوید
- بخش “Databases” → “phpMyAdmin” کلیک کنید
- از منوی سمت چپ، دیتابیس وردپرس خود را انتخاب کنید
(معمولاً نامش شامل username_wp یا username_wor است) - بالای صفحه روی تب “SQL” کلیک کنید
- کدهای زیر را یکی یکی اجرا کنید:

SELECT user_login, user_email FROM wp_users WHERE ID IN
(SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_capabilities'
AND meta_value LIKE '%administrator%');
- نتیجه: لیست تمام ادمینها را نشان میدهد
- اگر کاربری را نمیشناسید → مشکوک است!
اول باید ID کاربر مشکوک را بدانید:
- در نتایج مرحله 1، اگر username مشکوکی دیدید
- برای پیدا کردن ID اش این کد را اجرا کنید:
SELECT user_login, user_email FROM wp_users WHERE ID IN
(SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_capabilities'
AND meta_value LIKE '%administrator%');
- فرض کنید ID کاربر = 99
- حالا با این کد حذفش کنید:
DELETE FROM wp_users WHERE user_login = 'hacker_username';
DELETE FROM wp_usermeta WHERE user_id = 99;
- روش 2: از داشبورد وردپرس
مسیر: wp-admin → Users → All Users
- وارد داشبورد وردپرس شوید
- کاربران → همه کاربران
- لیست را بررسی کنید
- کاربر مشکوک → Delete
- محتوای او را به کاربر دیگری منتقل کنید یا حذف کنید.
mv wp-content/plugins wp-content/plugins-disabled
تکنیک 4: بکآپ فوری وضعیت فعلی (برای بررسی)
tar -czf backup-hacked-$(date +%Y%m%d).tar.gz /home/username/public_html/
mysqldump -u username -p database_name > backup-db-$(date +%Y%m%d).sql
فاز دوم: پاکسازی و بازیابی کامل (تکنیک 5-8)
تکنیک 5: بازیابی از بکآپ تمیز
├─ بکآپ دیروز → احتمالاً آلوده
├─ بکآپ هفته پیش → بررسی کنید
├─ بکآپ ماه پیش → احتمال بالای تمیز بودن
└─ بکآپ 3 ماه پیش → مطمئناً تمیز (اما قدیمی)
- دانلود بکآپ تمیز
- اسکن آن با آنتیویروس
- حذف کامل فایلهای فعلی سایت
- آپلود بکآپ تمیز
- import دیتابیس تمیز
- آپدیت فوری CMS و افزونهها
تکنیک 6: اسکن عمیق با ابزارهای تخصصی
|
ابزار |
نوع |
مناسببرای |
|
Wordfence |
افزونه وردپرس |
اسکن و پاکسازی خودکار |
|
Sucuri SiteCheck |
آنلاین |
بررسی blacklist و malware. |
|
ClamAV |
سرور |
اسکن کل فایلهای سرور |
|
AI-Bolit |
اسکریپت PHP |
یافتن backdoor های مخفی |
تکنیک 7: بررسی لاگهای سرور و یافتن نقطه نفوذ
grep "POST" /var/log/apache2/access.log | grep -i "wp-login\|admin"
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -rn | head -20
tail -500 /var/log/apache2/error.log | grep -i "fatal\|warning"
cat /var/log/proftpd/access.log | tail -100
تکنیک 8: حذف Backdoor ها و Web Shell ها
فایلهای مخفی که هکر برای دسترسی مجدد جایگذاری میکند.
├─ /wp-includes/ (فایلهای اضافه شده)
├─ /wp-content/themes/[theme]/includes/
├─ /images/ یا /tmp/ (دایرکتوریهای عمومی)
└─ فایلهای با نامهای معمولی مثل “index.php.bak”
find /home/user/public_html/wp-content/uploads -name "*.php"
find /home/user/public_html -type f -mtime -7 -name "*.php"
grep -r "eval(base64_decode" /home/user/public_html/
grep -r "system(" /home/user/public_html/
grep -r "exec(" /home/user/public_html/
cat suspicious_file.php
rm suspicious_file.php
فاز سوم: تقویت امنیت دائمی و پیشگیری (تکنیک 9-12)
تکنیک 9: بهروزرسانی کامل CMS، قالب و افزونهها
- ✅ وردپرس:
1. بکآپ کامل قبل از آپدیت
2. آپدیت هسته وردپرس به آخرین نسخه
3. آپدیت تمام افزونهها (حذف افزونههای غیرفعال)
4. آپدیت قالب (اگر قالب Premium است، از سایت اصلی دانلود کنید)
5. آپدیت PHP به نسخه بالاتر
- هر افزونه = یک نقطه ورود احتمالی. فقط آنچه واقعاً نیاز دارید نگه دارید.
تکنیک 10: نصب فایروال وب اپلیکیشن (WAF)
|
سرویس |
نوع |
قیمت |
توصیه |
|
Cloudflare |
Cloud-based |
رایگان تا $200/ماه |
بهترین برای همه ⭐ |
|
Sucuri |
Cloud-based |
$199/سال |
عالی برای وردپرس |
|
Wordfence |
Plugin |
رایگان/$99/سال |
مناسب سایتهای کوچک. |
2. اضافه کردن دامنه
3. تغییر Nameserver به Cloudflare
4. فعال کردن:
├─ SSL/TLS (حداقل Flexible)
├─ Firewall Rules
├─ DDoS Protection
└─ Bot Fight Mode
5. قوانین فایروال سفارشی:
– Block کشورهای پرخطر
– محدود کردن تعداد درخواست به wp-login
تکنیک 11: تنظیم صحیح مجوزهای فایلها (File Permissions)
find /home/user/public_html -type d -exec chmod 755 {} \;
find /home/user/public_html -type f -exec chmod 644 {} \;
chmod 600 wp-config.php
echo "php_flag engine off" > /wp-content/uploads/.htaccess
- 755 = rwxr-xr-x (مالک میتواند بنویسد، دیگران فقط خواندن)
- 644 = rw-r–r– (مالک میتواند بنویسد، دیگران فقط خواندن)
- 600 = rw——- (فقط مالک دسترسی دارد)
تکنیک 12: راهاندازی مانیتورینگ و هشدار خودکار
- بررسی در دسترس بودن سایت هر 5 دقیقه
- هشدار ایمیل/SMS در صورت Down شدن
- هشدار برای ورود ناموفق
- هشدار برای تغییرات فایل
- هشدار برای افزونههای آسیبپذیر
- هشدار Security Issues
- هشدار Manual Actions
- مانیتور وضعیت Index
ایمیل فوری برای:
✅ ورود با رمز اشتباه بیش از 5 بار
✅ تغییر فایلهای هسته (Core Files)
✅ فایل جدید در دایرکتوری /uploads/
✅ مصرف CPU بالای 80% برای بیش از 10 دقیقه
چکلیست کامل بازیابی سایت هک شده
✅ تغییر تمام رمزهای عبور (هاستینگ، FTP، DB، Admin)
✅ بکآپ فوری وضعیت فعلی
✅ بررسی و حذف کاربران مشکوک
✅ غیرفعال کردن موقت افزونهها✅ بازیابی از بکآپ تمیز (اگر دارید)
✅ اسکن کامل با Wordfence یا Sucuri
✅ بررسی لاگهای سرور
✅ حذف Backdoor ها و فایلهای مخرب
✅ حذف کدهای مخرب از دیتابیس✅ آپدیت CMS، قالب و افزونهها
✅ نصب WAF (Cloudflare)
✅ تنظیم مجوزهای صحیح فایلها
✅ فعالسازی SSL و HTTPS
✅ راهاندازی مانیتورینگ
اطلاع به گوگل و بازیابی SEO
2. Security & Manual Actions → Security Issues
3. کلیک روی “Request Review”
4. توضیح اقدامات انجام شده:
– پاکسازی کامل malware
– آپدیت تمام نرمافزارها
– تقویت امنیت
– نصب فایروال
5. ارسال درخواست
6. معمولاً 3-7 روز طول میکشد
نتیجهگیری: 12 تکنیک اصلی برای وبسایت هک شده
سوالات متداول از 12 تکنیک ضروری برای نجات وبسایت هک شده
1- چگونه بفهمم سایتم واقعاً هک شده یا فقط مشکل فنی دارد؟
برای تشخیص قطعی:
- سایت را در https://sitecheck.sucuri.net بررسی کنید
- Google Search Console را چک کنید (بخش Security Issues)
- لاگهای سرور را بررسی کنید
- فایلهای اخیراً تغییر یافته را پیدا کنید
2- آیا میتوانم بدون حذف کل سایت، فقط فایلهای مخرب را پاک کنم؟
بله، اما خطرناک است! حتی یک فایل Backdoor باقیمانده میتواند دوباره سایت را آلوده کند. توصیه قطعی:
- اگر بکآپ تمیز دارید → بازیابی کامل
- اگر ندارید → نصب مجدد CMS + import دیتابیس (بعد از پاکسازی)
3- بکآپ من هم آلوده است. الان چکار کنم؟
اگر تمام بکآپها آلودهاند:
- نصب تازه CMS انجام دهید
- دیتابیس را Export کنید
- با ابزارهای آنلاین مانند “Database Malware Scanner” اسکن کنید
- جداول مشکوک (مثلاً جدول options در وردپرس) را دستی پاک کنید
- دیتابیس تمیز شده را Import کنید
این کار دشوار است و بهتر است به متخصص واگذار شود.