
امنیت سایت یکی از مهمترین موضوعاتی است که به راحتی نمیتوان از کنار آن گذشت و همواره یکی از دغدغههای مهم مدیران سایتها است. یکی از مشکلات امنیتی مربوط به حملات XML-RPC در وردپرس میباشد. این پروتکل به تنهایی مشکلی ایجاد نمیکند اما هکرها میتوانند با استفاده از این پروتکل حملات بیرحمانهای به سایت شما وارد و موجب از دسترس خارج شدن آن شوند.
اما جای هیچ نگرانی نیست؛ با ما تا آخر این مقاله همراه باشید تا با چند اقدام ساده از حملهی هکرها پیشگیری و سایت خود را ایمن کنید.
محافظت از وردپرس در برابر حملات XML-RPC
آنچه در این مقاله به اختصار خواهید خواند :
- XML-RPC چیست؟
- چرا XML-RPC ساخته شد؟
- چرا باید XML-RPC را غیرفعال کنیم؟
- نقاط ضعف XML-RPC
- نحوه غیر فعال کردن xml-rpc
- تست غیرفعال بودن xml-rpc
XML-RPC چیست؟
XML-RPC مخفف عبارت XML-Remote Procedure Call به معنای فراخوانی دستورها از راه دور میباشد که با xml و با استفاده از مکانیسم انتقالی IHTTP اطلاعات را منتقل میکند. این ویژگی اوایل به دلایل امنیتی غیرفعال بود؛ اما از نسخه 3.5 توسط تیم توسعه دهنده وردپرس بعد از قابل اطمینان دانستن این پروتکل امکان فعال کردن و یا غیرفعال کردن xml-rpc را از منوی پیشخوان وردپرس برداشته شد و اینک در نسخههای جدید وردپرس بطور پیشفرض فعال است.
این پروتکل امکان مدیریت سایت (ایجاد نوشته، ارسال پست، مدیریت تنظیمات سایت و…) از راه دور توسط Trackbacks و Pingbacks از سایر سایتها و بعضی از توابع مربوط با پلاگین Jetpack با گوشی موبایل و تبلت فراهم میکند.یا به عبارتی دیگر xml-rpc مکانیزمی است که وردپرس با استفاده از آن با سیستمهای دیگر و وبسایتهای دیگر ارتباط برقرار میکند.
چرا XML-RPC ساخته شد؟
XML-RPC نخستین بار توسط دیو وینر از شرکت userland به همراه مایکروسافت در سال ۱۹۹۸ تولید شد.
اجرای XML-RPC به روزهای اولیه وردپرس برمیگردد، در گذشتههای نه چندان دور که وبلاگ نویسی رواج داشت و سرعت اینترنت بسیار کند بود، روند نوشتن و انتشار پست در وب بسیار زمانبر بود به همین خاطر به جای نوشتن در مرورگر، افراد مطالب خود را به صورت آفلاین مینوشتند، سپس محتوای خود را بر روی وب کپی میکردند؛ اما این روش نیز بسیار دشوار بود.
در نتیجه بلاگر، برنامه API یا application programming interface را ایجاد کرد که به توسعه دهندگان اجازه دسترسی به وبلاگهای بلاگر را میداد. وارد شدن به وبلاگ به صورت آفلاین به کاربران اجازه میداد تا به صورت آفلاین مطالب خود را تایپ کرده و سپس از طریق XML-RPC به بلاگر متصل شوند.
چرا باید XML-RPC را غیرفعال کنیم؟
XML-RPC علاوه برقابلیتهای مفید، نقطه ضعفهایی نیز دارد، در نسخههای جدید وردپرس باگهای امنیتی تا حدود زیادی رفع شدهاند اما هکرها میتوانند درخواستهای بسیاری به این فایل از متد post ارسال کنند که این کار منجر به بالا رفتن لود سرور و خوابیدن سایت شما شود، یعنی این فایل به نوعی برای حملات DDOS استفاده میشود. بنابراین اگر از امکان ارسال از راه دور مثلا نرم افزار Windows Live Writer یا اپلیکیشنهای وردپرس استفاده نمیکنید اصلا نیازی به فعال بودن این امکان در وردپرس ندارید، هرچند میتوانید با استفاده از رمز عبورهای قوی و افزونههای امنیتی، وردپرس خود را محافظت کنید اما بهترین حالت غیرفعال کردن این ویژگی است.
شاید با خودتان بپرسید که حملات DDOS چیست؟
ddos مخفف عبارت (Distributed Denial Of Service) به معنای حملات بسیار مخرب است که هدف آن اختلال، کند کردن و تخریب سرور میباشد، به این صورت که هکرها مقدار زیادی ترافیک جعلی را به سرور قربانی سرازیر میکنند و باعث استفاده بیش از حد از پردازنده، پایگاه داده، پهنای باند، حافظه و… میشود و در نهایت موجب از کار افتادن وبسایت میشوند.
نقاط ضعف XML-RPC
- حملات Brute force
در این روش هکرها سعی میکنند با استفاده از نام کاربری و رمزهای عبور مختلف از طریق xmlrpc.php وارد سایت شوند. روشی از طریق xmlrpc.php وجود دارد که به هکرها اجازه میدهد تا از یک خط دستور برای حدس زدن صدها پسورد استفاده و ابزارهای امنیتی سرور را مسدود کند.
- حملات DDoS از طریق pingback
دومین نقطه ضعف این پروتکل حمله DDoS از طریق pingback میباشد. در این روش با استفاده از قابلیت pingback هر هکری قادر است با بدست آوردن تعداد نامحدودی آی پی حملات DDoS را روی هزاران سایت وردپرس بدون آن که به آنها نفوذ کنند ترتیب دهد.
غیرفعال کردن xml-rpc وردپرس
دو روش برای غیرفعال کردن xml-rpc وردپرس برای محافظت از وردپرس در برابر حملات XML-RPC وجود دارد که هرکدام را به صورت جدا آموزش خواهیم داد.
1. استفاده از افزونه
اولین روش برای محافظت از وردپرس در برابر حملات XML-RPC میتوان به نصب افزونهی Disable XML-RPC اشاره کرد.با نصب این پلاگین از مخزن وردپرس قادر به غیرفعال کردن این API خواهید بود.
پس از نصب و فعال کردن، افزونه به طور خودکار XML-RPC را خاموش یا غیرفعال میکند؛ اما باید توجه داشته باشید که بعضی از افزونههای دیگر ممکن است از بخش هایی از XML-RPC استفاده کنند و غیرفعال کردن کامل آن امکان بروز مشکل در سایت شما را دارد.
دانلود افزونهی Disable XML-RPC
دانلود افزونهی Disable XML-RPC صفحه افزونهاگر نیاز دارید برخی از عناصر خاص از XML-RPC را غیرفعال کنید و از حملات XML-RPC در وردپرس جلوگیری کنید، میتوانید از افزونهی زیر استفاده کنید:
افزونه Stop XML-RPC Attack
این افزونه تمام حملات XML-RPC را متوقف میکند، اما به افزونههایی مانند Jetpack و سایر ابزارهای خودکار اجازه دسترسی به پرونده xmlrpc.php را میدهد.
دانلود افزونهی Disable XML-RPC
دانلود افزونه stop XML-RPC Attacks صفحه افزونه2. استفاده از کدنویسی در فایل function قالب
دومین روش برای جلوگیری از حملات XML-RPC در وردپرس این است که کد زیر را به فایل فانکشن قالب وردپرس خود اضافه کنید، توجه داشته باشید ممکن است با هر بار تعویض قالب یا بروزرسانی لازم باشد این کد را مجددا به فایل اضافه کنید. حتما قبل انجام اینکار بهتر است از سایت بکآپ بگیرید.
add_filter('xmlrpc_enabled', '__return_false');
3. استفاده از کدنویسی در فایل htaccess هاست
در سومین روش که بهترین و کارآمدترین روش است، دسترسی به پروتکل xml-rpc از سایت غیرفعال میشود و در نهایت از حملات XML-RPC در وردپرس جلوگیری خواهد شد.
با استفاده از این روش اگر کسی به این پروتکل نیز دسترسی پیدا کند باز هم امکان استفاده از آن را نخواهد داشت. یکی از نکات مثبت این روش این است که قادر خواهید بود دسترسی آی پی یک دستگاه خاص را فعال بگذارید و دسترسی دیگر افراد بیگانه را مسدود کنید. برای این کار کافی است کد زیر را به انتهای فایل htaccess وردپرس خود اضافه کنید:
<FilesMatch “^(xmlrpc\.php)”> Order Deny,Allow Deny from all Allow from 111.111.111.111 </FilesMatch>
دقت داشته باشید بجای آی پی ۱۱۱.۱۱۱. ۱۱۱.۱۱۱ باید آی پی یا آی پیهایی که دسترسی مجاز دارند را وارد کنید و اگر به کلی از امکان xml-rpc استفاده نمیکنید بهتر است به طور کامل خط مربوط به Allow را حذف کنید.
تست غیرفعال بودن xml-rpc
برای اینکه از غیرفعال بودن این ویژگی مطمئن شوید آدرس سایت خود، به طور مثال آدرس hamyarwp.com/xmlrpc.php را در مرورگر جستجو کرده در صورتی که خطای ۴۰۳ یا ۴۰۴ دریافت کردید به این معنا است که xmlrpc.php روی سایت شما غیرفعال شده است.
در صورتیکه قصد غیرفعال سازی XML-RPC را ندارید بهترین کار استفاده از یک افزونه امنیتی چون Wordfense میباشد.
محافظت از وردپرس در برابر حملات XML-RPC
وردپرس یکی از بهترین سیستمهای مدیریت محتوا در جهان است و به دلیل محبوبیتی که بین کاربران دارد همواره مورد هک و نفوذ قرار میگیرد. اما با گذشت زمان، میتوان انتظار داشت که ویژگی XML-RPC در API وردپرس جدید ادغام شود و قابلیتهای دسترسی از راه دور و مانند آن را حفظ کند، بدون آن که امنیت سایت را به خطر بیندازد. امیدواریم با کمک این آموزش گام بزرگی در جهت محافظت از وردپرس در برابر حملات XML-RPC بردارید. در صورتی که در رابطه با این آموزش سوال یا مشکلی داشتید در بخش دیدگاهها با ما در میان بگذارید.