از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چطور سرور Memcached را ایمن کنیم
سرفصلهای مطلب
شرح آسیب پذیری پیشفرض سرور و سرویس Memcache
سرویس memcached یا memcache Daemon بصورت پیشفرض بصورت عمومی روی پورت 11212 UDP و TCP برای همه در دسترس است ، مانند دیگر ابزار ممکن است با یک تل نت ساده به memcacehd متصل شد و دستور stat را برای بدست آوردن اطلاعات درباره خود سرویس و یا دریافت اطلاعات درباره اطلاعات کش شده استفاده کرد ، بر اساس نوع کاربری این سرویس در زیرساخت شما ، قوائد مدیریت فن آوری اطلاعات سازمان ، و استاندارد های برنامه نویسی ، این سرویس میتواند اطلاعات بسیار حساسی را کش کند، در صورتی که چنین سرویسی بصورت عمومی در دسترس باشد میتواند اطلاعات حساس را به اشخاص ثالث بدون اطلاعات شما ارائه کند
سرویس memcached مبتنی بر UDP می تواند برای حمله آمپلیفایری DOS مورد سوءاستفاده قرار گیرد ، حمله کننده تعداد زیادی بسته UDP را به سرویس ممکش با یک IP آدرس Spoof شده منبع ارسال کرده و تا ظرفیت سرور قربانی را با پاسخ های Memcached پر کند.
بدون توجه به پیکربندی پیش فرض این سرویس نباید هیچ وقت بصورت Public در دسترس قرار گیرد و استفاده از آن باید محدود به زیرساخت تعریف شده شما باشد
نسخه های آسیب پذیر
همه نسخه های memchaced در زمان انتشار این مطلب در وبلاگ رسانگار با توجه به تنظیمات پیشفرض تحت تاثیر این آسیب پذیری هستند
چطور بررسی کنیم که memcache سرور در خطر آسیب پذیری است
می توانید سرور خود را بادستور زیر تست کنید
(مقدار <ipaddress> را با آدرس ای پی سرور خود جایگزین کنید ) :
تست روی UDP:
echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u ipaddress 11211
خروجی اگر آسیب پذیر باشد
STAT pid 1111 STAT uptime 246345 STAT time 1526499414 STAT version 1.4.4 STAT pointer_size 64 [...]
تست روی TCP:
nmap -Pn -p 11211 <ipaddress> --script memcached-info
اگر باز باشد خروجی به شکل زیر است :
Starting Nmap 6.40 ( http://nmap.org ) at 2015-04-01 10:09 EDT Nmap scan report for xx.xx.xx.xx Host is up (0.063s latency). PORT STATE SERVICE 11211/tcp open unknown | memcached-info:
| Process ID 1726 | Uptime 43215969 seconds | Server time 2015-04-01T14:09:03 | Architecture 32 bit | Used CPU (user) 0.728889 | Used CPU (system) 1.032842 | Current connections 10 | Total connections 1678 | Maximum connections 1024 | TCP Port 11211 | UDP Port 11211 |_ Authentication no Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds
راه کار رفع آسیب پذیری و ایمن سازی memcached:
اگر سازمان و سرور شما نیاز به memcached ندارد
اگر در نرم افزارهای خود از memcache استفاده نمی کنید آن را روی سرور خود غیر فعال و یا بصورت ایده آل آن را حذف کنید ( برای اطمینان با پشتیبان نرم افزاری خودتماس بگیرید چون در صورت استفاده از این سوریس و غیر فعال سازی آن ممکن است اجرای کد ها با مشکل و خطا مواجه شود )
اگر memcached مورد نیاز سرور محلی است
مسیر پیش فرض فایل پیکربندی در آدرس : /etc/sysconfig/memcached قرار دارد ، آن را باز کرده و
OPTIONS=""
را به عبارت زیر تغییر دهید تا دسترسی به سرویس فقط برای کدهای لوکال امکان پذیر شود
OPTIONS="-l 127.0.0.1"
سپس سرویس را با دستور زیر ریست کنید
service memcached restart
بصورت پیشفرض سرویسهایی که از memcached استفاده می کنند از 127.0.0.1 برای اتصال استفاده می کنند ، اگر برای اتصال از IP دیگر روی سرور استفاده می شود مطمئن شوید که آن آی پی را در تنظیمات اصلاح کنید
اگر memcached برای سرورهای دیگر در سازمان شما لازم است
بهترین راه مسدود کردن دسترسی عمومی به سرویس و باز کردن دسترسی فقط برای آدرس های IP با ابزاری مانند iptables یا فایروال سخت افزاری در صورت در دسترس بودن می باشد
بصورت دلخواه :
تنظیمات پیشرفته تری می تواند برای اجازه دسترسی به سرورهای با تصدیق به روش SASL استفاده شود
http://www.shanison.com/2014/04/29/setup-memcached-with-sasl-authentication/
memcached با Zimbra:
https://wiki.zimbra.com/wiki/Blocking_Memcached_Attack
در صورت وجود هرگونه سوال آن را از طریق بخش نظرات وبلاگ رسانگار با ما در میان بگذارید