Memcached چیست و چه تفاوتی با Memcache دارد؟
در این مقاله میخوانید
Memcached چیست؟ اگر شما هم با این اصطلاح مواجه شدهاید؛ اما معنی آن را نمیدانید، این مقاله از بلاگ پارس پک مخصوص شماست. Memcached سیستم کشینگ حافظه (Memory Caching) رایگان و منبعباز و قدرتمندی است که از آن برای کارهای مختلفی مانند کشکردن دادههای دیتابیس و فراخوانی API و افزایش عملکرد وباپلیکیشنها استفاده میکنند. باتوجهبه اهمیت این موضوع، در این مطلب قصد داریم بهطورمفصل درباره Memcached و Memcache و نیز آسیب پذیری Memcached صحبت کنیم؛ پس تا پایان با ما همراه باشید.
Memcached چیست؟
اگر بخواهیم خیلی ساده توضیح دهیم که Memcached چیست، باید بگوییم که ممکشد درواقع سیستم حافظه پنهان (Cache) رایگانی است که یکی از کاربردهای مهمش، افزایش سرعت دسترسی به وبسایتهای پویا (Dynamic) با استفاده از کاهش Load پایگاه داده است.
اگر از متخصص علوم کامپیوتر بپرسید که Memcached چیست، با پاسخی صریح، اما ساده روبهرو خواهید شد. ممکشد همانطورکه از نامش پیداست، سیستم حافظه پنهان (Memory Caching) است که مهمترین مزیت استفاده از آن، افزایش درخورتوجه سرعت وبسایتهای داینامیک است. بااینحال، ممکشد درکنار مزایایش، چندان هم بیخطر نیست.
ممکشد (Memcached) چگونه کار میکند؟
همانطورکه گفتیم، یکی از کاربردهای مهم ممکشد افزایش سرعت است؛ اما افزایش سرعت با ممکشد چگونه امکانپذیر است؟ برای پاسخ به این پرسش، باید بدانیم که ممکشد چطور کار میکند. تمامی دیتابیسها اطلاعات را روی هارد دیسک ذخیره میکنند. این هارد از فناوری قدیمی HDD یا در بهترین حالت از SSD استفاده میکند؛ اما اطلاعات Memcached روی RAM نگهداری میشوند. در این صورت، با سرعت بسیار زیاد و درحد میکروثانیه میتوانید به اطلاعات دسترسی داشته باشید و همین امر سبب افزایش سرعت با Memcached خواهد شد.
اگر از متخصص علوم کامپیوتر بپرسید که مهمترین ویژگی ممکشد چیست؟، قطعاً مقیاسپذیری و طراحی ساده و کارآمد را جزو ویژگیهای برتر آن معرفی خواهد کرد. فراموش نکنید که Memcached حالت توزیعشده (Distributed) دارد. این یعنی با اضافهکردن Nodeهای جدید، آن را براساس نیاز خود بهراحتی میتوانید توسعه دهید. بهعبارتدیگر، ممکشد تکنولوژیای مقیاسپذیر بهشمار میرود و ازآنجاکه چندرشتهای (Multithreade) است، ظرفیت محاسباتی موردنیاز خود را بهسادگی میتوانید افزایش دهید.
افزایش سرعت با ممکشد از یک سو و مدیریت حافظه کارآمد و پشتیبانی از API برای اکثر زبانهای محبوب و طراحی ساده و کاربرپسند از سوی دیگر، Memcahced را به گزینهای بسیار محبوب برای توسعهدهندگانی تبدیل کرده است که به استفاده از حافظه پنهان با کارایی چشمگیر و مقیاس بزرگ نیاز دارند.
حالا که میدانید Memchached چیست و چه کاربردی دارد، بهتر است با برخی از وبسایتهای مهمی آشنا شوید که از این تکنولوژی در ساختار خود استفاده کردهاند.
کدام وبسایتها از Memcached استفاده میکنند؟
همانطورکه تا اینجای مطلب احتمالاً فهمیدهاید، افزایش سرعت با ممکشد یکی از ویژگیهای مهمی است که باعث میشود از آن استفاده کنید. گزارشها حاکی از آن است که حدود ۱,۲۰۰ وبسایت از این تکنولوژی در ساختار خود استفاده کردهاند که برخی از آنها عبارتاند از:
- فیسبوک
- پینترست
- اینستاگرام
- توییتر
- یودمی
- Shopify
- Instacart
- Slack
ناگفته نماند که استفاده از ممکشد چندان هم بدون ریسک نیست. درادامه، توضیح خواهیم داد که آسیب پذیری Memcached چیست و چگونه میتوان از آن پیشگیری کرد.
آسیب پذیری Memcached چیست؟
آخرین هفته فوریه۲۰۱۸ با خبری داغ در حوزه تکنولوژی و اینترنت همراه بود؛ چراکه آژانس Radware گزارشی مبنیبر آسیب پذیری Memcached ازطریق پورت UDP 11211 منتشر کرد. همین خبر کافی بود تا متخصصان و خصوصاً وبسایتهایی که از این تکنولوژی استفاده کرده بودند، بهشدت بهدنبال پاسخی برای این پرسش باشند که آسیب پذیری Memcached چیست و چقدر میتواند روی امنیت وبسایت تأثیر بگذارد؟
طولی نکشید که خبرهای تکمیلی در این زمینه منتشر شد. Memcached فرصتهای زیادی برای حملههای DDoS ایجاد میکرد. درواقع، آسیب پذیری Memcached از این قرار بود که هکرها میتوانستند ازطریق سرورهای Memcached برای اجرای حملههای DDoS و ارسال ترافیک جعلی به سرور وبسایت کاربر استفاده کنند.
اینکه دلیل آسیب پذیری Memcached چیست، نیز نکته جالبی دارد. در ابتدا اصلاً قرار نبود که پروتکل ممکشد به اینترنت وصل شود؛ بههمیندلیل، کنترلهای امنیتی دقیقی روی آن قرار نگرفته بود. همین مسئله باعث شده بود تا مهاجمان بهراحتی بتوانند با استفاده از پورت ۱۱۲۱۱، به این سیستم نفوذ و حملههای DDoS خود را اجرا کنند.
حالا که میدانید آسیب پذیری Memcached چیست، بد نیست با روش جلوگیری از آن نیز آشنا شوید. درادامه، به چند راهکار مهم برای این منظور اشاره خواهیم کرد.
برای آشنایی با آموزش روشهای کاربردی برای ایمنسازی Memcached مقاله زیر را از دست ندهید.
روشهای جلوگیری از آسیب پذیری Memcached چیست؟
برخی از راهکارهای مهمی که استفاده از آنها میتواند باعث جلوگیری از آسیب پذیری Memcached شود، ازاینقرارند:
۱. غیرفعالکردن UDP
سرورهای ممکشد بهطور پیشفرض استفاده از UDP را فعال میکند که بهتر است برای پیشگیری از آسیبپذیری ممکشد و درصورت نیازنداشتن، آن را غیرفعال کنید.
۲. استفاده از فایروال برای استفاده از سرورهای Memcached
یکی دیگر از راهکارهایی که با استفاده از آنها میتوان از آسیب پذیری Memcached جلوگیری کرد، استفاده از فایروال مطمئن است. فایروال از سرورهای ممکشد دربرابر حملههای مختلف جلوگیری میکند و بدینترتیب، حتی از UPD نیز میتوانید بدون نگرانی استفاده کنید.
۳. جلوگیری از جعل آدرس IP
تا زمانیکه امکان جعل IP وجود داشته باشد، احتمال حملههای DDoS به Memcached نیز وجود دارد. گفتنی است که جلوگیری از جعل IP بیشتر از آنکه به شما مربوط شود، وظیفه شرکتهای ارائهدهنده خدمات اینترنت است.
حل مشکل امنیتی Memcached در سرورهای با توزیع اوبونتو و دبیان
درادامه، بهتر است بهصورت عملی ببینیم که در سرورهای مجهز به توزیع دبیان یا اوبونتو، راهحل مطمئن برای حل مشکل امنیتی Memcached چیست. برای این منظور، باید پارامترهای Service را با ویرایش فایل /etc/memcached.conf تنظیم کنید. درصورتیکه از ویرایشگر متن Nano استفاده میکنید، نحوه انجام این کار از قرار زیر است:
sudo nano /etc/memcached.conf
اوبونتو و دبیان بهصورت پیشفرض Memcached را به آدرس لوکال 127.0.0.1 هدایت میکنند که دربرابر حملههای DDoS آسیبپذیر نیستند. ابتدا بررسی کنید که گزینه -l روی همین آدرس تنظیم شده باشد:
. . . -l 127.0.0.1 . . .
همانطورکه پیشتر نیز گفتیم، یکی از راهکارهای مفید برای جلوگیری و حل آسیب پذیری Memcached، غیرفعالسازی UDP است. برای این کار، کدهای زیر را به انتهای فایل اضافه کنید:
. . . -U 0
حالا تغییرات انجامشده روی فایل را ذخیره کنید و سپس آن را ببندید. درنهایت، سرویس Memcached را ریاستارت کنید تا تغییرات اِعمال شود:
sudo service memcached restart
حالا با استفاده از دستور زیر مطمئن شوید که Memcached به رابط لوکال متصل است و فقط به TCP گوش (Listen) میکند:
sudo netstat -plunt
درصورتیکه خروجی این دستور بهصورت زیر باشد، بدینمعنی است که تنظیمات اِعمالشده مناسب است و حالا سرویس ممکشد از امنیت مناسبی بهره میبرد:
Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name . . . tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2383/memcached . . .
تفاوت Memcached و Memcache چیست؟
تا اینجای مطلب متوجه شدهاید که Memcached چیست و چه کاربردی دارد. همچنین، درباره آسیبپذیری آن و نحوه رفعش اطلاعاتی بهدست آوردهاید. بااینحال، هنوز مفهوم دیگری باقی مانده است که دربارهاش صحبتی نکردهایم: Memcache.
اگرچه Memcache و Memcached جزو اکستنشنهای PHP هستند، دقیقاً مثل یکدیگر نیستند. PHP Memcache قدیمیتر و البته پایدارتر است؛ اما درمقابل محدودیتهایی نیز دارد. ماژول PHP Memcache مستقیماً از Daemon استفاده میکند؛ درحالیکه ماژول PHP Memcached از کتابخانه libMemcached بهره میبرد و ویژگیهای اضافهتری نیز دارد.
جدول زیر به شما کمک میکند تا تفاوت بین این دو ماژول را عمیقتر درک کنید:
Memcached | Memcache | |
2009-01-29 (beta) | 2004-06-08 | تاریخ اولین انتشار |
بله | خیر | Append/Prepend |
بله | بله | سریالسازی خودکار |
اختیاری | خیر | پروتکل باینری |
بله | خیر | CAS |
بله | بله | فشردهسازی |
بله | بله | هش مداوم اطلاعات |
جمعبندی
ممکشد مفهومی مهم در سرعت سرورهاست. در این مطلب، خیلی ساده توضیح دادهایم که Memcached چیست و چگونه میتواند مشکل امنیتی خیلی مهمی در سرور وبسایت شما ایجاد کند. در این مطلب از بلاگ پارس پک، علاوهبر اینکه توضیح دادهایم که ممکشد چیست، درباره مشکل امنیتی این سرویس و نحوه رفع آن نیز بهطور مفصل صحبت کردهایم.
سؤالات متداول
۱. Memcached چیست؟
Memcached سرویس حافظه پنهان برای سرورهای وبسایتهای داینامیک است که استفاده از آن باعث افزایش چشمگیر سرعت این وبسایتها خواهد شد.
۲. مشکل امنیتی Memcached چیست؟
بهصورت خلاصه، مشکل امنیتی Memcached استفاده از پورت UDP 11211 بود که راه را برای حملههای DDoS باز میکرد.
۳. مهمترین مزیت استفاده از Memcached چیست؟
مهمترین مزیت استفاده از این پروتکل افزایش سرعت وبسایتهای داینامیک است.