SHET22

جلوگیری از حملات Brute Force در وردپرس؛ راهنمای کامل

جلوگیری از حملات Brute Force در وردپرس؛ راهنمای کامل

برای جلوگیری از حملات Brute Force در وردپرس فقط نصب یک افزونه کافی نیست. بهتره چند لایه دفاعی کنار هم داشته باشید: رمز منحصربه‌فرد، ورود دومرحله‌ای یا Passkey، محدودیت تلاش ورود، محافظت از xmlrpc.php و فایروال هاست یا CDN. توی این راهنما همه این کارها رو قدم‌به‌قدم و بدون اصطلاحات پیچیده یاد می‌گیرید.

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

آنچه در این مقاله می‌خوانید

حمله Brute Force در وردپرس چیه و چطور انجام می‌شه؟

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

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

چرا حتی تلاش‌های ناموفق هم به سایتتون فشار میارن؟

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

نشانه‌های حمله Brute Force روی سایت وردپرسی

  • تعداد زیادی تلاش ورود ناموفق در زمان کوتاه می‌بینید.
  • از کشورها یا IPهای ناشناس درخواست‌های تکراری دریافت می‌کنید.
  • صفحه ورود یا کل سایت ناگهان کند می‌شه.
  • هشدارهای ورود ناموفق یا مسدودی پشت سر هم به ایمیلتون می‌رسن.
  • در گزارش سرور، درخواست‌های زیاد برای wp-login.php یا xmlrpc.php می‌بینید.

برای دیدن درخواست‌های واقعی سرور می‌تونید از راهنمای بررسی Access Log کمک بگیرید. Access Log همون گزارشی هست که آدرس درخواست‌ها، زمان مراجعه و IP بازدیدکننده رو ثبت می‌کنه.

بهترین روش‌های جلوگیری از حملات Brute Force در وردپرس

از رمز قوی و منحصربه‌فرد استفاده کنید

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

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

ورود دومرحله‌ای یا Passkey رو فعال کنید

ورود دومرحله‌ای یا 2FA بعد از رمز، یک کد موقت هم از شما می‌خواد. Passkey هم روشی برای ورود با قفل صفحه گوشی، اثر انگشت یا ابزار امن دستگاهه. با این لایه‌ها، داشتن رمز به‌تنهایی برای ورود مهاجم کافی نیست.

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

تعداد تلاش‌های ورود رو محدود کنید

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

از فایروال هاست یا CDN کمک بگیرید

WAF یا فایروال برنامه وب، درخواست مشکوک رو قبل از رسیدن به وردپرس بررسی می‌کنه. CDN هم شبکه‌ایه که درخواست‌ها رو از سرورهای واسطه عبور می‌ده و ممکنه امکانات فایروال و محدودسازی نرخ داشته باشه. اگه هاستتون این قابلیت رو ارائه می‌ده، درباره محافظت از wp-login.php و xmlrpc.php از پشتیبانی سؤال کنید.

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

نام کاربری مدیر سایت رو قابل حدس نذارید

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

یادتون باشه نام نمایشی نویسنده لزوماً نام کاربری ورود نیست. بااین‌حال، بهتره اطلاعات ورود رو توی آدرس آرشیو یا بخش‌های عمومی سایت آشکار نکنید. برای این بخش می‌تونید آدرس آرشیو نویسنده رو تغییر بدید.

وردپرس، قالب و افزونه‌ها رو به‌روز نگه دارید

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

صفحه به‌روزرسانی هسته وردپرس، افزونه‌ها و قالب‌ها در پیشخوان
صفحه به‌روزرسانی هسته وردپرس، افزونه‌ها و قالب‌ها در پیشخوان

آموزش محدودکردن تلاش ورود در وردپرس

چطور یک افزونه معتبر و فعال انتخاب کنید؟

