نحوه غیر‌فعال کردن XMLRPC

 

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

این مقاله، نحوه غیر‌فعال کردن XMLRPC در وردپرس و دلیل ارائه مجدد آن توسط WordPress را بیان می‌کند.

 

آموزش غیر‌فعال کردن XMLRPC در WordPress

 

 

XML-RPC چیست؟

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

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

متاسفانه اخیرا گزارش‌های نا‌امید کننده‌ای در خصوص سیستم مدیریت محتوا WordPress دریافت شده است که یکی از آن ها ایجاد حملات DDOS به سمت فایل xmlrpc.php می‌باشد.

روش‌های غیر‌فعال کردن XMLRPC در وردپرس:

1- حذف فایل xmlrpc.php
با حذف این فایل تمامی مراجعات با شکست مواجه می‌شود اما اجرای این روش توصیه نمی‌شود!

2- غیرفعال کردن XML-RPC و Pingback با استفاده از functions.php
به مسیر بارگذاری قالب وبسایت مراجعه نموده و کد زیر را به انتهای فایل functions.php اضافه کنید.
(فایل مذکور معمولا در مسیر زیر wp-content/themes/yourtheme/functions.php از هاست شما بارگذاری شده است.)
function remove_x_pingback($headers) {
unset($headers['X-Pingback']);
return $headers;
}
add_filter('wp_headers', 'remove_x_pingback');
add_filter('xmlrpc_enabled', '__return_false');
 3- نصب افزونه‌های Disable XML-RPC و XML-RPC Pinkback

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

دریافت افزونه Disable XML-RPC
دریافت XML-RPC Pinkback

4- محدود کردن دسترسی به XML-RPC در فایل htaccess.
فایل htaccess. موجود در public_html یا مسیر اصلی هاست را باز نموده و کد زیر را در ابتدای آن قرار دهید.
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

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

5- محدود کردن دسترسی در Apache
ممکن است شما از یک سرور مجازی یا اختصاصی که حاوی تعداد زیادی اکانت WordPress می‌باشد، استفاده می‌فرمایید در این صورت انجام روش قبل بسیار زمانبر و طولانی خواهد بود.
در این شرایط می‌توانید با استفاده از دسترسی root و SSH کد زیر را در ابتدای فایل کانفیگ Apache قرار دهید.
(در سرور‌های cPanel این فایل در مسیر usr/local/apache/conf/httpd.conf/ می‌باشد.)
<FilesMatch "^(xmlrpc\.php|wp-trackback\.php)">
Order Deny,Allow
Deny from all
</FilesMatch>
با استفاده از این روش که بسیار توصیه شده است تمامی حملات همانند روش قبل این‌بار نه تنها برای یک اکانت بلکه برای تمامی اکانت ها خنثی می‌شوند.
6- محدود کردن دسترسی در nginx
چنانچه از وب سرور nginx در سرور شما استفاده می‌شود، می‌توانید با استفاده از دسترسی root و SSH کد زیر را در فایل کانفیگ nginx قرار دهید.

server {
location = /xmlrpc.php {
deny all;
}
}

با استفاده از این روش نیز تمامی حملات همانند روش قبل خنثی می‌شوند.

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