ثبت‌نام ورود

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

جلوگیری از دسترسی به 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. U14500 ۱۹ خرداد ۱۳۹۹

    سلام وقت بخیر

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

    ممنون

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

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