پاک‌سازی و ایمن کردن سایت وردپرس بعد از هک، فرآیندی چندلایه است که بدون نقشه دقیق، به نفوذ مجدد و از دست رفتن کامل داده‌ها منتهی می‌شود. نخستین اقدام پس از تشخیص هک، قطع دسترسی مهاجم و تهیه پشتیبان از وضعیت آلوده است، نه حذف فوری فایل‌ها. شناسایی دامنه نفوذ، ردیابی فایل‌های مخرب و بررسی کدهای تزریق‌شده در پایگاه داده، پایه‌های پاک‌سازی محسوب می‌شوند. بازنشانی کامل رمزهای عبور، کلیدهای امنیتی و توکن‌های API، بخش جدایی‌ناپذیر این فرآیند است. سخت‌سازی سایت پس از پاک‌سازی، از نفوذ مجدد جلوگیری می‌کند. بدون پایش مستمر پس از پاک‌سازی، احتمال بازگشت مهاجم به‌شدت افزایش می‌یابد. پاک‌سازی مؤثر، ترکیبی از حذف کدهای مخرب، اصلاح آسیب‌پذیری‌های ریشه‌ای و بازسازی لایه‌های امنیتی است.

در یکی از پروژه‌های فروشگاهی که پس از یک هک هدفمند با حجم بالای سفارش‌های جعلی مواجه شده بود، نخستین واکنش طبیعی حذف سریع فایل‌های مشکوک بود. اما پس از حذف، سایت دوباره آلوده شد. بررسی دقیق‌تر نشان داد که بخشی از کد مخرب در پایگاه داده و در قالب یک افزونه نصب‌شده باقی مانده بود. آن تجربه نشان داد که پاک‌سازی هک، نیازمند ترتیب منطقی و پوشش تمام لایه‌ها است. آنچه در ادامه می‌آید، چارچوبی عملی برای این فرآیند است.

چرا سایت‌های وردپرسی هک می‌شوند؟

وردپرس، به‌دلیل سهم بازار بالای خود، هدف اصلی حملات سایبری است. بخش قابل توجهی از این حملات، خودکار و بر پایه اسکنرهای تخصصی انجام می‌شود. برای درک ریشه‌ای این تهدید، چرا وردپرس هدف اصلی حملات سایبری است را مطالعه کنید.

آسیب‌پذیری‌های نرم‌افزاری

افزونه‌ها و قالب‌های قدیمی، بیشترین سهم را در نفوذ به سایت‌های وردپرسی دارند. هر افزونه، یک سطح حمله جدید ایجاد می‌کند و اگر به‌روزرسانی نشود، به یک دروازه ورود تبدیل می‌شود. برای بررسی این ریسک، آسیب‌پذیری افزونه‌های وردپرس چه خطراتی دارد را ببینید.

ضعف در احراز هویت

رمزهای عبور ضعیف، نبود احراز هویت دو مرحله‌ای و استفاده مجدد از رمزهای لو رفته، از رایج‌ترین دلایل نفوذ محسوب می‌شوند. حملات Brute Force، روزانه هزاران سایت وردپرسی را هدف قرار می‌دهند. برای مقابله با این تهدید، چگونه حملات brute force را در وردپرس دفع کنیم را مطالعه کنید.

آسیب‌پذیری‌های کد سفارشی

کدهای سفارشی نوشته‌شده بدون رعایت اصول امنیتی، می‌توانند به نقاط ورود مهاجمان تبدیل شوند. حملاتی مانند SQL Injection، XSS و CSRF، از ضعف در اعتبارسنجی و پاک‌سازی ورودی‌ها سوءاستفاده می‌کنند. برای درک عمیق این تهدیدها، انواع آسیب‌پذیری‌های رایج وب را مطالعه کنید.

تنظیمات نادرست سرور

مجوزهای نامناسب فایل‌ها، پیکربندی ضعیف دیوار آتش و نبود محدودیت دسترسی، از عواملی هستند که نفوذ را ساده‌تر می‌کنند. بررسی این تنظیمات، بخشی از فرآیند سخت‌سازی است.

هک شدن، نتیجه یک اشتباه واحد نیست؛ حاصل انباشت آسیب‌پذیری‌های کوچکی است که در نبود پایش، به یک دروازه باز تبدیل می‌شوند.

نشانه‌های هک شدن سایت وردپرس

تشخیص زودهنگام هک، تأثیر چشمگیری بر کاهش خسارت دارد. برخی نشانه‌ها آشکار و برخی دیگر پنهان هستند. برای فهرست جامع، چگونه بفهمم سایت وردپرسی هک شده است را مطالعه کنید.

نشانه‌های آشکار

  • تغییر محتوای صفحات بدون دخالت مدیر
  • ظاهر شدن لینک‌های ناشناس در سایت
  • هشدار گوگل درباره محتوای مخرب
  • کندی شدید سایت یا قطعی مکرر
  • غیرفعال شدن ناگهانی افزونه‌های امنیتی
  • افزوده شدن کاربران ناشناس با نقش مدیر
  • ارسال ایمیل‌های انبوه از سایت

نشانه‌های پنهان

برخی حملات، بدون تغییر محسوس در ظاهر سایت انجام می‌شوند. این حملات، اغلب با هدف استخراج داده، ارسال اسپم یا استفاده از منابع سرور انجام می‌گیرند. برای شناسایی این نوع حملات، علائم هک و بدافزار در وردپرس را مطالعه کنید.

