banner
چطور با غیرفعال کردن XML-RPC در وردپرس از هک شدن سایت پیشگیری کنیم؟

چطور با غیرفعال کردن XML-RPC در وردپرس از هک شدن سایت پیشگیری کنیم؟

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

0 29 شهریور 1405

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

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

XML-RPC  در وردپرس چیست؟

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

در واقع عبارت XML-RPC از دو بخش تشکیل شده است:

  • XML  یا Extensible Markup Language که قالبی برای تبادل داده است.
  • RPC  یا Remote Procedure Call که امکان اجرای درخواست ها از یک سیستم دیگر را فراهم می کند.

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

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

امروزه وردپرس دارای REST API  است که امکانات گسترده تری برای ارتباط میان وردپرس و سرویس های مختلف ارائه می دهد. به همین دلیل، بسیاری از سایت ها دیگر نیازی به XML-RPC ندارند.

چرا XML-RPC می تواند یک خطر امنیتی باشد؟

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

یکی از شناخته شده ترین کاربردهای سوءاستفاده از  XML-RPC، حملات Brute Force یا حدس زدن نام کاربری و رمز عبور است.

  • افزایش امکان حملات  Brute Force

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

XML-RPC  می تواند در برخی سناریوها برای ارسال تعداد زیادی تلاش ورود مورد سوءاستفاده قرار بگیرد. یکی از روش های شناخته شده در این زمینه، استفاده از قابلیت system.multicall  برای قرار دادن چندین درخواست در یک درخواست HTTP است.

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

  • افزایش فشار روی سرور

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

اگر تعداد درخواست ها زیاد باشد، مصرف  CPU، RAM، پردازش PHP و حتی منابع دیتابیس افزایش پیدا می کند. در سایت هایی که منابع محدودی دارند، چنین شرایطی می تواند باعث کند شدن سایت شود.

  • استفاده در حملات  DDoS

در برخی حملات، XML-RPC  می تواند بخشی از زنجیره سوء استفاده برای ایجاد ترافیک و فشار غیرعادی باشد.

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

آیا باید XML-RPC را در همه سایت های وردپرسی غیرفعال کنیم؟

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

آیا باید XML-RPC را در همه سایت های وردپرسی غیرفعال کنیم؟

برای مثال، بعضی سرویس ها و افزونه های وردپرسی ممکن است برای بخشی از امکانات خود به XML-RPC نیاز داشته باشند.  Jetpack یکی از نمونه های شناخته شده است.

بنابراین قبل از مسدود کردن xmlrpc.php، باید مشخص کنید آیا سرویس یا افزونه ای در سایت شما از آن استفاده می کند یا خیر.

اگر سایت شما هیچ استفاده ای از XML-RPC ندارد، غیرفعال کردن آن می تواند یکی از اقدامات مناسب برای کاهش سطح حمله سایت باشد.

چگونه بفهمیم XML-RPC در وردپرس فعال است؟

یکی از ساده ترین روش ها، بررسی مستقیم آدرس XML-RPC سایت است.

در مرورگر آدرس زیر را وارد کنید:

https://example.com/xmlrpc.php

به جای example.com  دامنه سایت خودتان را قرار دهید.

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

XML-RPC server accepts POST requests only.

معمولاً به این معناست که endpoint مربوط به XML-RPC در دسترس است.

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

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

روش های غیرفعال کردن XML-RPC در وردپرس

برای غیرفعال کردن XML-RPC در وردپرس چند روش مختلف وجود دارد. انتخاب روش مناسب به دسترسی شما به سرور و ساختار سایت بستگی دارد.

روش اول: غیرفعال کردن XML-RPC با فایل htaccess

غیرفعال کردن XML-RPC با فایل htaccess

اگر سایت شما روی وب سرور Apache اجرا می شود، می توانید دسترسی مستقیم به xmlrpc.php  را از طریق فایل .htaccess  مسدود کنید.

ابتدا وارد File Manager هاست یا SFTP شوید و فایل .htaccess  را در ریشه وردپرس پیدا کنید.

در برخی پیکربندی های Apache می توانید این کد را اضافه کنید:

<Files “xmlrpc.php”>

    Require all denied

