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

نوشته شده توسط: محمد

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

 

XML-RPC که یک پروتکل فراخوانی از راه دور است برای مدتی طولانی به دلایل امنیتی و به طور پیش فرض غیر فعال شده بود اما اخیرا با انتشار WordPress 3.5 مجددا و به طور پیشفرض فعال شده است ضمن اینکه متاسفانه امکان غیرفعالسازی آن از داشبورد وردپرس حذف شد!
این مقاله، نحوه غیرفعال کردن XML-RPC در وردپرس و دلیل ارائه مجدد آن توسط WordPress را بیان میکند.
XML-RPC چیست؟
XML-RPC یک پروتکل فراخوانی دستور از راه دور است که اطلاعات را از طریق XML با استفاده از پروتکل http منتقل می کند. به بیانی دیگر XML-RPC سیستمی است که امکان ایجاد پست در وبلاگ وردپرس با استفاده از نرم افزار های وبلاگ نویسی مانند Windows Live Writer را علاوه بر استفاده از تلفن همراه و دستگاه های مشابه جهت دسترسی به وبلاگ و انتشار مطالب از راه دور را فراهم می کند.درگذشته نگرانی های امنیتی زیادی در ارتباط با XML-RPC وجود داشت که منجر به حذف این قابلیت به طور پیشفرض شد اما امروزه با توجه به استفاده روز افزون از تلفن های هوشمند، مجددا فعال گردیده است.
متاسفانه اخیرا گزارش های نا امید کننده ای در خصوص سیستم مدیریت محتوا WordPress دریافت شده است که یکی از آن ها ایجاد حملات DDOS به سمت فایل xmlrpc.php می باشد.

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

۱- حذف فایل xmlrpc.php
با حذف این فایل تمامی مراجعات با شکست مواجه می شود اما اجرای این روش توصیه نمی شود!
۲- غیرفعال کردن 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');
 ۳- نصب افزونه های Disable XML-RPC و XML-RPC Pinkback
با استفاده از این افزونه ها نیز می توانید بدون نیاز به وارد کردن کد های بالا XML-RPC را غیرفعال کنید.
دریافت افزونه Disable XML-RPC
دریافت XML-RPC Pinkback

۴- محدود کردن دسترسی به XML-RPC در فایل htaccess.
فایل htaccess. موجود در public_html یا مسیر اصلی هاست را باز نموده و کد زیر را در ابتدای آن قرار دهید.
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
با این روش که یکی از بهترین موارد است دسترسی به فایل xmlrpc.php که مورد حمله قرار گرفته قطع خواهد شد.
۵- محدود کردن دسترسی در 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>
با استفاده از این روش که بسیار توصیه شده است تمامی حملات همانند روش قبل اینبار نه تنها برای یک اکانت بلکه برای تمامی اکانت ها خنثی می شوند.
۶- محدود کردن دسترسی در nginx
چنانچه از وب سرور nginx در سرور شما استفاده می شود می توانید با استفاده از دسترسی root و SSH کد زیر را در فایل کانفیگ nginx قرار دهید.

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

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

مطالب مرتبط

نظر شما