SHET22

محدود کردن ورود ناموفق در وردپرس؛ آموزش کامل

محدود کردن ورود ناموفق در وردپرس؛ آموزش کامل

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

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

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

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

چرا وردپرس خودش این قابلیت رو نداره؟

سؤال خوبیه و بذارید همین اول تکلیفش رو روشن کنیم.

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

توی وردپرس هم داستان همینه. شاید یه سایت اصلاً کاربر عضو نداشته باشه و همچین قابلیتی براش کاربردی نباشه. برای همین وردپرس این کار رو سپرده دست توسعه‌دهنده‌ها و افزونه‌ها. شما هم با نصب یه افزونه ساده می‌تونید این قابلیت رو به سایتتون اضافه کنید.

با کدوم افزونه ورود ناموفق رو محدود کنیم؟

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

افزونه Limit Login Attempts Security، پیشنهاد اول ما

این افزونه همون Limit Login Attempts Reloaded قدیمیه که اسم نمایشش به Limit Login Attempts Security تغییر کرده؛ البته شناسه و آدرسش در WordPress.org هنوز limit-login-attempts-reloaded هست. صفحه رسمی WordPress.org در زمان بررسی این مقاله بیشتر از ۱ میلیون نصب فعال رو نشون می‌ده.

افزونه WP Limit Login Attempts
افزونه WP Limit Login Attempts

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

  • محدود کردن تعداد ورود ناموفق و مسدود کردن موقت IP
  • محافظت از wp-login.php و ورود به wp-admin
  • محافظت از ورود از طریق xmlrpc.php
  • محافظت از فرم ورود ووکامرس و فرم‌های ورود سفارشی
  • احراز هویت دو مرحله‌ای یا 2FA؛ یعنی درخواست یه کد اضافه بعد از رمز عبور
  • فایروال و فهرست IPهای مجاز یا مسدود

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

افزونه WP Limit Login Attempts، گزینه سبک

افزونه WP Limit Login Attempts
افزونه WP Limit Login Attempts

افزونه WP Limit Login Attempts بیشتر از ۱۰ هزار نصب فعال داره و سازنده اون رو یه افزونه سبک معرفی می‌کنه. صفحه رسمی افزونه، محدود کردن تلاش‌های ورود، مسدودسازی موقت IP و کپچا رو جزو قابلیت‌هاش آورده. اگه سایتتون کوچیکه و فقط یه راه ساده برای محدود کردن ورود می‌خواید، می‌تونید این گزینه رو هم بررسی کنید.

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

خلاصه مقایسه

Limit Login Attempts SecurityWP Limit Login Attempts
نصب فعال در زمان بررسی۱ میلیون+۱۰ هزار+
تنظیم تعداد تلاش و زمان قفل در نسخه رایگاندر صفحه رسمی تأیید شدهجزئیاتش رو در نسخه نصب‌شده بررسی کنید
محافظت از ورود XML-RPCدر صفحه رسمی ذکر شدهدر صفحه رسمی ذکر نشده
احراز هویت دو مرحله‌ایدر صفحه رسمی ذکر شدهدر صفحه رسمی ذکر نشده
مناسب برایسایت‌هایی که امکانات امنیتی بیشتری می‌خوانسایت‌هایی که محدودسازی ساده و سبک می‌خوان

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

این افزونه‌ها چطور کار می‌کنن؟

سازوکارشون خیلی ساده‌ست و خوبه بدونید پشت پرده چه خبره.

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

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

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

نصب و راه‌اندازی

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

بعد از فعال‌سازی، افزونه یه منوی مخصوص توی پیشخوان اضافه می‌کنه که تنظیماتش اونجاست. جای دقیق منو ممکنه با نسخه افزونه فرق داشته باشه. توی WP Limit Login Attempts معمولاً باید تنظیمات مربوط به افزونه رو زیر منوی تنظیمات پیدا کنید.

تنظیمات افزونه WP Limit Login Attempts
تنظیمات افزونه WP Limit Login Attempts