</Files>

در برخی سرورهای قدیمی تر نیز ممکن است ساختار زیر استفاده شود:

<Files xmlrpc.php>

    Order Deny,Allow

    Deny from all

</Files>

این روش باعث می شود درخواست های مستقیم به فایل xmlrpc.php  توسط وب سرور مسدود شوند.

نکته مهم قبل از تغییر  htaccess

قبل از ویرایش .htaccess  یک نسخه پشتیبان از فایل تهیه کنید.

یک اشتباه در این فایل می تواند باعث اختلال در دسترسی به سایت یا ایجاد خطای 500 Internal Server Error شود.

روش دوم: غیرفعال کردن XML-RPC با کد وردپرس

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

کد زیر را می توانید در functions.php  قالب فرزند یا در یک افزونه اختصاصی قرار دهید:

add_filter(‘xmlrpc_enabled’, ‘__return_false’);

پس از اضافه کردن این کد، وردپرس XML-RPC را غیرفعال می کند.

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

استفاده از Child Theme  یا افزونه ای مانند Code Snippets می تواند مدیریت این نوع تغییرات را ساده تر کند.

آیا این کد فایل xmlrpc.php را حذف می کند؟

خیر. این کد فایل xmlrpc.php را از سرور حذف نمی کند  بلکه قابلیت XML-RPC وردپرس را غیرفعال می کند.

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

روش سوم: استفاده از افزونه امنیتی برای غیرفعال کردن XML-RPC

استفاده از افزونه امنیتی برای غیرفعال کردن XML-RPC 

اگر با کدنویسی یا تنظیمات سرور آشنا نیستید، می توانید از افزونه های امنیتی وردپرس برای کنترل XML-RPC استفاده کنید. مزیت این روش این است که بعضی افزونه های امنیتی علاوه بر مسدود کردن  XML-RPC، امکان مشاهده فعالیت های مشکوک، ثبت لاگ و مدیریت درخواست های مخرب را نیز فراهم می کنند.

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

قبل از غیرفعال کردن XML-RPC چه چیزهایی را بررسی کنیم؟

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

قبل از این کار بهتر است چند مورد را بررسی کنید:

افزونه های متصل به سایت

لیست افزونه های فعال را بررسی کنید و ببینید آیا یکی از آن ها به XML-RPC نیاز دارد یا خیر.

اپلیکیشن های موبایل

اگر سایت خود را از طریق یک اپلیکیشن موبایل یا ابزار شخص ثالث مدیریت می کنید، وابستگی آن سرویس به XML-RPC را بررسی کنید.

Jetpack  و سرویس های مشابه

در صورت استفاده از Jetpack یا سرویس های مشابه، قبل از غیرفعال کردن XML-RPC مستندات آن سرویس را بررسی کنید.

لاگ های سرور

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

بهترین روش برای تصمیم گیری درباره XML-RPC چیست؟

به جای اینکه صرفاً بر اساس نگرانی امنیتی XML-RPC را غیرفعال کنید، بهتر است یک فرآیند سه مرحله ای داشته باشید:

مرحله اول: شناسایی

بررسی کنید چه سرویس ها و افزونه هایی ممکن است از XML-RPC استفاده کنند.

مرحله دوم: مانیتورینگ

در صورت استفاده از ابزار امنیتی یا لاگ سرور، برای مدتی درخواست های XML-RPC را بررسی کنید و ببینید آیا درخواست معتبر و موردنیازی وجود دارد یا خیر.

مرحله سوم: مسدودسازی

اگر مشخص شد سایت شما به XML-RPC نیاز ندارد، می توانید آن را از طریق وب سرور، کد وردپرس یا افزونه امنیتی مسدود کنید.

این رویکرد نسبت به غیرفعال کردن مستقیم و بدون بررسی، ریسک ایجاد اختلال را کمتر می کند.

بعد از غیرفعال کردن XML-RPC در وردپرس چگونه آن را تست کنیم؟

بعد از اعمال تغییرات، دوباره آدرس زیر را بررسی کنید:

https://example.com/xmlrpc.php