نشانه‌های مبتنی بر ابزارهای بیرونی

  • هشدار Google Search Console درباره امنیت سایت
  • قرار گرفتن دامنه در فهرست سیاه مرورگرها
  • افزایش ناگهانی مصرف CPU یا پهنای باند سرور
  • ارسال ایمیل‌های اسپم از دامنه سایت

شناسایی بدافزار مخفی

برخی بدافزارها، خود را در فایل‌های ظاهراً بی‌خطر پنهان می‌کنند. برای شناسایی این نوع بدافزار، بدافزار مخفی در وردپرس چگونه پیدا می‌شود را ببینید.

اولین اقدامات پس از تشخیص هک

پس از تشخیص هک، نخستین ساعات نقش حیاتی در کاهش خسارت دارند. واکنش سریع و سنجیده، از گسترش نفوذ جلوگیری می‌کند.

حفظ آرامش و پرهیز از حذف فوری

نخستین واکنش طبیعی، حذف سریع فایل‌های مشکوک است. اما این کار، شواهد لازم برای شناسایی ریشه نفوذ را از بین می‌برد. پیش از هر اقدامی، باید تصویر کاملی از وضعیت آلوده تهیه شود.

قطع دسترسی مهاجم

  • تغییر فوری رمز عبور مدیر اصلی
  • غیرفعال کردن کاربران ناشناس
  • بستن نشست‌های فعال با تغییر کلیدهای امنیتی
  • محدودسازی دسترسی به پیشخوان از طریق IP

فعال‌سازی حالت نگهداری

با فعال‌سازی حالت نگهداری (Maintenance Mode)، می‌توان از دسترسی کاربران به سایت آلوده جلوگیری کرد. این کار، از گسترش آسیب به کاربران و از دست رفتن اعتماد آن‌ها پیشگیری می‌کند.

اطلاع‌رسانی به ذی‌نفعان

در سایت‌های سازمانی و فروشگاهی، اطلاع‌رسانی سریع به ذی‌نفعان بخشی از فرآیند مدیریت بحران است. این اطلاع‌رسانی باید شفاف، دقیق و بدون ایجاد نگرانی غیرضروری باشد.

ثبت شواهد

پیش از هر اقدام پاک‌سازی، باید شواهد کلیدی ثبت شوند: لاگ‌های سرور، لیست فایل‌های تغییر‌یافته، کاربران مشکوک و کدهای تزریق‌شده. این شواهد، در شناسایی ریشه نفوذ و پیشگیری از تکرار آن حیاتی هستند.

پشتیبان‌گیری از وضعیت آلوده پیش از پاک‌سازی

اگرچه پشتیبان‌گیری از یک سایت آلوده متناقض به نظر می‌رسد، اما این اقدام بخش جدایی‌ناپذیر فرآیند پاک‌سازی است. بدون پشتیبان، امکان بازگشت در صورت بروز مشکل وجود ندارد. برای اصول پشتیبان‌گیری، چگونه از سایت وردپرسی بکاپ بگیریم را مطالعه کنید.

پشتیبان‌گیری از فایل‌ها

پشتیبان کامل از فایل‌های سرور، شامل هسته وردپرس، افزونه‌ها، قالب‌ها و فایل‌های آپلود، باید تهیه شود. این پشتیبان، باید در محلی جدا از سرور اصلی ذخیره شود.

پشتیبان‌گیری از پایگاه داده

پایگاه داده، ممکن است حاوی کدهای تزریقی باشد. با این حال، پشتیبان‌گیری از آن ضروری است تا در صورت نیاز، امکان بررسی دقیق‌تر فراهم شود. برای اصول این کار، چگونه از دیتابیس وردپرس بکاپ بگیریم را ببینید.

پشتیبان‌گیری از لاگ‌ها

لاگ‌های سرور و لاگ‌های امنیتی، اطلاعات ارزشمندی درباره نحوه نفوذ و فعالیت مهاجم ارائه می‌دهند. این لاگ‌ها باید پیش از پاک‌سازی، در محلی امن ذخیره شوند.

پشتیبان‌گیری از تنظیمات سرور

پیکربندی سرور، شامل فایل‌های .htaccess، پیکربندی وب‌سرور و تنظیمات DNS، باید پشتیبان‌گیری شود. مهاجمان ممکن است این فایل‌ها را نیز تغییر داده باشند.

پشتیبان‌گیری از سایت آلوده، نه برای بازگرداندن آن، بلکه برای حفظ شواهد و امکان بررسی دقیق‌تر انجام می‌شود. این پشتیبان، ابزار تحلیل است، نه ابزار بازیابی.

شناسایی دامنه نفوذ و ردیابی فایل‌های آلوده

شناسایی دامنه نفوذ، پایه پاک‌سازی مؤثر است. بدون درک کامل از اینکه مهاجم به کدام بخش‌ها دسترسی داشته، پاک‌سازی ناقص خواهد بود.

بررسی فایل‌های تغییر‌یافته

نخستین گام، شناسایی فایل‌هایی است که تاریخ تغییر آن‌ها با الگوی به‌روزرسانی معمول سایت مطابقت ندارد. ابزارهایی مانند دستور find در لینوکس، امکان جستجوی فایل‌های تغییریافته در بازه زمانی مشخص را فراهم می‌کنند:

find /path/to/wordpress -type f -newermt "2024-01-01" ! -newermt "2024-12-31" -ls

مقایسه با نسخه اصلی

