امنیت در مجازی سازی و رایانش ابری
در رایانش ابری کامپوننت هایی وجود دارند که برای ساختن زیرساخت ابر به کار گرفته می شوند. در پایین ترین لایه کامپوننت های سخت افزاری عملی مانند سرورها، NAS (تجهیزات ذخیره سازی شبکه) و کامپوننت های شبکه قرار می گیرند. برای محدود کردن امکان انتشار موارد امنیتی و آلودگی، شبکه ها باید به درستی به چند DMZ قوانین محدود کننده ارتباطی بین آنها تقسیم شوند. هسته رایانش ابری مجازی سازی است، که برای جداسازی یک لایه فیزیکی ماشین به چند ماشین مجازی به صورتی مقرون به صرفه است. اشتباه نکنید. اجرا و عملیاتی سازی یک ابر مطمئنا بدون مجازی سازی نیز امکان پذیر است، اما کار و زمان بیشتری برای اجرایی شدن نیازمند است. با مجازی سازی تعدادی از ماشین های مجازی امکان اجرای بر روی یک کامپیوتر فیزیکی را دارند که باعث مقرون به صرفه شدن و کاهش هزینه ها می شود. از سوی دیگر بخشی از منابع فیزیکی سرور نیز می توان به سایر کاربران واگذار گردد. چنین ماشین های مجازی کاملا پورتابل نیز هستند، بنابراین می توانند از یک سرور فیزیکی به سرور دیگردرچند ثانیه و بدون خاموشی و downtime منتقل شوند. ماشین های مجازی جدید می توانند به سادگی ایجاد شوند. فایده دیگراستفاده از مجازی محل ماشین های مجازی در دیتاسنتر است اهمیتی ندارد که دیتاسنتر کجا واقع شده است. ماشین های مجازی به سادگی قابل کپی شدن بین دیتاسنترها هستند.
در حالی که فایده اصلی مجازی سازی کاهش هزینه هاست، اختصاصی سازی آن هزینه های چنین محیطی را افزایش می دهد اگرچه ویژگی امنیت افزایش یافته را نیز به دست می دهد. اگر ما محیط مجازی سازی ابری را بیش از حد اختصاصی کنیم، هزینه نیز به طور متناظر بالا خواهد رفت. سه سرویس پایه رایانش ابری وجود دارند:SaaS، PaaS و IaaS و سه مدل اصلی پیاده سازی ابر وجود دارد:ابر خصوصی، نیمه خصوصی و عمومی. در هنگام انتخاب آمیخته ای مناسب از این مدل ها و سرویس ها، تمایل داریم که بهترین حالت را انتخاب کنیم. باید آگاه باشیم که با داشتن کنترل بیشتر بر ابر، امکان افزایش امنیت ابر نیز وجود خواهد داشت. ما می توانیم امنیت IaaS را در مقایسه با SaaS افزایش دهیم. زیرا کنترل بیشتری بر آن داریم. همین شرایط برای مدل پیاده سازی نیز صادق است. ما می توانیم امنیت یک ابر خصوصی را در مقایسه با یک ابر عمومی افزایش دهیم. باید توجه کرد در ابر که همه چیز توسط یک استفاده کننده از ابر کنترل نشده و قابل دسترسی نیست. دسترسی ها باید توسط سرویس دهنده ابری مدیریت شود. وقتی از یک ابر عمومی استفاده می شود، این وظیفه سرویس دهنده ابری است که همه جوانب زیرساخت ابر را امن کند. در حالیکه کاربر معمولا دسترسی به آن ندارد. اما در یک ابر خصوصی ما باید خودمان مسئول امنیت و مقاهیم مربوط به آن باشیم.
محیط سنتی در برابر محیط مجازی شده
در محیط مجازی سازی تعدادی موارد وجود دارد که ما نباید آنها را در شرایطی که امنیت در اولویت بالای لیست ما قرار دارد، دست کم بگیریم. در یک محیط IT سنتی، شبکه و سرورهای فیزیکی و علاوه بر آن تجهیزات شبکه به تنهایی در حال انجام کار خود هستند. در یک محیط شبکه سنتی، وقتی ما درباره یک سوئیچ شبکه صحبت می کنیم، منظورمان سوئیچ فیزیکی شبکه است که می توانیم آن را دیده و لمس کنیم، در حالی که در محیط های مجازی این روزها همه چیز می تواند مجازی شود.
تفکیک شبکه: بیشتر محیط های ساده مجازی شده تنها از یک شبکه استفاده می کنند که همه ماشین های مجازی در آن قرار گرفته اند. اما این حالت چندان امن نیست. به جهت امن کردن شبکه، لایه شبکه نیاز به تفکیک به DMZ های مختلف دارد که امنیت را افزایش می دهد. برای شرکت هایی که تلاش می کنند امنیت را بالا ببرند، DMZ داخلی خودشان می تواند در فضایی که فقط ماشین های مجازی آنها قرار گرفته اند ایجاد شود. حتی می توان بیشتر نیز پیش رفت و تجهیزات شبکه مجزا مانند سوئیچ ها از CSP درخواست کرد که فقط ترافیک ماشین های مجازی اختصاصی شما از آنها عبور کند. می توان از CSP درخواست نمود که از VLAN tagging / trunking برای ماشین های مجازی استفاده کند که به این مفهوم است که هر بسته که به ماشین های مجازی اختصاصی مقصد یابی شده و از ماشین های مجازی اختصاصی نیز می آید، یک VLAN ID معین دارد، بنابراین تنها رابط های شبکه در همان VLAN قادر به دریافت و پردازش بسته های شبکه هستند.
- تفکیک فیزیکی شبکه: وقتی که یک محیط مجازی اجاره داده می شود، ماشین های مجازی معمولا در یک سرور فیزیکی مشترک با ماشین های مجازی سایر کاربران قرار می گیرند. اگر همه سرور فیزیکی را در اختیار یک شرکت قرار بگیرد، که فقط برای اجرای تنها ماشین های مجازی همان مجموعه مورد استفاده قرارگیرد، امنیت افزایش می یابد، زیرا ماشین های مجازی سایر شرکت ها در جایی دیگر قرار خواهد گرفت. مجازی سازی به خودی خود یک لایه دفاعی در برابر مهاجمان اضافه می کند. بنابراین اگر یک مهاجم قادر به نفوذ به ماشین مجازی باشد، در حال عمل در یک محیط ایمن شده است. حتی مجازی سازی یک راه آسان برای ذخیره سازی نسخه آلوده ماشین های مجازی برای تحلیل های بعدی را نیز ارائه می دهد.
- تفکیک ذخیره سازی داده: با هر ماشین مجازی یک محل ذخیره سازی داده هم در نظر گرفته می شود که در یک سرور ذخیره سازی داده مرکزی خارجی قرار می گیرد. برای ارتباط با سرور ذخیره سازی داده، نرم افزار مجازی سازی از پروتوکل های متنوعی برای کار در شبکه استفاده می کند. بنابراین، داده متعلق به همه ماشین های مجازی برروی شبکه بر روی همان دیسک سخت قابل دسترسی از شبکه نوشته می شود. برای بهبود امنیت، ما می توانیم ذخیره ساز اختصاصی خود را از سرویس دهنده ابری تهیه کنیم که فقط داده های خودمان بر روی آن ذخیره سازی شود. وقتی داده چند ماشین مجازی بر روی یک سرور داده متمرکز شده ذخیره می شود، این احتمال وجود دارد که یک ماشین مجازی امکان دسترسی به داده یک ماشین مجازی دیگر را داشته باشد. برای پرهیز از چنین شرایطی، ما همیشه می توانیم داده ای را که درحال ذخیره آن هستیم رمزنگاری کنیم، بنابراین حتی اگر یک ماشین مجازی دیگر قابلیت خواندن داده ها را داشته باشد این داده ها قابل فهم نیستند.
موارد امنیتی در هنگام استفاده از مجازی سازی در رایانش ابری
مجازی سازی منافع متعددی را زمانی که در پلتفرم رایانش ابری استفاده می شود بدست می دهد. چنین راندمانی در هزینه، افزایش زمان در دسترس بودن، بهبود شرایط بازیابی، مجزا سازی اپلیکیشن و غیره. علیرغم تمام این مزایا وقتی که از مجازی سازی استفاده می شود موارد امنیتی وجود دارند که در ادامه اشاره شده است.
- Hypervisor: Hyperviser برای جداسازی سیستم عامل ماشین مجازی از سخت افزار فیزیکی مورد استفاده قرار می گیرد. وقتی که یک ماشین مجازی جدید بر روی یک ماشین فیزیکی نصب می کنیم، باید مطمئن شویم که آخرین بروزرسانی های نرم افزار بر روی سیستم عامل نصب شده و نرم افزار بدرستی به روز رسانی شده است. همین که مهاجم دسترسی مدیریت administrative را به سیستم عامل میهمان بدست بیاورد، می خواهد از تمام نقاط آسیب پذیر که در Hypervisor وجود حداکثر بهره برداری را نماید. مهاجم می تواند دسترسی کامل به ماشین فیزیکی میزبان را بدست آورد. به جهت درک اهمیت داشتن یک hypervisor ایمن باید به نکاتی توجه شود. یک hypervisor بطور خاص برای مجازی سازی ساخته شده است و بنابراین عملکرد های محدود مورد نیاز خاصی را داراست. نیازی نیست که یک hypervisor مانند یک سیستم عامل کامل باشد، زیرا باید قادر به اجرای مجموعه محدودی از عملکردها را داشته باشد. بنابراین چنین سیستمی دارای تعداد کمتری مبادی ورودی است که قابل تهاجم و بهره برداری باشد. از آنجاییکه hypervisor ها بندرت به روز رسانی می شوند، آسیب پذیری های امنیتی جدید بیشتر در موارد اصلاح نشده برای مدت طولانی اتفاق می افتد.در سال 2006 دو rootkit برای نشان دادن اینکه چگونه می توان از rootkit ها برای کنترل ماشین میزبان. Hypervisor و همه ماشین های مجازی آن استفاده کرد توسعه داده شد.
- اختصاص منابع: وقتی که یک منبع معین مانند ذخیره ساز داده و یا حافظه فیزیکی به یک ماشین مجازی اختصاص داده می شود.، ماشین مجازی می تواند از آن برای ذخیره سازی داده استفاده کند. اگر منابع بعد از آن به ماشین مجازی دیگر اختصاص داده شود به این جهت که ماشین مجازی فعلی دیگر مورد نیاز نیست و بنابراین باید حذف شود. ماشین های مجازی جدید می توانند داده را ازهارد دیسک و حافظه بخوانند. داده در چنین منابعی باید در شرایطی که از یک ماشین مجازی به ماشین مجازی دیگری انتقال داده می شود، به درستی حذف شود.
- تهاجم به ماشین مجازی: اگر یک مهاجم با موفقیت دسترسی به یک ماشین مجازی را با استفاده از آسیب پذیری در یکی از اپلیکیشن هایی که بر روی آن ماشین مجازی اجرا شده است بدست آورد، می تواند به سایر اپلیکیشن هایی که برروی ماشین های مجازی متفاوت در همان شبکه قرار گرفته اند، حمله کند. اگر ماشین های مجازی در حال اجرا بر روی همان هاست فیزیکی باشند که ماشین فیزیکی مورد تهاجم قرار گرفته بر آن است ممکن است سخت باشد که چنین حمله ای به شبکه کشف گردد. ما باید قادر باشیم ترافیکی که از هر ماشین مجازی بر روی یک هاست فیزیکی می آید را پایش کنیم.
- حملات مهاجرت: وقتی ما یک ماشین مجازی را انتقال می دهیم، این مهاجرت معمولا از انتفال کل ماشین مجازی بر روی شبکه از یک ماشین فیزیکی به ماشین فیزیکی دیگر تشکیل شده است. برای حمله موفق، مهاجم نیاز دارد که قبل از هر چیز به شبکه دسترسی داشته باشد که مهاجرت در آن اتفاق می افتد و همچنین دسترسی به خواندن/نوشتن بر حافظه در زمانی که مهاجرت اتفاق می افتد. وقتی که ارتباطات مهاجرت رمزگذاری نشده است، مهاجم می تواند یک حمله MITM را اجرا کند تا تمام فایل های VHD ماشین را کپی برداری کند.
کاهش نگرانی های امنیتی
مورد زیر شرح می دهد که چگونه ما می توانیم نگرانی های امنیتی را که در بالا شرح داده شد کاهش دهیم.
- Hypervisor: ازحملات به hypervisor می تواند به آسانی با به روزرسانی های مرتب آن پیشگیری کرد. از آنجاییکه تعداد کمی نقاط آسیب پذیر در hypervisor وجود دارد و همچنین تعداد کم دفعاتی که باید انجام شود وجود دارد. اما مهم است که این کار انجام شود، اگرچه این به روز رسانی ها از از نفوذ پذیری zero-day پیشگیری نمی کند، اما حداقل سیستم در برابر آسیب پذیری های عادی محافظت می شود.
- اختصاص منابع: قبل از اختصاص منابع به ماشین مجازی جدید، منابع باید به درستی محافظت شوند. وقتی فضای حافظه فیزیکی به یک ماشین مجازی اختصاص داده می شود، حافظه باید کلیه حافظه صفر شود تا از نشت داده ای که در سیستم قبلی مورد استفاده قرار میگرفته جلوگیری شود.همین شرایط برای داده دیسک سخت که ممکن است هنوز پس از پارتیشن بندی جدید وجود داشته باشد،صادق است. یک ماشین مجازی جدید می تواند از ابزارهای قانونی متفاوتی برای خواندن همه محتوای ساختاربندی نشده دیسک سخت به یک فایل استفاده کرده و آن را برای نشتی داده تحلیل نماید. برای جلوگیری از این شرایط، ما باید دیسک سخت را قبل از اختصاص به یک ماشین مجازی جدید با پارتیشن بندی قبلی آن صفر کنیم.
- حملات ماشین مجازی: باید مطمئن شویم که نرم افزار مجازی سازی زیربنایی می تواند میان ترافیک ورودی و خروجی از ماشین مجازی تمایل قائل شود. این ترافیک همچنین نیازمند تحلیل حملات ممکن شناخته شده است. یک راه برای انجام این امر، استفاده از port mirroring برای کپی هر ترافیک بر روی یک پورت خاص در یک سوئیچ به پورت دیگر برای تحلیل داده توسط IDS/IPS است.
- حملات مهاجرت: حملات مهاجرت می تواند با استفاده از مکانیزم مناسبی برای یافتن و جلوگیری کردن از حملات MITM کنترل شود. برای بهبود امنیت، مهاجرت باید از یک کانال ارتباطی امن مانند TLS انجام شود.
جمع بندی
در اینجا ما دیدیدم که چگونه یک محیط مجازی سازی در اپلیکیشن های بر اساس ابر مورد استفاده قرار می گیرد. این شرایط را با یک محیط سنتی مقایسه کرده نگرانی هایی را که در آن وجود دارد ارائه کردیم. ما بطور خاص از حملات hypervisor که یک نفوذ پذیری در آن موجب بهره برداری برای دسترسی به هاست بستر می شود صحبت کردیم. همچنین ریسک نشت داده از اختصاص منابع نیز مطرح شد. جاییکه یک ماشین مجازی می تواند داده را از حافظه فیزیکی و یا دیسک سخت ماشین مجازی قبلی بخواند. همچنین امکان حمله به ماشین های مجازی در یک بستر فیزیکی از طریق یک ماشین مجازی مورد حمله قرار گرفته بر روی همان بستر فیزیکی بدون کشف در یک بازه زمانی طولانی وجود دارد همچنین در مورد یک راه کپی از کل یک دیسک سخت مجازی با استفاده از حمله MITM در صورت مهاجرت صحبت کردیم.
در پایان مقاله راه کارهایی را برای مقاوم سازی در برابر مشکلات امنیتی که درباره آن صحبت کرده بودیم، مطرح کردیم. در انتها باید تاکید کنیم که ایمن سازی ماشین های مجازی به طور مطلق امکان پذیر نیست. ما تنها باید از نگرانی های امنیتی که وجود دارد آگاه باشیم. در حالی که مهاجرت در محل اتفاق می افتد ما باید زمان برای کنترل آن و مطمئن شدن از ایمن بود در برابر تهدیدات صرف کنیم.