تنظیمات پیشنهادی

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

  • تعداد تلاش مجاز: ۴ یا ۵ بار
  • مدت قفل اولیه: ۲۰ دقیقه
  • تعداد قفل تا مسدودسازی طولانی: ۴ بار
  • مدت مسدودسازی طولانی: ۲۴ ساعت
  • بازنشانی شمارنده: بعد از ۱۲ ساعت

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

قبل از افزودن IP به فهرست مجاز، نوع اتصال رو بررسی کنید

این نکته رو جدی بگیرید، چون تقریباً برای همه یه بار پیش میاد.

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

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

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

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

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

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

اگه به XML-RPC نیاز ندارید، دسترسی ورودش رو محدود کنید

این بخش مهمیه که خیلی از مقاله‌ها فراموشش می‌کنن.

xmlrpc.php یه نقطه ارتباطیه که بعضی اپلیکیشن‌ها و سرویس‌های بیرونی برای وصل شدن به وردپرس ازش استفاده می‌کنن. یکی از قابلیت‌های XML-RPC به اسم system.multicall اجازه می‌ده چند فراخوانی داخل یه درخواست فرستاده بشه و همین موضوع می‌تونه برای تلاش‌های ورود سوءاستفاده بشه.

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

یادتون نره بعضی روش‌های وردپرس فقط بخش‌های نیازمند احراز هویت XML-RPC رو می‌بندن و کل فایل رو از دسترس خارج نمی‌کنن. پس بعد از اعمال تنظیمات، نتیجه رو آزمایش کنید و مطمئن بشید سرویس‌های لازم سایتتون از کار نیفتادن.

آدرس صفحه ورود رو فقط به‌عنوان یه لایه فرعی عوض کنید

ربات‌های ساده معمولاً اول سراغ آدرس‌های پیش‌فرض مثل wp-login.php و wp-admin می‌رن. تغییر آدرس ورود به یه عبارت اختصاصی می‌تونه بخشی از درخواست‌های خودکار و مزاحم رو کم کنه.

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

احراز هویت دو مرحله‌ای یا 2FA رو فعال کنید

فرض کنید یه مهاجم با VPN و پروکسی‌های چرخشی مدام IP خودش رو عوض می‌کنه و از محدودیت ورود رد می‌شه. حتی اگه رمز عبورتون هم لو رفته باشه، 2FA یه مانع مهم دیگه جلوی ورودش می‌ذاره.

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

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

محدودسازی رو در لایه کلودفلر انجام بدید

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

اگه از کلودفلر استفاده می‌کنید، قابلیت درست برای شمردن درخواست‌های تکراری Rate Limiting Rules کلودفلر هست. با این قابلیت می‌تونید درخواست‌های پرتکرار به مسیرهایی مثل wp-login.php رو قبل از رسیدن به هاست محدود کنید. فیلدها، سقف‌ها و امکانات قابل‌استفاده به پلن کلودفلر بستگی دارن؛ پس قبل از ساخت قانون، مستندات مربوط به پلنتون رو بررسی کنید.

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

سؤالات پرتکرار

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

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

نسخه رایگان کافیه؟

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

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

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

جمع‌بندی

می‌تونید یه افزونه معتبر برای محدود کردن ورود ناموفق نصب کنید، تنظیمات تشخیص IP رو بررسی کنید، اگه IP ثابت دارید با احتیاط از فهرست مجاز استفاده کنید و ورود XML-RPC رو هم نادیده نگیرید. بعدش 2FA، رمز منحصربه‌فرد و محدودسازی در لایه CDN یا فایروال رو به این ترکیب اضافه کنید.

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

موفق باشید. 🙂

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

  1. U311363۱۶ بهمن ۱۴۰۰

    سلام وقتتون بخیر
    خیلی پست مفیدی بود ممنون از سایت خوب میهن وردپرس

    • تیم پشتیبانیتیم پشتیبانی۱۷ بهمن ۱۴۰۰

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

  2. U21960۱۴ خرداد ۱۳۹۹

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

    • تیم پشتیبانیتیم پشتیبانی۱۷ خرداد ۱۳۹۹

      سلام
      خیر مشکلی پیش نمیاد

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسخارج از ساعات کاری هستیم؛ دستیار هوش مصنوعی پاسخگوی شماست.هوش مصنوعی

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

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