برای فایل‌های هسته وردپرس، افزونه‌ها و قالب‌های شناخته‌شده، مقایسه با نسخه اصلی از مخزن رسمی، تغییرات غیرمجاز را آشکار می‌کند. ابزارهایی مانند WP-CLI دستور wp core verify-checksums را ارائه می‌دهند.

اسکن با ابزارهای تخصصی

اسکنرهای بدافزار، فایل‌های آلوده را بر پایه الگوهای شناخته‌شده شناسایی می‌کنند. برای فهرست ابزارهای معتبر، بهترین ابزارهای اسکن بدافزار را مطالعه کنید.

بررسی کدهای مخرب پنهان

برخی بدافزارها با تکنیک‌های مخفی‌سازی مانند Base64 Encoding یا درج در فایل‌های تصویری پنهان می‌شوند. برای شناسایی این نوع بدافزار، بدافزار مخفی در وردپرس چگونه پیدا می‌شود را ببینید.

بررسی وظایف زمان‌بندی‌شده

مهاجمان اغلب وظایف زمان‌بندی‌شده (Cron Jobs) ایجاد می‌کنند تا کد مخرب را در بازه‌های مشخص اجرا کنند. این وظایف باید شناسایی و حذف شوند.

بررسی کلیدهای API و توکن‌ها

مهاجمان ممکن است کلیدهای API و توکن‌های دسترسی را استخراج کنند. تمام این کلیدها باید باطل و بازتولید شوند.

حذف کدهای مخرب از فایل‌های سرور

پس از شناسایی فایل‌های آلوده، نوبت به پاک‌سازی آن‌ها می‌رسد. این مرحله، نیازمند دقت بالا و پرهیز از حذف فایل‌های ضروری است.

حذف فایل‌های ناشناس

فایل‌های ناشناسی که در پوشه‌های وردپرس قرار دارند، باید حذف شوند. این فایل‌ها اغلب نام‌های تصادفی یا شبیه به فایل‌های اصلی دارند.

بازنشانی فایل‌های هسته

فایل‌های هسته وردپرس، باید با نسخه اصلی جایگزین شوند. این کار، از طریق دانلود مجدد وردپرس و جایگزینی فایل‌ها انجام می‌شود. برای آشنایی با ساختار هسته، ساختار هسته وردپرس چگونه کار می‌کند را مطالعه کنید.

نصب مجدد افزونه‌ها و قالب‌ها

افزونه‌ها و قالب‌ها، باید حذف و از منابع رسمی نصب مجدد شوند. این رویکرد، از باقی ماندن کدهای مخرب در فایل‌های آن‌ها جلوگیری می‌کند.

بررسی فایل‌های آپلود

پوشه آپلود، ممکن است حاوی فایل‌های مخرب با پسوندهای جعلی باشد. فایل‌هایی که پسوند تصویری دارند اما محتوای آن‌ها PHP است، باید حذف شوند.

حذف فایل‌های PHP در پوشه‌های غیرمجاز

فایل‌های PHP نباید در پوشه‌های آپلود یا پوشه‌های استاتیک وجود داشته باشند. این فایل‌ها، معمولاً نشانه‌ای از نفوذ هستند.

پاک‌سازی فایل wp-config.php

فایل wp-config.php، ممکن است توسط مهاجم تغییر یافته باشد. این فایل باید بررسی و در صورت نیاز، بازنویسی شود. برای اصول امن‌سازی، چگونه فایل wp-config را امن کنیم بدون شکستن سایت را مطالعه کنید.

پاک‌سازی دیتابیس از کدهای تزریقی

پایگاه داده، یکی از پنهان‌ترین نقاط باقی‌مانده کدهای مخرب است. مهاجمان اغلب کدهای مخرب را در قالب محتوای نوشته‌ها، تنظیمات افزونه‌ها یا ویجت‌ها تزریق می‌کنند.

جستجوی کدهای مخرب در جداول اصلی