توی پیشخوان وردپرس به «افزونه‌ها ← افزودن افزونه تازه» برید و عبارت‌هایی مثل Login Attempts یا Security رو جست‌وجو کنید. قبل از نصب، تاریخ آخرین به‌روزرسانی، سازگاری با نسخه وردپرس، تعداد نصب فعال، امتیاز کاربران و پاسخ‌گویی بخش پشتیبانی رو ببینید.

نتیجه جست‌وجوی افزونه All-In-One Security در بخش افزودن افزونه وردپرس
نتیجه جست‌وجوی افزونه All-In-One Security در بخش افزودن افزونه وردپرس

افزونه‌ای انتخاب کنید که محدودیت موقت، ثبت گزارش ورود، فهرست IPهای مورد اعتماد و امکان بازیابی دسترسی داشته باشه. اگه یک بسته امنیتی کامل می‌خواید، می‌تونید افزونه امنیتی All In One WP Security رو بررسی کنید. اسم و جای گزینه‌ها ممکنه با هر به‌روزرسانی فرق کنه، پس توضیح کنار هر تنظیم رو هم بخونید.

نصب و فعال‌کردن افزونه از پیشخوان وردپرس

  1. از منوی پیشخوان وارد «افزونه‌ها ← افزودن افزونه تازه» بشید.
  2. نام دقیق افزونه انتخابی رو جست‌وجو کنید و سازنده اون رو بررسی کنید.
  3. روی «هم‌اکنون نصب نمایید» و بعد «فعال نمایید» کلیک کنید. این دو عبارت ممکنه توی ترجمه پیشخوان کمی متفاوت دیده بشن.
  4. صفحه تنظیمات امنیت یا محدودیت ورود افزونه رو باز کنید.
  5. قبل از تغییر تنظیمات، یک نسخه پشتیبان سالم داشته باشید.

تنظیم تعداد تلاش‌های ناموفق

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

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

تنظیم تعداد تلاش‌های ناموفق
تنظیم تعداد تلاش‌های ناموفق

تنظیم مدت مسدودی و بازنشانی تلاش‌ها

مسدودی اولیه رو موقت تنظیم کنید؛ مثلاً ۱۵ تا ۳۰ دقیقه. اگه یک IP چند بار پشت سر هم دوباره به حد مجاز رسید، افزونه می‌تونه مدت مسدودی بعدی رو بیشتر کنه. این روش برای کاربران واقعی فرصت برگشت می‌ذاره و هم‌زمان سرعت حمله رو کم می‌کنه.

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

تنظیم هشدار ایمیلی برای مدیر سایت

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

مدیریت فهرست IPهای مسدود و مورد اعتماد

فهرست مسدودها رو هرچند وقت یک‌بار بررسی کنید و IPهای قدیمی رو برای همیشه نگه ندارید. خیلی از کاربران اینترنت IP ثابت ندارن و ممکنه یک IP بعداً به شخص دیگه‌ای برسه.

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

آزمایش تنظیمات بدون قفل‌شدن حساب مدیر

  1. اول مطمئن بشید به پنل هاست یا فایل‌های سایت دسترسی دارید.
  2. یک حساب آزمایشی با نقش پایین مثل مشترک بسازید.
  3. آزمایش رو در مرورگر خصوصی و با حساب آزمایشی انجام بدید.
  4. رسیدن هشدار ایمیلی و ثبت گزارش رو بررسی کنید.
  5. بعد از پایان زمان مسدودی، ورود دوباره رو امتحان کنید.
فرم ساخت حساب آزمایشی با نقش مشترک در پیشخوان وردپرس
فرم ساخت حساب آزمایشی با نقش مشترک در پیشخوان وردپرس

محافظت از xmlrpc.php در برابر حملات ورود

فایل xmlrpc.php چیه و چه زمانی بهش نیاز دارید؟

