غیر فعال کردن XML-RPC وردپرس با htaccess
یکی از روشهای مرسوم برای هک کردن یک سایت Brute force است. یعنی به تعداد زیاد از طریق درگاههایی که امکان ورود اطلاعات تعیین هویت وجود دارند، هکر ترکیبهای مختلفی از نام کاربری و رمز عبور یا چیزهای دیگری را توسط نرم افزار تست میکند تا بالاخره یکی از آنها جواب دهد. این کار علاوه بر اینکه باعث هک شدن سایت میشود، از آن بدتر باعث کاهش سرعت سایت هم خواهد شد. یکی از درگاههای سایت وردپرس که امکان بروز یک چنین حملهای را تشدید میکند، همین XML-RPC است.
XML-RPC در اصل یک رابط برنامه نویسی یا همان API است که به برنامه نویسان اجازه میدهد تا بتوانند وردپرس را به دیگر برنامهها متصل نمایند. در خیلی از مواقع هکر از همین API استفاده میکند و علاوه بر یافتن رمزهای عبور کاربران سایت، فشار خیلی زیادی به سایت وارد میکند. بنابراین بهتر است که اگر از این قابلیت وردپرس استفاده نمیکنیم، آن را غیر فعال کنیم.
برای غیر فعال کردن XML-RPC وردپرس ممکن است راههای مختلفی وجود داشته باشد. که یکی از این راهها استفاده از سند htaccess روی هاست ماست. که این پرونده برای ویرایش رفتار وب سرور در مواجه با درخواستهای مختلف استفاده میگردد. یکی از کارهایی که میتوان با htaccess انجام داد، این است که درون آن کدی را بگذاریم که به آپاچی یا همان وبسرور بفهمانیم که درخواستهایی که به سند xmlrpc.php وردپرس داده میشوند را همگی رد کن!
غیر فعال کردن XML-RPC وردپرس با htaccess
برای این منظور باید وارد نرم افزار کنترل پنل هاست و از آنجا وارد File Manager شد که از آنجا میتوانیم تمامی اسناد روی فضای میزبانی را مدیریت کنیم. سندی با نام htaccess. که در مسیر public_html (دقیقاً در همین پوشه از مسیر نصبی وردپرس موجود است) را باز میکنیم و کد زیر را در انتهای این سند قرار دهیم.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
دقت داشته باشید که این سند خیلی حساس است! اگر یک حرف اشتباه وارد کنید، ممکن است کل سایت از دسترس برای بازدید کنندگان خارج شود. پس بهتر است اول از آن یک نسخهٔ پشتیبان با یک نام دیگر در همین مسیر تهیه کنید، یا از آن یک نسخه روی رایانهٔ شخصی خود دانلود کنید. پس از ویرایش هم سایت را بررسی کنید که ببینید آیا سایت به درستی کار میکند یا خیر.
غیرفعال کردن XML-RPC وردپرس برای همه به غیر از افراد خاص
اما اگر خواسته باشیم، تنها برای عدهای که آنها هم IP ثابت دارند، یعنی با هر بار خاموش و روشن کردن رایانه یا مودم، نشانی اینترنتی آنها تغییر نمیکند، دسترسی به XML-RPC را آزاد بگذاریم و برای بقیهٔ افراد روی شبکهٔ اینترنت دسترسی را مسدود کنیم، میتوان از کد زیر به جای کد بالا استفاده کرد:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from [IP]
</Files>
البته باید به جای [IP] حتماً IP فرد یا رایانهای که قصد اجازه دسترسی به XML-RPC را دارد وارد کنیم. به عنوان مثال اگر از درون شرکت یا منزل خود میخواهید از طریق Windows Live Writer که از همین نوع API وردپرس برای ارسال نوشته به سایت استفاده میکند، ارسال محتوا داشته باشید، اول که باید آی پی شما ثابت باشد. در ثانی از کدی که در این قسمت از مقاله از آن یاد شد در سند htaccess خود استفاده نمایید.
نکته ۱ : دقت کنید که سند xmlrpc.php در ریشهٔ محلی که وردپرس نصب شده است واقع شده و در اصل همان نشانی اصلی پروتکل xml-rpc سایت است. یعنی این نشانی روی سایت شما به این صورت است: yoursite.ir/xmlrpc.php
نکته ۲ : ما در اصل دسترسی به این سند توسط کدهای آپاچی که درون سند htaccess یادداشت میشود، را محدود میکنیم. که بعد از استفاده از یکی از کدهای بالا، خطای ۴۰۳ به بازدید کنندهها برگردانده خواهد شد.
نکته ۳ : بعد از استفاده از کدهای بالا، حتماً نشانی xmlrpc سایت را بررسی کنید که آیا خطای ۴۰۳ داده میشود یا خیر. یعنی کدی که گذاشتید به درستی کار میکند یا خیر. اگر کار نکرد و سایت هنوز از دسترس خارج نشده، موقعیتی که کد را در آنجا قرار دادید اشتباه است. آن را در سند htaccess بالا یا پایین کنید.