کدهای مخرب، می‌توانند در جداول wp_posts، wp_postmeta، wp_options و wp_comments پنهان شوند. جستجوی الگوهای مشکوک مانند <script>، eval( و base64_decode در این جداول، از گام‌های اولیه است. برای اصول پاک‌سازی، چگونه دیتابیس وردپرس را پاک‌سازی کنیم را مطالعه کنید.

پاک‌سازی کدهای تزریقی در محتوا

نوشته‌ها و برگه‌ها، ممکن است حاوی کدهای تزریقی باشند که در مرورگر کاربران اجرا می‌شوند. این کدها باید با ابزارهای مناسب شناسایی و حذف شوند.

بررسی تنظیمات افزونه‌ها

مهاجمان اغلب از تنظیمات افزونه‌ها برای تزریق کد استفاده می‌کنند. این تنظیمات باید بررسی و در صورت نیاز، بازنشانی شوند.

حذف کاربران ناشناس

مهاجمان اغلب کاربران ناشناس با نقش مدیر ایجاد می‌کنند. این کاربران باید شناسایی و حذف شوند. در برخی موارد، مهاجم ممکن است حساب مدیر اصلی را نیز تغییر داده باشد.

پاک‌سازی وظایف زمان‌بندی‌شده در پایگاه داده

وظایف زمان‌بندی‌شده وردپرس، در جدول wp_options ذخیره می‌شوند. این وظایف باید بررسی و در صورت نیاز، حذف شوند.

امن‌سازی پایگاه داده پس از پاک‌سازی

پس از پاک‌سازی، باید امنیت پایگاه داده تقویت شود. برای راهنمای جامع، چگونه دیتابیس وردپرس را امن کنیم را مطالعه کنید.

SELECT * FROM wp_posts
WHERE post_content LIKE '%<script%' OR
      post_content LIKE '%eval(%' OR
      post_content LIKE '%base64_decode%';

این کوئری، رکوردهای حاوی کدهای مشکوک را نمایش می‌دهد. نتایج باید به‌دقت بررسی و در صورت نیاز، پاک‌سازی شوند.

بررسی کاربران مشکوک و بازنشانی دسترسی‌ها

مهاجمان اغلب از حساب‌های کاربری برای حفظ دسترسی پایدار استفاده می‌کنند. بررسی دقیق کاربران، از بازگشت مهاجم جلوگیری می‌کند.

فهرست‌گیری از تمام کاربران

نخستین گام، فهرست‌گیری از تمام کاربران سایت است. این فهرست، از طریق پیشخوان وردپرس یا مستقیم از پایگاه داده استخراج می‌شود.

شناسایی کاربران ناشناس

کاربرانی که در زمان مشخصی ایجاد شده‌اند یا ایمیل‌های نامعتبر دارند، مشکوک محسوب می‌شوند. این کاربران باید بررسی و در صورت نیاز، حذف شوند.

بازنشانی نقش‌های کاربری

نقش‌های کاربری باید بازنشانی شوند. مهاجم ممکن است نقش یک کاربر عادی را به مدیر ارتقا داده باشد.

بررسی دسترسی‌های اضافی

برخی افزونه‌ها، دسترسی‌های اضافی ایجاد می‌کنند. این دسترسی‌ها باید بررسی و در صورت نیاز، محدود شوند.

فعال‌سازی احراز هویت دو مرحله‌ای

پس از پاک‌سازی، فعال‌سازی احراز هویت دو مرحله‌ای (2FA) برای تمام کاربران با نقش حساس، ضروری است. برای راهنما، فعال‌سازی احراز هویت دو مرحله‌ای 2FA در وردپرس را مطالعه کنید.

بازنشانی رمزهای عبور و کلیدهای امنیتی

بازنشانی کامل رمزهای عبور و کلیدهای امنیتی، بخش جدایی‌ناپذیر پاک‌سازی است. مهاجم ممکن است رمزهای عبور را استخراج کرده باشد.

بازنشانی رمز عبور کاربران

  • بازنشانی رمز عبور مدیر اصلی
  • بازنشانی رمز عبور تمام کاربران با نقش مدیر و ویرایشگر
  • بازنشانی رمز عبور کاربرانی که در دوره نفوذ ایجاد شده‌اند

بازنشانی نمک‌های امنیتی (Security Keys)

وردپرس از نمک‌های امنیتی (Security Keys) در فایل wp-config.php برای رمزنگاری نشست‌ها استفاده می‌کند. بازنشانی این کلیدها، تمام نشست‌های فعال را باطل می‌کند. برای راهنما، چگونه فایل wp-config را امن کنیم را مطالعه کنید.

بازنشانی رمز عبور پایگاه داده

رمز عبور کاربر پایگاه داده، ممکن است توسط مهاجم استخراج شده باشد. این رمز باید بازنشانی و در فایل wp-config.php به‌روزرسانی شود.

بازنشانی کلیدهای API

کلیدهای API سرویس‌های خارجی که با سایت یکپارچه هستند، باید باطل و بازتولید شوند. این شامل کلیدهای درگاه پرداخت، سرویس‌های ایمیل و APIهای داخلی است.

بازنشانی رمزهای FTP و SSH

رمزهای دسترسی به سرور از طریق FTP و SSH، باید بازنشانی شوند. این دسترسی‌ها، اگر در اختیار مهاجم باقی بمانند، امکان بازگشت را فراهم می‌کنند.

اطلاع‌رسانی به کاربران

پس از بازنشانی رمزها، کاربران باید از طریق ایمیل یا کانال‌های رسمی مطلع شوند. این اطلاع‌رسانی، باید شفاف و همراه با راهنمای اقدام باشد.

حذف و نصب مجدد افزونه‌ها و قالب‌ها

افزونه‌ها و قالب‌ها، رایج‌ترین نقاط ورود مهاجمان هستند. حذف و نصب مجدد آن‌ها از منابع رسمی، از باقی ماندن کدهای مخرب جلوگیری می‌کند.

فهرست‌گیری از افزونه‌ها و قالب‌ها

نخستین گام، فهرست‌گیری از تمام افزونه‌ها و قالب‌های نصب‌شده است. افزونه‌ها و قالب‌های غیرضروری باید حذف شوند.

حذف افزونه‌های ناشناس

افزونه‌هایی که در مخزن رسمی وردپرس وجود ندارند یا به‌روزرسانی نمی‌شوند، باید حذف شوند. برای بررسی این افزونه‌ها، چگونه افزونه مشکل‌ساز وردپرس را پیدا کنیم را مطالعه کنید.

دانلود مجدد افزونه‌ها از منابع رسمی

افزونه‌های مورد نیاز، باید از مخزن رسمی وردپرس یا سایت سازنده دانلود شوند. نصب از منابع ناشناس، ریسک آلودگی مجدد را افزایش می‌دهد.

بررسی امنیت افزونه‌ها پیش از نصب

پیش از نصب مجدد، امنیت افزونه‌ها باید بررسی شود. برای راهنما، چگونه امنیت قالب و افزونه وردپرس را بررسی کنیم را مطالعه کنید.

نصب مجدد قالب از منبع اصلی

قالب فعلی سایت، باید از منبع اصلی دانلود و نصب مجدد شود. اگر قالب سفارشی است، باید از نسخه پشتیبان سالم بازیابی شود.

بررسی سازگاری پس از نصب مجدد

پس از نصب مجدد افزونه‌ها و قالب‌ها، باید سازگاری آن‌ها با هسته وردپرس بررسی شود. برای راهنما، چگونه سازگاری قالب وردپرس با افزونه‌ها را بررسی کنیم را مطالعه کنید.

بازسازی هسته وردپرس

هسته وردپرس، ممکن است توسط مهاجم تغییر یافته باشد. بازسازی هسته از نسخه اصلی، از باقی ماندن کدهای مخرب جلوگیری می‌کند.

دانلود نسخه تازه وردپرس

نسخه تازه وردپرس، از سایت رسمی دانلود می‌شود. این نسخه، باید با نسخه فعلی سایت هماهنگ باشد.

جایگزینی فایل‌های هسته

فایل‌های هسته، شامل پوشه‌های wp-admin و wp-includes، باید با نسخه تازه جایگزین شوند. پوشه wp-content، شامل فایل‌های افزونه‌ها، قالب‌ها و آپلود، باید جداگانه مدیریت شود.

بازنشانی فایل‌های ریشه

فایل‌های ریشه وردپرس، شامل index.php، wp-login.php و wp-settings.php، باید بازنشانی شوند. این فایل‌ها، اغلب هدف تغییرات مخرب قرار می‌گیرند.

حفظ فایل‌های سفارشی

فایل‌های سفارشی مانند wp-config.php، .htaccess و robots.txt، نباید جایگزین شوند. این فایل‌ها باید جداگانه بررسی و در صورت نیاز، بازنشانی شوند.

بررسی صحت بازسازی

پس از بازسازی، صحت فایل‌های هسته با ابزارهایی مانند wp core verify-checksums بررسی می‌شود.

سخت‌سازی سایت پس از پاک‌سازی

پاک‌سازی، بدون سخت‌سازی، به هک مجدد منتهی می‌شود. سخت‌سازی، مجموعه اقداماتی است که سطح حمله را کاهش می‌دهد. برای راهنمای جامع، چگونه سایت وردپرسی را در برابر هک محافظت کنیم را مطالعه کنید.

به‌روزرسانی هسته، افزونه‌ها و قالب‌ها

نخستین اقدام سخت‌سازی، به‌روزرسانی تمام اجزای سایت است. نسخه‌های قدیمی، اغلب حاوی آسیب‌پذیری‌های شناخته‌شده هستند.

محدودسازی دسترسی به پیشخوان

دسترسی به پیشخوان وردپرس، می‌تواند بر اساس IP محدود شود. این اقدام، سطح حمله را به‌طور چشمگیری کاهش می‌دهد.

تغییر آدرس ورود پیش‌فرض

آدرس پیش‌فرض wp-login.php، برای همه اسکنرهای خودکار شناخته‌شده است. تغییر این آدرس به یک مسیر سفارشی، حملات خودکار را کاهش می‌دهد.

فعال‌سازی احراز هویت دو مرحله‌ای

2FA برای تمام کاربران با نقش حساس، باید فعال شود. برای راهنمای تفصیلی، افزایش امنیت ورود مدیر وردپرس را مطالعه کنید.

نصب افزونه امنیتی معتبر

افزونه‌های امنیتی، لایه‌های دفاعی متعددی ارائه می‌دهند: دیوار آتش، محدودیت تلاش ورود و پایش فایل‌ها. برای فهرست افزونه‌ها، بهترین افزونه‌های امنیتی وردپرس را ببینید.

پیکربندی مجوزهای فایل‌ها

مجوزهای فایل‌ها و پوشه‌ها، باید به مقادیر استاندارد تنظیم شوند. پوشه‌ها با مجوز 755 و فایل‌ها با مجوز 644 تنظیم می‌شوند. فایل wp-config.php باید مجوز 600 داشته باشد.

غیرفعال کردن ویرایش فایل‌ها

define( 'DISALLOW_FILE_EDIT', true );
define( 'DISALLOW_FILE_MODS', true );

این تعاریف در فایل wp-config.php، از ویرایش فایل‌ها از طریق پیشخوان وردپرس جلوگیری می‌کنند.

محدودسازی اجرای PHP در پوشه آپلود

<Files *.php>
    Require all denied
</Files>

این تنظیمات در فایل .htaccess پوشه آپلود، از اجرای فایل‌های PHP در این پوشه جلوگیری می‌کند.

هدرهای امنیتی و HTTPS

هدرهای امنیتی و HTTPS، لایه‌های دفاعی مهمی هستند که از حملات رایج جلوگیری می‌کنند. برای راهنمای تفصیلی، هدرهای امنیتی HTTP چه کاربردی دارند را مطالعه کنید.

فعال‌سازی HTTPS

پس از پاک‌سازی، اطمینان از فعال بودن HTTPS برای تمام صفحات ضروری است. این اقدام، از شنود ارتباط میان کاربر و سرور جلوگیری می‌کند. برای راهنما، راه‌اندازی SSL در وردپرس و انتقال سایت به HTTPS را مطالعه کنید.

هدر HSTS

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

هدر HSTS، به مرورگر اعلام می‌کند که تنها از HTTPS برای ارتباط استفاده کند.

هدر Content-Security-Policy

Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:;"

این هدر، از اجرای اسکریپت‌های خارجی و تزریق کد جلوگیری می‌کند.

هدر X-Frame-Options

Header always set X-Frame-Options "SAMEORIGIN"

این هدر، از جاسازی سایت در iframe جلوگیری می‌کند و به مقابله با حملات Clickjacking کمک می‌کند.

هدر X-Content-Type-Options

Header always set X-Content-Type-Options "nosniff"

این هدر، از تفسیر نادرست نوع محتوا توسط مرورگر جلوگیری می‌کند.

هدر Referrer-Policy

Header always set Referrer-Policy "strict-origin-when-cross-origin"

این هدر، کنترل می‌کند که اطلاعات ارجاع‌دهنده در درخواست‌های خارجی چگونه ارسال شود.

پایش مستمر و پیشگیری از هک مجدد

پس از پاک‌سازی و سخت‌سازی، پایش مستمر بخش جدایی‌ناپذیر امنیت سایت است. بدون پایش، احتمال بازگشت مهاجم به‌شدت افزایش می‌یابد.

پایش تغییرات فایل‌ها

ابزارهای پایش، تغییرات فایل‌ها را در زمان واقعی ردیابی می‌کنند. این ابزارها، هرگونه تغییر غیرمجاز را گزارش می‌دهند.

پایش لاگ‌های ورود

لاگ‌های ورود، باید به‌طور منظم بررسی شوند. الگوهای مشکوک مانند تلاش‌های ورود مکرر از IP یکسان یا ورود از موقعیت جغرافیایی غیرمنتظره، نشانه‌هایی از حمله هستند.

پایش فعالیت‌های کاربران

افزونه‌های ثبت فعالیت، تمام اقدامات کاربران در پیشخوان را ثبت می‌کنند. این ثبت، به شناسایی فعالیت‌های مشکوک کمک می‌کند.

پایش عملکرد سرور

افزایش ناگهانی مصرف CPU یا پهنای باند، می‌تواند نشانه‌ای از فعالیت مخرب باشد. برای اصول پایش، مانیتورینگ سرور دقیقاً چگونه انجام می‌شود را مطالعه کنید.

پشتیبان‌گیری خودکار

پشتیبان‌گیری خودکار، امکان بازیابی سریع در صورت بروز مشکل را فراهم می‌کند. برای راهنما، چرا Automatic Backup وردپرس حیاتی‌تر از سرعت است را مطالعه کنید.

آموزش کاربران

کاربران، باید درباره تهدیدات امنیتی و روش‌های مقابله با آن‌ها آموزش ببینند. این آموزش، بخشی از استراتژی بلندمدت امنیت است.

پایش خارجی

سرویس‌های پایش خارجی، مانند Google Search Console و سرویس‌های هشدار امنیتی، می‌توانند نشانه‌های هک را پیش از آنکه کاربران متوجه شوند، شناسایی کنند.

پاک‌سازی، پایان یک بحران است، نه پایان یک تهدید. امنیت سایت، یک فرآیند مداوم است که نیازمند پایش، به‌روزرسانی و آموزش مستمر است.

پرسش‌های پرتکرار درباره پاک‌سازی سایت هک‌شده

آیا سایت هک‌شده قابل بازیابی است؟

بله، در اکثر موارد سایت هک‌شده قابل بازیابی است. کلید موفقیت، واکنش سریع، پشتیبان‌گیری از وضعیت آلوده و اجرای دقیق مراحل پاک‌سازی و سخت‌سازی است.

چگونه بفهمم سایت وردپرسی هک شده است؟

نشانه‌های آشکار مانند تغییر محتوا، لینک‌های ناشناس، هشدار گوگل و کندی سایت. نشانه‌های پنهان با اسکن بدافزار و بررسی لاگ‌ها شناسایی می‌شوند. برای راهنما، چگونه بفهمم سایت وردپرسی هک شده است را ببینید.

آیا باید سایت هک‌شده را به‌طور کامل حذف و بازسازی کرد؟

در اکثر موارد، حذف کامل ضروری نیست. با پاک‌سازی دقیق فایل‌ها و پایگاه داده و بازسازی هسته و افزونه‌ها، می‌توان سایت را بازیابی کرد. حذف کامل، تنها در مواردی که نفوذ عمیق و گسترده باشد توصیه می‌شود.

چه ابزاری برای اسکن بدافزار مناسب است؟

ابزارهایی مانند Wordfence، Sucuri و MalCare. برای فهرست جامع، بهترین ابزارهای اسکن بدافزار را مطالعه کنید.

چگونه از هک مجدد جلوگیری کنم؟

با به‌روزرسانی منظم، فعال‌سازی احراز هویت دو مرحله‌ای، نصب افزونه امنیتی، سخت‌سازی سرور، پایش مستمر و آموزش کاربران. برای راهنمای جامع، چگونه سایت وردپرسی را در برابر هک محافظت کنیم را ببینید.

آیا هک شدن بر سئو سایت تأثیر می‌گذارد؟

بله، هک می‌تواند به قرار گرفتن سایت در فهرست سیاه گوگل و افت شدید رتبه منجر شود. پس از پاک‌سازی، باید درخواست بررسی مجدد در Google Search Console ارسال شود.

آیا بدافزار می‌تواند در پایگاه داده باقی بماند؟

بله، بدافزار می‌تواند در جداول پایگاه داده پنهان شود. برای شناسایی و حذف، چگونه دیتابیس وردپرس را پاک‌سازی کنیم را مطالعه کنید.

آیا افزونه‌های امنیتی می‌توانند از هک جلوگیری کنند؟

افزونه‌های امنیتی، لایه‌های دفاعی مهمی فراهم می‌کنند اما جایگزین سخت‌سازی سرور و آموزش کاربران نیستند. ترکیب چند لایه دفاعی، مؤثرترین رویکرد محسوب می‌شود.

چند وقت یک‌بار باید سایت را از نظر امنیتی بررسی کرد؟

بررسی امنیتی باید به‌طور مستمر انجام شود. اسکن خودکار روزانه، بررسی دستی ماهانه و ممیزی امنیتی جامع در بازه‌های فصلی یا سالانه.

آیا هک شدن به‌معنای از دست رفتن داده است؟

لزوماً خیر. در بسیاری از موارد، داده‌ها قابل بازیابی هستند. اما در برخی حملات مانند باج‌گیری (Ransomware)، ممکن است داده‌ها رمزنگاری یا حذف شوند. پشتیبان‌گیری منظم، بیمه‌نامه‌ای در برابر این تهدید است.

آیا باید به کاربران درباره هک اطلاع داد؟

در صورت نشت داده‌های کاربران، اطلاع‌رسانی الزامی و اخلاقی است. این اطلاع‌رسانی باید شفاف، دقیق و همراه با راهنمای اقدام باشد.

آیا پس از پاک‌سازی، سایت به حالت قبل بازمی‌گردد؟

در اکثر موارد، سایت پس از پاک‌سازی به عملکرد طبیعی بازمی‌گردد. اما برخی آسیب‌ها مانند افت رتبه سئو، ممکن است نیازمند زمان برای بازیابی باشد.

آیا استفاده از افزونه رایگان امنیتی کافی است؟

افزونه‌های رایگان امنیتی، لایه‌های دفاعی پایه را فراهم می‌کنند. برای سایت‌های حساس، استفاده از نسخه‌های پرمیوم با پشتیبانی و امکانات پیشرفته توصیه می‌شود.

آیا مهاجم می‌تواند پس از پاک‌سازی بازگردد؟

بله، در صورت نبود سخت‌سازی و پایش مستمر، احتمال بازگشت مهاجم وجود دارد. مهاجمان اغلب از چند مسیر برای دسترسی استفاده می‌کنند و اگر یکی از آن‌ها بسته نشود، امکان بازگشت فراهم می‌شود.

آیا پاک‌سازی سایت هک‌شده نیازمند تخصص است؟

پاک‌سازی ساده با ابزارهای خودکار امکان‌پذیر است. اما در موارد پیچیده، به‌ویژه زمانی که نفوذ عمیق است، مشاوره با متخصص امنیت توصیه می‌شود.

نگاه عمیق فنی به پاک‌سازی و بازسازی امنیتی

از منظر مهندسی امنیت، پاک‌سازی سایت هک‌شده یک فرآیند تشخیصی-ترمیمی است که بر پایه مفاهیمی مانند تحلیل دامنه نفوذ، مدل‌سازی تهدید و بازسازی لایه‌های اعتماد بنا شده است. برای مطالعه بیشتر درباره مبانی امنیت وب، می‌توانید به Computer security در ویکی‌پدیا مراجعه کنید.

نخستین بُعد مهندسی، تفاوت میان پاک‌سازی علامتی و پاک‌سازی ریشه‌ای است. پاک‌سازی علامتی، بر حذف فایل‌ها و کدهای شناسایی‌شده توسط اسکنر تمرکز می‌کند. پاک‌سازی ریشه‌ای، بر شناسایی و بستن مسیر ورودی مهاجم تمرکز دارد. اگر مسیر ورودی بسته نشود، مهاجم می‌تواند از همان مسیر یا مسیر مشابه، دوباره نفوذ کند. به همین دلیل، سخت‌سازی پس از پاک‌سازی، بخش جدایی‌ناپذیر فرآیند است.

بُعد دوم، تفاوت میان تحلیل ایستا و تحلیل پویا است. تحلیل ایستا، فایل‌ها و کدها را بدون اجرا بررسی می‌کند. تحلیل پویا، رفتار سیستم را در زمان اجرا مشاهده می‌کند. در پاک‌سازی هک، ترکیب هر دو رویکرد ضروری است. برخی بدافزارها، تنها در زمان اجرا رفتار مخرب بروز می‌دهند و در تحلیل ایستا قابل شناسایی نیستند.

بُعد سوم، تفاوت میان بازسازی مبتنی بر نسخه اصلی و بازسازی مبتنی بر پشتیبان است. بازسازی مبتنی بر نسخه اصلی، فایل‌های هسته و افزونه‌ها را از مخزن رسمی جایگزین می‌کند. بازسازی مبتنی بر پشتیبان، از پشتیبان‌های سایت استفاده می‌کند. رویکرد نخست، برای فایل‌های استاندارد مناسب است. رویکرد دوم، برای فایل‌های سفارشی ضروری است.

بُعد چهارم، تفاوت میان مدیریت نشست (Session Management) و مدیریت توکن است. پس از هک، تمام نشست‌های فعال باید باطل شوند. این کار، از طریق بازنشانی نمک‌های امنیتی و تغییر رمزها انجام می‌شود. توکن‌های API، جداگانه باطل و بازتولید می‌شوند.

بُعد پنجم، تفاوت میان پایش سطح فایل و پایش سطح فرآیند است. پایش سطح فایل، تغییرات فایل‌ها را ردیابی می‌کند. پایش سطح فرآیند، رفتار برنامه‌های در حال اجرا را مشاهده می‌کند. حملات پیشرفته، ممکن است بدون تغییر فایل‌ها، از طریق فرآیندهای در حال اجرا انجام شوند.

بُعد ششم، تفاوت میان سخت‌سازی میزبان (Host Hardening) و سخت‌سازی اپلیکیشن است. سخت‌سازی میزبان، بر پیکربندی سرور، سیستم‌عامل و شبکه تمرکز دارد. سخت‌سازی اپلیکیشن، بر پیکربندی وردپرس، افزونه‌ها و قالب تمرکز دارد. هر دو لایه، بخشی از استراتژی دفاعی هستند.

بُعد هفتم، تفاوت میان پاسخ به حادثه و مدیریت بحران است. پاسخ به حادثه، بر جنبه‌های فنی پاک‌سازی تمرکز دارد. مدیریت بحران، جنبه‌های ارتباطی، حقوقی و تجاری را نیز در نظر می‌گیرد. در سازمان‌های بزرگ، این دو رویکرد باید به‌طور همزمان اجرا شوند.

بُعد هشتم، تفاوت میان تحلیل پس از حادثه (Post-Incident Analysis) و تحلیل پیش از حادثه است. تحلیل پس از حادثه، ریشه‌های نفوذ را بررسی می‌کند تا از تکرار جلوگیری شود. تحلیل پیش از حادثه، تهدیدات بالقوه را شناسایی می‌کند تا پیش از وقوع، اقدامات پیشگیرانه انجام شود. مدل‌سازی تهدید (Threat Modeling)، رویکردی برای تحلیل پیش از حادثه است.

بُعد نهم، تفاوت میان شاخص‌های نفوذ (Indicators of Compromise) و شاخص‌های حمله (Indicators of Attack) است. شاخص‌های نفوذ، نشانه‌های پس از نفوذ موفق هستند. شاخص‌های حمله، نشانه‌های در حال وقوع حمله محسوب می‌شوند. سیستم‌های تشخیص نفوذ مدرن، بر پایه هر دو دسته شاخص عمل می‌کنند.

بُعد دهم، تفاوت میان بازسازی کامل و بازسازی تدریجی است. بازسازی کامل، تمام اجزای سایت را از ابتدا نصب می‌کند. بازسازی تدریجی، تنها اجزای آسیب‌دیده را جایگزین می‌کند. انتخاب میان این دو، به دامنه نفوذ و سطح اطمینان از پاک‌سازی بستگی دارد.

در نهایت، باید به تفاوت میان امنیت و قابلیت اطمینان توجه کرد. امنیت، از نفوذ جلوگیری می‌کند. قابلیت اطمینان، از قطعی سرویس جلوگیری می‌کند. یک سیستم پایدار، باید هر دو ویژگی را به‌طور همزمان داشته باشد. پاک‌سازی هک، فرصتی برای بازنگری در هر دو بُعد است.

نکات کاربردی برای اجرای موفق

  • پیش از هر اقدام، پشتیبان کامل از وضعیت آلوده تهیه کنید.
  • دسترسی مهاجم را در نخستین فرصت قطع کنید.
  • رمز عبور تمام کاربران با نقش حساس را بازنشانی کنید.
  • نمک‌های امنیتی فایل wp-config.php را تغییر دهید.
  • تمام کلیدهای API و توکن‌ها را باطل و بازتولید کنید.
  • افزونه‌ها و قالب‌ها را از منابع رسمی نصب مجدد کنید.
  • هسته وردپرس را با نسخه تازه جایگزین کنید.
  • پایگاه داده را از کدهای تزریقی پاک‌سازی کنید.
  • احراز هویت دو مرحله‌ای را برای همه کاربران حساس فعال کنید.
  • هدرهای امنیتی و HTTPS را پیکربندی کنید.
  • پایش مستمر و پشتیبان‌گیری خودکار را فعال نگه دارید.
  • کاربران و تیم را درباره تهدیدات امنیتی آموزش دهید.
  • پس از پاک‌سازی، سایت را به‌طور کامل تست کنید.
  • درخواست بررسی مجدد در Google Search Console ارسال کنید.
  • ریشه نفوذ را شناسایی و مسیر ورودی را ببندید.

پاک‌سازی و ایمن کردن سایت وردپرس بعد از هک، ترکیبی از دانش فنی، ابزار مناسب و انضباط عملیاتی است. هیچ ابزار خودکاری نمی‌تواند جایگزین درک دقیق از ساختار وردپرس و فرآیندهای امنیتی شود. هدف نهایی، بازگرداندن سایت به عملکرد طبیعی و جلوگیری از نفوذ مجدد است. اگر تجربه‌ای در پاک‌سازی سایت هک‌شده دارید، برای ادامه گفت‌وگو جالب است بدانم کدام مرحله بیشترین چالش را ایجاد کرد و چه درس‌هایی در این مسیر به دست آوردید. تجربه خودتان را در دیدگاه‌ها بنویسید؛ به‌ویژه اگر راه‌حل جایگزینی برای پاک‌سازی یا سخت‌سازی پیدا کرده‌اید که می‌تواند برای خواننده بعدی مفید باشد.