xmlrpc.php یک مسیر ارتباطی در وردپرسه که بعضی برنامه‌ها و سرویس‌های بیرونی ازش برای ارتباط با سایت استفاده می‌کنن. مهاجم‌ها هم ممکنه از همین مسیر برای فرستادن تعداد زیادی تلاش ورود کمک بگیرن.

قبل از بستن این مسیر بررسی کنید اپلیکیشن موبایل، سرویس انتشار از راه دور یا ابزار متصل به سایتتون بهش نیاز داره یا نه. اگه مطمئن نیستید، از پشتیبانی هاست یا سازنده سرویس متصل سؤال کنید.

محدودسازی یا غیرفعال‌کردن xmlrpc.php

اگه به xmlrpc.php نیاز ندارید، می‌تونید دسترسی بهش رو با افزونه امنیتی، فایروال هاست یا تنظیم سرور ببندید. اگه بهش نیاز دارید، محدودسازی نرخ درخواست گزینه مناسب‌تریه. بعد از هر تغییر، ابزارها و سرویس‌های متصل رو آزمایش کنید تا ارتباط ضروری سایت قطع نشده باشه.

محدودسازی ورود از طریق هاست، سرور و CDN

تفاوت محدودسازی نرخ درخواست با مسدودکردن دائمی IP

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

نکات مهم برای سایت‌های Apache و فایل .htaccess

فایل .htaccess بیشتر روی سرور Apache کاربرد داره و یک اشتباه کوچک توی اون ممکنه سایت رو با خطای 500 روبه‌رو کنه. قبل از تغییر، نسخه پشتیبان فایل رو بگیرید و مطمئن بشید راه دسترسی به پنل هاست دارید. کد آماده و ناشناس رو هم بدون بررسی نوع سرور و نیاز سایت کپی نکنید.

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

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

Nginx از .htaccess استفاده نمی‌کنه و قوانینش در تنظیمات سرور قرار می‌گیرن. روی هاست اشتراکی یا مدیریت‌شده معمولاً به این فایل‌ها دسترسی ندارید. در این حالت از پنل امنیتی هاست، WAF، CDN یا درخواست از پشتیبانی استفاده کنید. تغییر مستقیم تنظیمات سرور فقط وقتی مناسبه که دانش فنی و امکان برگشت امن داشته باشید.

اگه از سایتتون قفل شدید، چطور دوباره وارد بشید؟

رفع مسدودی IP مدیر سایت

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

غیرفعال‌کردن موقت افزونه از پنل هاست

اگه صفحه ورود کاملاً بسته شده، از File Manager پنل هاست وارد پوشه wp-content/plugins بشید. پوشه افزونه‌ای رو که محدودیت ورود ایجاد کرده موقتاً تغییر نام بدید. وردپرس با پیدانکردن پوشه، افزونه رو غیرفعال می‌کنه. بعد وارد پیشخوان بشید، علت مشکل رو برطرف کنید و نام پوشه رو به حالت قبلی برگردونید.

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

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

بعد از برگشتن به سایت، گزارش افزونه امنیتی، Access Log و رخدادهای فایروال رو بررسی کنید. ببینید مسدودی به‌خاطر رمز اشتباه، تشخیص نادرست IP پشت CDN یا تنظیم خیلی سخت اتفاق افتاده. بعد فقط همون تنظیم مشکل‌دار رو اصلاح کنید و دوباره با حساب آزمایشی تست بگیرید.

