مقدمه
در دنیای امنیت وردپرس، تهدیدها همیشه به شکل یک صفحه هکشده یا یک پیام هشداردهنده بزرگ خود را نشان نمیدهند. بسیاری از خطرناکترین حملات، در سکوت و پشت پرده رخ میدهند؛ جایی که رباتها و هکرها به صورت شبانهروزی در حال کوبیدن به درهای ورودی سایت شما هستند و از مسیرهایی که حتی از وجودشان بیخبرید، برای نفوذ تلاش میکنند. یکی از بدنامترین این مسیرهای پنهان، فایلی به نام xmlrpc.php است که به صورت پیشفرض در هر سایت وردپرسی فعال است.
شاید تا به حال نام XML-RPC را نشنیده باشید، اما این فایل کوچک میتواند به یک شاهراه برای هکرها تبدیل شود تا نوع بسیار خطرناک و تقویتشدهای از حملات Brute Force (تلاش برای ورود با آزمون و خطا) را روی سایت شما اجرا کنند. این حملات نه تنها امنیت سایت را به خطر میاندازند، بلکه با مصرف بیش از حد منابع سرور، وبسایت شما را فلج میکنند.
ما در پشتیان وردپرس معتقدیم که امنیت واقعی از شناخت و مسدودسازی همین تهدیدات خاموش آغاز میشود. در این راهنمay جامع و کاملاً عملی، ابتدا پرونده xmlrpc.php را کالبدشکافی میکنیم، ارتباط مستقیم و خطرناک آن با حملات بروت فورس را فاش میسازیم و به شما نشان میدهیم چگونه این درب پشتی را برای همیشه قفل کنید. سپس، دفاع خود را کامل کرده و به سراغ استراتژیهای هوشمندانه برای محافظت از درب اصلی سایت (صفحه ورود) در برابر تمام انواع حملات Brute Force خواهیم رفت.
همچنین ما در مقاله “شناسایی و حذف بکدور در وردپرس” به طور کامل به مساله شناسایی بکدورها در وردپرس و راهحلهای آنها پرداختیم.
پرونده XML-RPC: شناخت بزرگترین متحد حملات Brute Force
برای اینکه بتوانیم یک تهدید را به درستی مدیریت کنیم، ابتدا باید آن را بشناسیم. بیایید ببینیم XML-RPC چیست و چگونه به ابزار محبوب هکرها برای اجرای حملات بروت فورس تبدیل شده است.
XML-RPC چیست و کاربرد اصلی آن چه بود؟
XML-RPC مخفف عبارت “XML Remote Procedure Call” است. به زبان ساده، این یک پروتکل بود که به سیستمها و برنامههای مختلف اجازه میداد تا از راه دور با وردپرس شما ارتباط برقرار کرده و دستوراتی را اجرا کنند. در گذشته، این قابلیت برای انتشار مطالب از طریق برنامههای دسکتاپ، ارتباط بین وبلاگها (Pingbacks) و برخی افزونهها مانند Jetpack بسیار مفید بود.
اما با گذشت زمان و پیشرفت وردپرس، اکثر این کاربردها منسوخ شدند. امروزه دیگر تقریباً هیچکس از این روشها استفاده نمیکند، اما متاسفانه، این فایل به صورت پیشفرض در تمام نصبهای وردپرس فعال باقی ماند.
ارتباط مرگبار: چگونه XML-RPC حملات Brute Force را تقویت میکند؟
اینجا دقیقاً جایی است که XML-RPC از یک قابلیت قدیمی به یک حفره امنیتی بزرگ تبدیل میشود.
در یک حمله Brute Force عادی، یک ربات برای هر بار تست نام کاربری و رمز عبور، باید یک درخواست به صفحه wp-login.php ارسال کند. افزونههای امنیتی به راحتی میتوانند این الگو را شناسایی کنند (مثلاً ۵ درخواست ناموفق در یک دقیقه) و IP مهاجم را مسدود کنند.
اما فایل xmlrpc.php یک قابلیت ویژه به نام system.multicall دارد. این قابلیت به یک برنامه اجازه میدهد تا چندین دستور را فقط در یک درخواست (Request) به وردپرس ارسال کند. هکرها با سوءاستفاده از این ویژگی، به جای ارسال صدها درخواست جداگانه، لیستی شامل صدها یا هزاران ترکیب نام کاربری و رمز عبور را در قالب فقط یک درخواست به xmlrpc.php میفرستند.
این کار دو پیامد فاجعهبار دارد:
- دور زدن سیستمهای امنیتی: از دید یک افزونه امنیتی، فقط یک درخواست ناموفق آمده است، در حالی که در واقعیت صدها رمز عبور در همان یک درخواست تست شده است. این باعث میشود سیستمهای محدودکننده تلاش برای ورود، کاملاً بیاثر شوند.
- حمله سریعتر و پنهانیتر: هکر میتواند در زمان بسیار کوتاهتر و با شانس شناسایی بسیار کمتر، رمز عبور شما را پیدا کند.
به همین دلیل، اولین و مهمترین قدم برای محدودسازی حملات Brute Force، غیرفعال کردن کامل XML-RPC است.
چگونه بفهمیم XML-RPC در سایت ما فعال است؟
قبل از هر اقدامی، وضعیت این فایل را در سایت خود بررسی کنید. سادهترین راه استفاده از یک ابزار آنلاین رایگان به نام XML-RPC Validator است. کافیست آدرس سایت خود را در این ابزار وارد کنید. اگر پیام موفقیتآمیز دریافت کردید، یعنی این درب پشتی باز است و باید فوراً آن را ببندید.
قفل کردن درب پشتی: ۳ روش قطعی برای غیرفعال سازی XML-RPC
خوشبختانه، غیرفعال کردن این فایل کار دشواری نیست و به سه روش اصلی میتوانید این کار را انجام دهید.
روش اول: استفاده از یک افزونه (سادهترین راه)
اگر با ویرایش کد راحت نیستید، افزونه Disable XML-RPC-API بهترین گزینه است. کافیست آن را نصب و فعال کنید. تمام! این افزونه به صورت خودکار تمام درخواستهای ورودی به xmlrpc.php را مسدود میکند.
روش دوم: افزودن کد به فایل functions.php (روش پیشنهادی)
این روش بدون نیاز به نصب افزونه اضافی، کار را انجام میدهد. وارد «نمایش > ویرایشگر پرونده پوسته» شوید، فایل functions.php را پیدا کرده و کد زیر را در انتهای آن قرار دهید:
PHP
add_filter('xmlrpc_enabled', '__return_false');
روش سوم: مسدودسازی از طریق فایل .htaccess (قدرتمندترین روش)
این روش درخواستها را در سطح سرور و قبل از رسیدن به وردپرس مسدود میکند. وارد File Manager هاست خود شوید، فایل .htaccess را باز کرده و کد زیر را به انتهای آن اضافه کنید:
apache
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
تقویت درب اصلی: دفاع چندلایه در برابر حملات Brute Force
اکنون که خطرناکترین مسیر حمله بروت فورس (XML-RPC) را مسدود کردهاید، نوبت به تقویت درب اصلی، یعنی صفحه ورود (wp-login.php) میرسد. این اقدامات دفاع شما را کامل میکنند.
۱. محدود کردن تلاشهای ناموفق برای ورود (Login Lockdown)
این یکی از مؤثرترین تکنیکهاست. با این روش، شما تعیین میکنید که اگر یک IP مشخص، چند بار (مثلاً ۵ بار) رمز عبور را اشتباه وارد کرد، برای مدت زمان مشخصی (مثلاً ۳۰ دقیقه) مسدود شود. تقریباً تمام افزونههای امنیتی معتبر (مانند Wordfence, Solid Security, All In One WP Security) این قابلیت را به بهترین شکل ارائه میدهند.
۲. تغییر آدرس صفحه ورود وردپرس
رباتها به صورت خودکار به آدرسهای پیشفرض wp-login.php و wp-admin حمله میکنند. با تغییر این آدرس به یک URL منحصربهفرد (مثلاً yoursite.com/my-secret-login)، شما به سادگی از دید ۹۹٪ این رباتها پنهان میشوید. افزونه WPS Hide Login یک ابزار سبک و عالی برای این کار است.
۳. فعالسازی احراز هویت دو مرحلهای (2FA)
احراز هویت دو مرحلهای، قفل نهایی درب ورودی شماست. با فعال کردن 2FA، حتی اگر هکری نام کاربری و رمز عبور شما را به دست آورد، برای ورود به سایت شما به یک کد یکبار مصرف که به گوشی شما ارسال میشود نیز نیاز خواهد داشت. این لایه امنیتی تقریباً نفوذ از طریق صفحه ورود را غیرممکن میکند.
۴. اصول اولیه اما حیاتی: نام کاربری و رمز عبور
- هرگز از نام کاربری “admin” استفاده نکنید. اگر چنین کاربری دارید، فوراً یک مدیر جدید با نامی دیگر بسازید و کاربر “admin” را حذف کنید.
- از رمزهای عبور پیچیده و منحصربهفرد استفاده کنید. یک رمز عبور قوی باید شامل حروف بزرگ و کوچک، اعداد و نمادها باشد و حداقل ۱۲ کاراکتر طول داشته باشد.
نتیجهگیری
امنیت وردپرس یک پازل پیچیده است. همانطور که دیدید، فایل به ظاهر بیاهمیت xmlrpc.php میتواند به عنوان یک تقویتکننده برای حملات Brute Force عمل کرده و تمام تلاشهای امنیتی شما را بیاثر کند. با برداشتن اولین گام هوشمندانه، یعنی غیرفعالسازی کامل XML-RPC، شما خطرناکترین نوع این حملات را در نطفه خفه میکنید.
سپس با پیادهسازی یک استراتژی دفاعی چندلایه برای صفحه ورود خود – شامل محدودسازی تلاشها، پنهان کردن آدرس ورود و استفاده از احراز هویت دو مرحلهای – شما یک دژ مستحکم و نفوذناپذیر میسازید. این اقدامات در کنار هم، سایت شما را از یک هدف آسان به یک قلعه امنیتی تبدیل میکنند.
پیادهسازی این تکنیکهای امنیتی، قدمی حیاتی برای حفاظت از وبسایت شماست. اما دنیای تهدیدات سایبری دائماً در حال تغییر است و امنیت جامع، فراتر از این دو مورد است. بررسی بدافزارها، بهینهسازی تنظیمات سرور، مدیریت دسترسیها و نظارت ۲۴ ساعته، همگی نیازمند زمان، تخصص و هوشیاری دائمی هستند.
اگر میخواهید با خیالی آسوده بر روی رشد کسبوکار خود تمرکز کنید و امنیت وبسایت خود را به تیمی از متخصصان باتجربه بسپارید، ما در پشتیان وردپرس آمادهایم تا به شما کمک کنیم.
برای دریافت یک تحلیل امنیتی رایگان و آشنایی با راهکارهای حرفهای ما، از صفحه خدمات امنیت سایت ما دیدن کنید و اولین قدم را برای تبدیل سایت خود به یک قلعه نفوذناپذیر بردارید!