چگونه وردپرس را در مقابل حملات XML-RPC محافظت کنیم

3.4 / 5. تعداد رای: 5

جلوگیری از دسترسی به XML-RPC
جلوگیری از دسترسی به XML-RPC

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

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

مثلاً اگر روزی یک نفری وارد دیتاسنتر شد و هارد سرور شمارا دزدید این قضیه دیگر مربوط به امنیت وردپرس نیست! بلکه امنیت دیتاسنتر شما است که باید بازبینی شود.

XML-RPC چیست

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

فایل xmlrpc.php
فایل xmlrpc.php

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

  1. خواندن اطلاعات دقیق خطا زمانی که سایت شما خطای دیتابیس دارد.
  2. خواندن اطلاعات زیادی از جمله POST /xmlrpc.php HTTP/1.0 در لاگ وب سرور شما

جلوگیری از دسترسی به XML-RPC

قبلا غیرفعال کردن xml-rpc با افزونه را توضیح داده‌ایم. اما می‌خواهیم افزونه‌های زیادی روی سایت‌مان نصب نکنیم. پس به سراغ فایل htaccess می‌رویم. برای غیر فعال کردن XML RPC در وردپرس کافیست وارد فایل منیجر هاست خود شوید. سپس فایل .htaccess را ویرایش کنید. این فایل در مسیر اصلی public_html سایت شما قرار دارد.

بعد از باز کردن این فایل. در خط اول این کد را قرار دهید:

<files xmlrpc.php>
   order allow,deny
   deny from all
</files>

به همین راحتی! دسترسی به فایل xmlrpc.php مسدود شد و حالا هکر گرامی دسترسی به این فایل نخواهد داشت.

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

بسیاری از شما از وب سرور NGINX استفاده می‌کنید. اگر اینطور است به شما تبریک می‌گوییم چون حتما یک سرور اختصاصی یا نیمه اختصاصی برای سایت خود دارید. اگر از NGINX استفاده می‌کنید، باید در فایل /etc/nginx/nginx.conf این کدها را در بخش server{} قرار دهید.

location = /ahura/xmlrpc.php {
   deny all;
   access_log off;
   log_not_found off;
   return 403;
}

به همین راحتی! دسترسی به فایل xmlrpc.php روی سرور انجین ایکس شما مسدود شد.

چگونه مطمئن شویم xmlrpc.php مسدود است

خیلی راحت! کافیست آدرس mihanwp.com/xmlrpc.php را در مرورگر خود باز کنید. اگر خطای ۴۰۳ یا ۴۰۴ دریافت کردید یعنی xmlrpc.php روی سایت ما مسدود است. حالا همین کار را با وارد کردن دامنه خود به جای mihanwp.com تست کنید. اگر روی سایت شما هم مسدود بود پس کار درست را انجام داده‌اید. 🙂

موفق و پیروز باشید.

نکته خاصی هست که این مقاله رو تکمیل‌تر کنه؟

  1. U331710 ۱۵ فروردین ۱۴۰۳

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

  2. U331710 ۱۵ فروردین ۱۴۰۳

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

  3. U331371 ۲۳ آبان ۱۴۰۲

    سلام روزتون بخیر
    من اخیرا متوجه شدم در قسمت پیشخوان وردپرسم قسمت مانیتور 404 به طرز عجیبی و بسیار زیاد تعداد url ها و تعداد گزارشات داره میره بالا وقتی روی ایکون نمودار بالای url ها کلیک کردم متوجه شدم %90 تمامیه این url ها از xmlrpc.php هست و از طریق این اموزش شما کد رو اضاف کردم اما همچنان ادامه داشت و حتی من xmlrpc.php رو در وردپرس غیر فعال کردم با یک اموزش دیگتون اما همچنان تعداد url ها از xmlrpc.php داره افزایش پیدا میکنه نمیدونم چیکار کنم ممنون میشم راهنماییم کنید

    • Reza Rad رضا راد ۲۴ آبان ۱۴۰۲

      سلام طبیعیه. میتونید این آدرس رو ریدایرکت کنید. آموزش خطای ۴۰۴ رو توی سایت ببینید.

  4. U14500 ۱۹ خرداد ۱۳۹۹

    سلام وقت بخیر

    من هم کد شما رو تست کردم و هم در افزونه امنیت کامل وردپرس، بخش xmlrpc را غیرفعال کردم ولی هیچ تاثیری نداشت و این بخش اصلا مسدود نشده!
    به نظرتون مشکل از کجاست؟

    ممنون

  5. U17509 ۱۹ خرداد ۱۳۹۹

    سلام و تشکر, ما روی سایت بررسی کردیم عبارت XML-RPC server accepts POST requests only نمایش داده می شود.
    آیا لازم است طبق راهنمایی شما عمل کنیم یا نیازی نیست کاری انجام شود؟
    جهت اطلاع افزونه وردفنس نصب شده است, آیا کافی می باشد؟