اشتباه‌های رایج موقع مقابله با حملات Brute Force

  • تکیه‌کردن به مسدودسازی دائمی IP: مهاجم می‌تونه IP رو عوض کنه و بعضی IPها هم بعداً به کاربران واقعی برسن.
  • انتخاب محدودیت خیلی سخت برای کاربران واقعی: دو اشتباه ساده نباید باعث قفل طولانی حساب مشتری یا مدیر بشه.
  • نادیده‌گرفتن ورود دومرحله‌ای و رمز قوی: محدودیت تلاش جای این دو لایه مهم رو نمی‌گیره.
  • تغییر تنظیمات سرور بدون نسخه پشتیبان: یک قانون اشتباه ممکنه دسترسی کل سایت رو قطع کنه.
  • تصور اینکه یک افزونه امنیت کامل سایت رو تضمین می‌کنه: امنیت سایت به به‌روزرسانی، تنظیم سرور، سطح دسترسی و پایش منظم هم وابسته‌ست.
  • تغییر آدرس ورود و رهاکردن بقیه لایه‌ها: تغییر URL می‌تونه درخواست‌های ساده و ربات‌های کم‌هوش رو کمتر کنه، ولی جای محافظت واقعی رو نمی‌گیره. برای شناخت گزینه‌ها می‌تونید افزونه‌های تغییر صفحه ورود وردپرس رو بررسی کنید.

چک‌لیست نهایی امن‌کردن صفحه ورود وردپرس

  1. یک رمز منحصربه‌فرد بسازید و اون رو در مدیر رمز عبور نگه دارید.
  2. ورود دومرحله‌ای یا Passkey رو برای مدیرها فعال کنید.
  3. تلاش‌های ورود و نرخ درخواست رو با محدودیت موقت کنترل کنید.
  4. xmlrpc.php رو بر اساس نیاز واقعی سایت محدود یا غیرفعال کنید.
  5. فایروال رو فعال کنید و گزارش ورودها رو منظم ببینید.
  6. وردپرس، قالب و افزونه‌ها رو به‌روز نگه دارید.
  7. راه بازیابی دسترسی و نسخه پشتیبان سالم داشته باشید.

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

سؤالات متداول

آیا محدودکردن تلاش ورود برای جلوگیری از Brute Force کافیه؟

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

چند تلاش ناموفق برای ورود مناسب هست؟

برای شروع، ۴ تا ۶ تلاش ناموفق معمولاً انتخاب متعادلیه. عدد نهایی به نوع سایت و رفتار کاربران بستگی داره؛ پس گزارش‌ها رو بررسی کنید و محدودیت رو خیلی سخت نذارید.

آیا تغییر آدرس ورود وردپرس جلوی Brute Force رو می‌گیره؟

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

آیا بهتره xmlrpc.php رو غیرفعال کنید؟

اگه هیچ برنامه یا سرویس متصلی به xmlrpc.php نیاز نداره، بستن اون می‌تونه سطح حمله رو کمتر کنه. اگه بهش نیاز دارید، محدودسازی نرخ درخواست انتخاب مناسب‌تریه. بعد از تغییر هم سرویس‌های متصل رو آزمایش کنید.

چرا مسدودکردن IP همیشه حمله رو متوقف نمی‌کنه؟

چون حمله ممکنه از IPهای متعدد انجام بشه و IP بعضی کاربران هم ثابت نباشه. محدودسازی موقت نرخ درخواست و تشخیص الگو معمولاً از ساختن یک فهرست بلند مسدودی نتیجه بهتری می‌ده.

جمع‌بندی

برای جلوگیری از حملات Brute Force در وردپرس بهتره به یک راهکار تکی وابسته نباشید. رمز قوی، ورود دومرحله‌ای یا Passkey، محدودیت موقت تلاش‌های ورود، محافظت از xmlrpc.php و فایروال کنار هم دفاع خیلی بهتری می‌سازن. به‌روزرسانی وردپرس، قالب و افزونه‌ها هم کمک می‌کنه مسیرهای امنیتی دیگه باز نمونن.

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

نظر شما در این مورد چیه؟

  1. U314490۲۱ شهریور ۱۴۰۳

    در صورت نصب افزونه امنیتی مثل wordfence & AIOS نیازی به نصب این افزونه هم هست؟

  2. کاربر مهمان۲۰ مرداد ۱۳۹۷

    متشکرم از مقالات کاربردی و مفیدتون

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.