اگر دسترسی به XML-RPC طبق تنظیمی که اعمال کرده اید مسدود شده باشد، دیگر نباید endpoint به شکل قبل در دسترس باشد.

علاوه بر این، بخش های مختلف سایت را نیز تست کنید:

  • ورود به پیشخوان وردپرس
  • انتشار و ویرایش نوشته ها
  • فرم های سایت
  • اتصال سرویس های خارجی
  • افزونه های متصل به سرویس های شخص ثالث
  • اپلیکیشن های موبایل در صورت استفاده

اگر بعد از غیرفعال کردن XML-RPC یکی از سرویس های سایت دچار مشکل شد، تنظیمات جدید را بررسی کنید و در صورت نیاز XML-RPC را برای سرویس موردنظر دوباره فعال کنید.

آیا غیرفعال کردن XML-RPC به تنهایی امنیت وردپرس را تضمین می کند؟

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

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

  • به روزرسانی منظم وردپرس، قالب و افزونه ها
  • نسخه های قدیمی ممکن است دارای آسیب پذیری های شناخته شده باشند.
  • استفاده از رمز عبور قوی و احراز هویت دومرحله ای
  • امنیت حساب مدیر سایت اهمیت بسیار زیادی دارد.
  • محدود کردن تلاش های ورود
  • محدود کردن Login Attempt می تواند تعداد زیادی از حملات Brute Force را دشوارتر کند.
  • استفاده از فایروال و ابزارهای امنیتی
  • Web Application Firewall  و سیستم های تشخیص رفتار مشکوک می توانند لایه دیگری از امنیت ایجاد کنند.
  • تهیه نسخه پشتیبان منظم

در صورت بروز مشکل، Backup سالم می تواند امکان بازیابی سایت را فراهم کند.

انتخاب زیرساخت مناسب

امنیت وردپرس فقط داخل وردپرس اتفاق نمی افتد. تنظیمات وب سرور، PHP، SSL، فایروال و منابع سرور نیز روی پایداری و امنیت سایت تأثیر دارند.

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

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

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

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

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

 

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

یکی از دلایل توجه به XML-RPC، امکان سوءاستفاده از آن در برخی حملات ورود و ایجاد فشار روی منابع سرور است.

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

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

هاست ایمن وردپرس برای سایت های حرفه ای

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

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

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

XML-RPC در وردپرس چیست؟

XML-RPC پروتکلی برای برقراری ارتباط میان وردپرس و سرویس ها یا برنامه های خارجی است و امکان ارسال برخی درخواست ها به سایت وردپرسی را فراهم می کند.

آیا غیرفعال کردن XML-RPC باعث افزایش امنیت وردپرس می شود؟

در سایتی که نیازی به XML-RPC ندارد، مسدود کردن آن می تواند یکی از اقدامات کاهش سطح حمله باشد و جلوی برخی سوءاستفاده های مرتبط با این endpoint را بگیرد  اما به تنهایی امنیت کامل سایت را تضمین نمی کند.

آیا می توان XML-RPC را بدون افزونه غیرفعال کرد؟

بله. می توان با استفاده از .htaccess در Apache یا فیلتر وردپرس، XML-RPC را بدون نصب افزونه غیرفعال کرد.

آیا غیرفعال کردن XML-RPC باعث خراب شدن وردپرس می شود؟

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

آیا XML-RPC باعث هک شدن قطعی سایت می شود؟

خیر. فعال بودن XML-RPC به معنی هک شدن قطعی سایت نیست. این قابلیت صرفاً یکی از مسیرهایی است که ممکن است در برخی حملات مورد سوءاستفاده قرار گیرد و امنیت کلی سایت به عوامل بسیار بیشتری وابسته است.

فایل XML-RPC در وردپرس کجاست؟

فایل آن معمولاً در ریشه نصب وردپرس و با نام زیر قرار دارد:

/xmlrpc.php

آیا هاست وردپرس در امنیت سایت تأثیر دارد؟

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

نظر شما چیست؟
سهیل دهقانی
سهیل دهقانی

کاوش در دنیای وب، از هاست و سرور تا وردپرس و امنیت. 🍀

شبکه های اجتماعی
به جواب سوالت رسیدی؟

ثبت دیدگاه ها

100days
×