Bulut Bilişim Güvenliği 85 -...

14
Bulut Bilişim Güvenliği 85 Evrim FURUNCU GEBZE YÜKSEK TEKNOLOJİSİ ENSTİTÜSÜ [email protected] Özet: “Bulut Bilişim” (Cloud Computing) günümüz Internet dünyasında ön plana çıkan kavramların başında geliyor. Bulut bilişim altyapısında alınan güvenlik önlemleri ve kontrolleri aslında normal bilişim teknolojileri (IT) alt yapısı için alınan önlemlerden çok farklılık göstermese de, sunulan servisler ve altyapısı nedeniyle bulut bilişim geleneksel bilişim teknolojileri çözümlerinden daha fazla riske sahiptir. Bu çalışmada bulut bilişimde hali hazırda bulunan risklerden ve korunma yöntemlerinden bahsedilecektir. Çalışmanın yoğunluğu daha çok sanallaştırma teknolojisi güvenliği ve bulut bilişim altyapısında kullanılacak sanal güvenlik cihazlarının üzerinde olacaktır. Geleneksel güvenlik duvarı ve nüfus tespit sistemleri aynı fiziksel makine üzerinde bulunan ve birbirine sanal bir ağla bağlı olan sanal makineleri korumakta yetersiz kalmaktadır. Bu sebeple yeni ortaya atılan ve piyasaya yeni çıkmış olan sanal güvenlik duvarı ve sanal nüfus tespit sistemlerinden bahsedilecektir. Anahtar Kelimeler Bulut Bilişim, Bulut Bilişim Güvenliği, Sanallaştırma, Sanallaştırma Güvenliği, Sanal Güvenlik Cihazları, Sanallaştırma Programlarının Açıklıkları 1. Giriş En basit tanımıyla bulut bilişim, gelişen bağlantı hızları sayesinde uzaktaki güçlü sunucuların kaynaklarının kullanılarak işlerin yapılmasıdır. Aslında bu hâlihazırda kullanılan bir durumdur. Hosting firmalarından bir sunucu kiraladığınızda, uzakta bulunan sunucuyu kendi sitenizi yayınlamakta veya programlarınızı çalıştırmakta kullanıyordunuz (hosting). Veya üniversitelerde araştırma yapılırken, araştırma yükünün hâlihazırda bulunan bilgisayarlar arasında paylaştırılması (grid computing). Dünya Dışı Akıllı Yaşam Araştırması (SETI) projesinde kullanılan SETI@home projesi dağıtımlı hesaplamaya (grid computing) bir örnek sayılabilir. Görüldüğü üzere aslında bulut bilişim hosting+grid computing birleşimidir. Bulut bilişimin arkasında yatan kavram 1960 yılına kadar gitmektedir. John McCarthy’ın “Hesaplama bir gün bir kamu hizmeti olarak organize edilebilir” fikri bulut bilişimin temeli sayılır. Elektriğin yaygınlaşması bulut bilişim ile karşılaştırılmaktadır. Evler, iş yerleri ve kasabalar kendi Şekil 1 – Bulut Bilişim Temelleri

Transcript of Bulut Bilişim Güvenliği 85 -...

Bulut Bilişim Güvenliği 85 Evrim FURUNCU

GEBZE YÜKSEK TEKNOLOJİSİ ENSTİTÜSÜ [email protected]

Özet:

“Bulut Bilişim” (Cloud Computing) günümüz Internet dünyasında ön plana çıkan kavramların başında geliyor. Bulut bilişim altyapısında alınan güvenlik önlemleri ve kontrolleri aslında normal bilişim teknolojileri (IT) alt yapısı için alınan önlemlerden çok farklılık göstermese de, sunulan servisler ve altyapısı nedeniyle bulut bilişim geleneksel bilişim teknolojileri çözümlerinden daha fazla riske sahiptir. Bu çalışmada bulut bilişimde hali hazırda bulunan risklerden ve korunma yöntemlerinden bahsedilecektir. Çalışmanın yoğunluğu daha çok sanallaştırma teknolojisi güvenliği ve bulut bilişim altyapısında kullanılacak sanal güvenlik cihazlarının üzerinde olacaktır. Geleneksel güvenlik duvarı ve nüfus tespit sistemleri aynı fiziksel makine üzerinde bulunan ve birbirine sanal bir ağla bağlı olan sanal makineleri korumakta yetersiz kalmaktadır. Bu sebeple yeni ortaya atılan ve piyasaya yeni çıkmış olan sanal güvenlik duvarı ve sanal nüfus tespit sistemlerinden bahsedilecektir.

Anahtar Kelimeler Bulut Bilişim, Bulut Bilişim Güvenliği, Sanallaştırma, Sanallaştırma Güvenliği, Sanal Güvenlik Cihazları, Sanallaştırma Programlarının Açıklıkları

1. Giriş

En basit tanımıyla bulut bilişim, gelişen bağlantı hızları sayesinde uzaktaki güçlü sunucuların kaynaklarının kullanılarak işlerin yapılmasıdır. Aslında bu hâlihazırda kullanılan bir durumdur. Hosting firmalarından bir sunucu kiraladığınızda, uzakta bulunan sunucuyu kendi sitenizi yayınlamakta veya programlarınızı çalıştırmakta kullanıyordunuz (hosting). Veya üniversitelerde araştırma yapılırken, araştırma yükünün hâlihazırda bulunan bilgisayarlar arasında paylaştırılması (grid computing). Dünya Dışı Akıllı Yaşam Araştırması (SETI) projesinde kullanılan SETI@home projesi dağıtımlı hesaplamaya (grid computing) bir örnek sayılabilir. Görüldüğü üzere aslında bulut bilişim hosting+grid computing birleşimidir.

Bulut bilişimin arkasında yatan kavram 1960 yılına kadar gitmektedir. John McCarthy’ın “Hesaplama bir gün bir kamu hizmeti olarak organize edilebilir” fikri bulut bilişimin temeli sayılır. Elektriğin yaygınlaşması bulut bilişim ile karşılaştırılmaktadır. Evler, iş yerleri ve kasabalar kendi

Şekil 1 – Bulut Bilişim Temelleri

kaynaklarından enerji üretmek ve buna bel bağlamak istemediler. Bu yüzden kendilerini daha büyük bir elektrik şebekesine bağladılar. Bu bağlantı ile birlikte para ve zaman kazancı sağlamakla ile beraber daha büyük başarı ve daha güvenilir bir güç elde ettiler. Bugün bulut bilişimin sahip olduğu tüm karakterler, Douglas Parkhill’in 1966 yayınladığı “The Challenge of the Computer Utility” kitabında elektrik endüstrisi ile karşılaştırılmıştır.

Benzer bir şekilde, bulut bilişimde servis sağlayıcılar ve işletmeler için önemli bir fırsatı temsil ediyor. Bulut bilişime bel bağlayarak, işletmeler bilgisayar kaynakları maliyetlerinde tasarruf, esneklik ve seçim elde edebilirler. Talep üzerine kapasite ekleyerek, işletmeler bulut bilişimi kendi altyapılarını genişletme kullanabilirler.

Bulut bilişim servislerinin sunulmasında üç adet model bulunmaktadır: 1. Servis Olarak Yazılım (Software as a Service), bulut altyapısı üstünde

uygulamaların sunulmasıdır. Bu serviste kullanıcılar İnternete bağlandıkları herhangi bir yerden, kendi sistemlerine bir şey yükleme gereği duymadan sunulan uygulamaları kullanabilirler. Bu tip servislerde en yaygın örnekler, e-posta servisleri, müşteri yönetimi ve ofis yazılımları gibi uygulamalardır.

2. Servis Olarak Platform (Platform as a Service), hizmetinde kullanıcı servis sağlayıcıdan üzerinde kendi uygulamasını geliştirebileceği ve çalıştırabileceği bir platform satın alır. PaaS ortamları geliştirme araçlarının sunucuda tutulduğu bir geliştirme altyapısıdır. Bu servise örnek, Python ve Django tabanlı Google AppEngine, Java/Eclipse tabanlı LongJump ve EC2 üstünde barındırılan ve Java tabanlı görsel geliştirme stüdyosu Wavemarker örnek verilebilir [1].

3. Servis Olarak Altyapı (Infrastructure as a Service), müşterilere servislerin sanallaştırma ortamı gibi sunucu çiftlikleri üzerinden verilmesi hizmetidir. Bulut bilişim için fiziksel donanım temini şekilde özetlenebilir. Bu servise örnek olarak Amazon.com’un sunduğu EC2 (Elastic Compute Cloud) hizmeti örnek veriebilir.

Yukarıda açıklamalara sonucunda ve şekil 2’de görüldüğü üzere, bu servisler birbiri

üzerinden çalışabilirler. Şekil 3’de ise bu servislerin kimler için değerli, kısaca, kimler tarafından yoğun olarak kullanıldığı gösterilmektedir. Görüldüğü üzere servis olarak yazılım (SaaS) hizmeti daha çok son kullanıcıyı ilgilendirmekte ve en yaygın olarak kullanılan hizmetlerden biri olmaktadır.

Şekil 2 – Bulut Hizmet Modelleri [2] Şekil 3 – Bulut Hizmet Kullanıcıları [3]

Bahsedilen bulut hizmetleri dört farklı tipte sunulmaktadır Bu yapılar: 1. Genel Bulut (Public Cloud): Internet üzerindeki sunucular ile verilen bulut hizmeti. 2. Özel Bulut (Private Cloud):

Şirket bünyesinde oluşturulmuş sunucular ile verilen bulut hizmeti.

3. Ortaklık Bulutu (Community Cloud): Aynı ihtiyaçlara sahip ve altyapısını paylaşmayı kabul eden kurumların bulut bilişim faydalarını fark etmeleri sonucu kurdukları yapıdır.

4. Karma Bulut (Hybrid Cloud): Şirketlerin güvenlik ve verecekleri hizmetler nedeniyle hem genel hem de özel bulut kullanması sonucu ortaya çıkan yapıdır. Örneğin bir firma ürünlerini geliştirmek için özel bulut kullanırken bu servisleri genel bulut üzerinden sunar.

Bulut bilişim sağladığı avantajlardan biraz bahsetmek gerekirse:

Düşük Maliyet Yüksek Erişilebilirlik Platform Bağımsız Hizmetin ölçeğini arttırıp azaltabilen - kullandığın kadar öde İnternet olan her yerden erişime açık Bakım ve yedekleme işlemlerine ihtiyaç duymayan Yama ve güvenlik yönetimine ihtiyaç duymayan Kolay kaynak kullanımı izleme ve raporlama sunar

Temel anlamda fırsatın olduğu bir yerde risk de bulunmaktadır (Fırsat=Risk). Bulut

bilişimde risklerin önemi ve derecisi kurumların [2]: Faaliyet alanına, İç yapılarına ve ilişkide olduklarına, Hizmet sağlayıcı ile kurduğu güven ilişkisine, Özel şartlarına göre değişir.

Bulut bilişim riskleri ise aşağıdaki gibi özetlenebilir [2]:

Hizmet devamlılığı ve kullanılırlığı Veri güvenliği ve gizliliği Veri denetlene bilirliği, uyumluluğu ve yasal düzenlemeler Hizmet sağlayıcı bağımlılığı ve veri kilitlenmesi Yönetim ara yüzü ve uzaktan erişim Bant genişliği ve veri transferi Yazılım lisanslama

Şekil 4 – Bulut Bilişim Hizmet Sunum Tipleri [2]

Bu çalışma kapsamında ikinci kısımda bulut bilişimde güvenlik sorunlarından, bu sorunların normal sistemlerden farklı olup olmadığına ve bunlara karşı alınabilecek önlemlerden bahsedilecektir. Üçün kısımda ise bulut bilişim var olmasını sağlayan sanallaştırma mimarisinde bulunan ve olabilecek güvenlik sorunlarına değinilecektir. Özellikle sanal cihazların birbirileri ile anlaşırken kullandıkları sanal ağın güvenliğine değinilecektir. Ayrıca bu kısımda sanal sistemlerde kullanılan sanal makine programlarının ve sanal ağların sorunlara çözüm olarak geliştirilen sanal güvenlik cihazlarından bahsedilecektir. Son olarak gelecekte ne gibi güvenlik sorunları çıkabileceği ve bununla ilgili yapabilecek çalışmalara değinilmiştir. 2. Bulut Bilişim Güvenlik Analizi

Bulut bilişimin kullanım kolaylığı ve maliyet gibi iki büyük yararı olmakla birlikte, kritik uygulamaların ve hassas verilerin halka açık (public) ve paylaşılan ortamlara taşımakla birlikte ortaya önemli güvenlik sorunları çıkmaktır. Bu sorunlar genelde bütün yapılar için ortak olsa da, en önemli güvenlik sorunları genel bulut yapısında yaşanmaktadır.

Bu sorunların en başını çeken ise veri güvenliğidir. Bulut bilişimde hesaplamalar uzakta

yapılabilmekte fakat günümüzde bulut bilişim daha çok verilerin güvenli bir ortamda saklanması ve rahatlıkla erişebilmesi için kullanılmaktadır. Bu nedenle güvenlik sorunlarının çoğu bulut içerisinde bulunan verinin kim tarafından görüldüğü, olabilecek doğal afetler veya hırsızlıklara karşı korunması ile beraber bir arıza sonucu verilerin nasıl geri getirilmesi ile alakalıdır.

2.1. Veri Güvenliği ve Gizliliği

Bulut bilişimde veriler ortak ve paylaşılan bir ortamda saklanmaktadır. Genel bulut yapısı düşünüldüğünde hizmet alan kurumların birbirlerinin verilerini göremiyor ve değiştiremiyor olması gerekir. Aynı şekilde, şirkete özel bir bulut mimarisinde bir bölümün öbür bölümün verilerini görememesi ve değiştirememesi gerekebilir. Bu noktada veri yalıtımının başarılı bir şekilde yapılması gerekmektedir. Güvenliğin sağlanabilmesi için birçok yöntem bulunmaktadır. Örnek olarak erişim yönetimi ve kullanıcı veya hizmet veren tarafında (hatta iki tarafta) verilerin şifrelenmesi verilebilir.

Veri güvenliği konusunda önemli bir noktada veri transferlerinin güvenli yapılmasıdır.

Kullanıcı tarafından gönderilen verilerin veya hizmet sağlayıcı tarafından sunulan verilerin güvenli bir transfer kanalı ile gönderilmesi gerekir. Ayrıca yüksek erişilebilirlik sağlamak amacıyla, hizmet sağlayıcı verilerin dünya üzerinde başka bir noktaya aktarılması sırasında yine bu verilerin güvenliği ve sızdırılmamasına dikkat edilmeli ve güvenli yollar ile yapılması gerekmektedir. 2.2. Erişilebilirlik

Tüm verilerin bulutun içinde saklanması, hizmette oluşabilecek bir kesinti anında kurumun servislerinde bir kesintiye neden olacaktır. Bu iki türlü olabilmektedir: hizmet aldığınız sağlayıcınızda oluşabilecek bir kesinti veya kurumunuzun Internet bağlantısında oluşabilecek bir kesinti.

Bulut bilişimin aslında bir kurumun kendi başına oluşturabileceği altyapıdan daha sağlam

bir altyapıya sahiptir. Çünkü bir kurumun yedekli hatlarla, yedekli sunucular, yedekli

jeneratör, felaket anı için benzer bir veri merkezi ile ulaşabileceği çalışma süresine (uptime), var olan bulut bilişim veri merkezleri ile daha uygun maliyete zaten ulaşabilmektesiniz. Bir kurumun tek başına böyle bir altyapı yaratması ciddi bir maliyet gerektirir.

Bir başka yönden bakarsak, kurumumuzda bulunan Internet altyapısında olabilecek bir

kesintide aynı şekilde servisleri kesintiye yaratabilir. Bu nedenle kurumda bulunan Internet altyapısının yedekli olması ve gerekli durumlarda farklı ve birbirinden bağımsız tipte hizmetlerden (GDSL ve 3G gibi) yararlanılması gereklidir.

Değinilmesi gereken bir başka konu ise var olan kurum Internet hattının bant genişliğinin

bulut bilişimi kaldırabilecek seviyede olması gerekmektedir. Eğer böyle bir bant genişliğine sahip olunmadığı takdirde servis kalitesi düşmektedir. 2.3. Hizmet Sağlayıcı Bağımlılığı

Bulut bilişim kullanırken alınan risklerden en büyüğü verilerinizi başka bir firmanın

sunucularında saklamanızdır. Bu noktada verileriniz sakladığınız firmanın iflas etmemesi gerekmektedir. Bunun nedeni ise firmanın yok olması durumunda verilerinize ne olacağının bilmeniz gerekmesidir. Bu sebeple bulut bilişim geçiş yapacak iseniz küresel bir hizmet sağlayıcı ile çalışarak riski azaltabilirsiniz.

Bu hususta dikkat edilmesi gereken başka bir nokta ise, kullandığınız servis sağlayıcının

ortak standartlar uymasıdır. İleri ki bir tarihte hizmet sağlayıcınızı değiştirmeniz gerektiğinde, başka bir hizmet sağlayıcınıza bu verileri bir sorun olmadan aktarabilmeniz için bu gereklidir.

Bütün verilerinizi bir firmaya gönderir iseniz, kurumunuzun geleceğini bu firmaya

bağlamış olursunuz. Bunun önüne geçmek için, birden çok firma ile çalışabilirsiniz. Bu şekilde bir firmada yedeğiniz bulunmakta olduğundan riski azaltmış olursunuz. 2.4. Kimlik ve Erişim Yönetimi

Verilerin koruması gibi doğru kişilerin bu verilere ulaşmasını sağlamakta önemlidir. Kişilerin yetkileri dâhilinde izin verilen verileri görmesi gereklidir. Buradaki risk aslında geleneksel bilgi teknolojinde mevcut olan kimlik erişim yöntemleridir. Kurumda tutulan ve kimin nereye erişebileceğini gösteren erişim kontrol listelerinin bulut yapısıyla uyumlu olması gerekmektedir. Bu iki yolla yapılmaktadır: mevcut bulunan erişim yönetim sisteminin bulut bilişimle bütünleştirilmesi veya bulut bilişim hizmet sağlayıcısının bu altyapıyı size sunması.

Bulut bilişimde hâlihazırda kullanılan iki adet kimlik erişim yönetim protokolü

bulunmaktadır:[3]

Security Assertion Markup Language (SAML): SAML XML standartları üzerine kurulmuş, yetkilendirme ve kimlik doğrulama özniteliklerini bulut bilişim hizmet sağlayıcısı ile kimlik sağlayıcı arasında takas etmekte kullanılan bir araçtır. SAML temel hedefi interneti kullanarak tek oturum girişini desteklemektir. Kullanım şekli basitçe anlatılması gerekirse, kullanıcı bir kaynağa erişmesi gerektiğinde, hizmet sağlayıcı kullanıcıyı kimlik sağlayıcıya yönlendirir. Sonra kullanıcı kendini kimlik sağlayıcı tanıtır ve şifrelenmiş SAML cevabını alır. Bunu hizmet sağlayıcıya gönderir ve sisteme giriş yapar.

Open Authentication (OAuth) Protocol: OAuth protokolü bir kurumun veya şahısın özel kaynaklarını bir hizmet sağlayıcıdan başka bir hizmet sağlayıcıya kişinin kullanıcı adı ve parolası gibi kimlik bilgilerinin açığa çıkarmadan paylaşmasını sağlar. Temel hedefi güvenli bir uygulama programla ara yüzüne (API) yetkili erişimi sağlamaktır. Kullanıcı tarafından bakıldığında ise, birden çok hizmet sağlayıcı üzerinde çalışan farklı uygulamalara kimlik bilgilerini dağıtmadan kullanabilmesini sağlar.

Bulut bilişimde neredeyse her şey bir hizmet olarak sunulabildiğinden dolayı, “servis

olarak kimlik yönetimi”( Identity Management as a Service (IDaaS)) [3] şeklinde bir model üretilebilir. Böylece kimlik yönetimi de başka bir bulut hizmeti sağlayıcı tarafında yönetilebilir. 2.5. Uygulama Güvenliği

Uygulama güvenliğinin günümüzde kullanılan web servislerinden farkı fazla bulunmaktadır. Hâlihazırda bulunan SQL enjeksiyonu, çapraz kod çalıştırma (Cross site scripting) ve çapraz istek sahteciliği (Cross site request forging) gibi saldırılar bulut içinde çalışan programlar içinde aynı şekilde kullanılabilir.

Uygulama güvenliği servis olarak yazılım modelinde önemli bir konu olmaktadır.

Örneğin, bulut hizmet sağlayıcı üzerinde bulunan belgelerinizin, bulut hizmet sağlayıcısının kullandığı uygulamadaki (pdf okuyucu veya metin düzenleyici gibi) bir açık nedeni ile başka kişiler tarafından görülmesi ciddi bir güvenlik zafiyeti oluşturmaktadır.

Bu gibi saldırıların engellenmesi ve bulut temelli güvenlik modeli oluşturulmasına katkıda

bulunmak amacıyla, bulut bilişim kullanıcılarının anti virüs ve güvenlik yazılımları kurmasına gerek bırakmayan bulut-içi (in-the-cloud) tarama hizmeti, servis sağlayıcılar tarafından başlatıldı. Böylece, bulut kullanıcılarının zararlı yazılımlara, araya girme (man-in-the-middle) saldırılarına ve sistemdeki açık kapılara (loophole) karşı korunmasına, bulut içindeki saldırıların engellenmesine çalışılmaktadır. [4] 2.6. Yasal Uyumluluk

Kurumun hangi verilerin, nerede ve nasıl saklandığı yasalar çerçevesinde uyumlu olması gerekir. Yasalarla sorun yaşanabilecek bazı huşular:

Verinin saklandığı yer, hizmetin verildiği ülke dâhilinde olması gerekebilir.

Örneğin bankalarda bulunan müşteri bilgilerinin ülke dışında saklanması yasalarla yasaklanmıştır.

Verilerin hangi şifreleme algoritmaları ile saklanması seçilirken dikkat edilmelidir. Bazı ülkelerde çeşitli şifreleme algoritmalarının kullanımları yasalar tarafından yasaklanmıştır ve kullanılması durumda cezalar verilmektedir.

Hangi tipte verilerin bulut ortamında saklanması bazı ülkelerde yasalar tarafından sınırlandırılmıştır.

Bazı tipteki verilerin bazı ülkelere aktarılması veya orada görüntülenmesi yasaklanmıştır.

Bilgilerinizi fiziksel olarak saklandığı ülkedeki yasalar, gerek görüldüğü takdirde sizin verilerinize el koyulmasına neden olabilir. Buna en güzel örnek

Amerika’daki yasaların Amerikan hükumetine ve diğer birimlerine kurumlara ait bilgilere bile erişimin için neredeyse sınırsız haklar tanımakta. [4]

Hizmet sağlayıcı ile bir sorun oldu mu mahkeme yeri neresi olacak? Veri merkezi bir felaket ile karşı karşıya gelirse, bilgilerin güvenliği hangi yasalar

ile kimler tarafından korunacak? Bulut bilişim altyapısına veya uygulamalarına oluşabilecek bir saldırı hangi

ülkenin, hangi yasası, ne şekilde koruyor.

3. Sanallaştırma Güvenliği

Bulut bilişim uzun bir süredir ortalıkta bulunan bir fikir idi. Bu fikri pratik hale geçiren teknoloji ise son yıllarda popülaritesi artan sanallaştırma teknolojisidir. Sanallaştırma teknolojisi aslında 1960 yıllarında başlamak üzere mainframe bilgisayarların mantıksal olarak ayrı sanal makinelere parçalanması şeklinde yapılıyordu. Fakat 1980-1990 yıllara doğru sanallaştırma teknolojisi, sunucu-istemci uygulamaları ve ucuz x86 mimarisini destekleyen sunucu ve masaüstü bilgisayarlarının çıkması ile terkedildi. Fakat x86 mimarisini destekleyen sunucu ve istemcilerin artması ile beraber yeni sorunlar çıktı. Bu sorunlar:

Kullanılan sunucular genelde %10-

%15 kapasite ile çalışması, Artan fiziksel altyapı maliyetleri, Artan bilgi teknolojileri yönetim

maliyetleri, Yetersiz yük devretme (failover) ve

afet koruması, Son kullanıcı sistemlerinin bakım için

gerektirdiği maliyet artışıdır. İlk zamanlarda x86 mimarisi sanallaştırma

teknolojisini desteklemiyordu. Bu nedenle

90’ların sonları sanallaştırma teknolojisi üzerinde çalışılmaya başlandı. Ucuz x86 sistemler üzerinde geliştirilen sanallaştırma teknoloji, uzun süre ortalıkta bulunan bulut bilişim fikrini gerçekleştirilmesini sağlamıştır.

Günümüzde kullanılan sanallaştırma mimarisi, fiziksel donanımın üzerinde çalışan ve

sanal işletim sistemlerini (veya bazı durumlarda sanal aygıtları) yöneten sanal makine yöneticisi (SMY) (hypervisor) tarafından sağlanır. SMY sanal sistemler ile fiziksel donanım arasında bir katman oluşturarak sanallaştırma işlevini yapar. Ayrıca SMY’lerin içinde veya hem SMY içinde hem de sanal sistemlerin içinde bulunan yazılımlar ile sanal sistemlerin yönetimi sağlanır.

Tipik bir bulut bilişim sistemi, fiziksel

makinelerde bulunan SMY’lerin birbirleri ile bir ara yüz ile anlaşarak ortaklaşa çalışması

Şekil 5 – Sanallaştırma Mimarisi [8]

Şekil 6 – Bir Bulut Sistem [8]

sonucunda oluşur. Kullanıcıdan gelen istekler bir uygulama programlama ara yüzü (API) ile sanal makinelerin sistemleri tarafından anlaşılabilecek hala dönüştürülür. 3.1. Sanal Makine Yöneticisi Sorunları

Sanal makine yöneticileri, konuk işletim sistemlerine yönetmekle kalmaz aynı zamanda sanal sistemlere bir sanal işletim platformu sunar. Günümüze kadar SMY’lerin sunduğu sanallaştırma katmanı içerideki konuk sistemleri koruyan artı bir katman olarak sayılmıştır.

Fakat sanallaştırma teknolojisinin sağladığı artı katmanın güvenlik değil de daha içinde

yeni hataların bulunabileceği bir katman olarak görüldü. Buna en iyi örneklerden biri 2009 yılında yapılan Blackhat konferansında gösterildi. [6] Kostya Kortchinsky sanal sistemler içerisinde DirectX desteklemeye başlayan VMware firmasının yazılımında gösterdiği açıklık ile sanal sistemden fiziksel sisteme bir köprü kurarak, fiziksel sistem üzerinde istenmeyen kodlar çalıştırdı. Bu şekilde fiziksel sunucuyu ve içindeki bütün sanal sistemleri eline geçirdi. Buradaki temel yaklaşım, sanal işletim sistemleri içinde çalışan sanal aygıtlar için kendi sürücüsünü yazarak, sanal aygıtın fiziksel sunucu üstünde kullandığı bellek kısmına kötü amaçlı kod yerleştirmesidir. Bu çalışmanın sonucunda belirtilen bir başka önemli konu ise, bu DirectX teknolojisinin sunucu sanallaştırma sistemlerinde kullanılan yazılıma eklenmesi idi. Sunucu sistemler için üretilen sanallaştırma yazılımında DirectX ihtiyaç duyulan bir API değildir. Buradan çıkarılacak başka bir derste, SMY’ların üstünde kullanılmayan eklentilerin kapatılmasıdır.

Unutulmamalıdır ki SMY’ler aynı zamanda işletim sistemi üzerinde çalışan bir yazılımdır.

Bu nedenle SMY’lar de tipik yazılımlarda görülen heap taşması, bellek taşması gibi sorunlar da görülmektedir. Bunlara bazı örnekler:

Microsoft’un Virtual PC yazılımında yığın(heap) taşması nedeniyle olabilecek keyfi ayrıcalık yükseltmesi [7],

VMware yazılımlarında bulunan konuk işletim sisteminde oluşabilecek bellek taşması nedeniyle, fiziksel sunucu üzerinde keyfi kod çalıştırılması [8],

Xen Hypervisor sisteminin içinde bulunan bir konuk sistemde değiştirilmiş grub.conf ile dom0 erişimi ve keyfi kod çalıştırılması [9].

Günümüzde piyasada bulunan kapalı ve açık kaynak kodlu SMY’ler üzerinde Tavis Ormandy [10] yaptığı çalışmada bütün SMY’ler de en az bir açıklık olduğu gözlendi. Çalışmada kullanılan hiçbir sanal makine yapılan test işlemine dayanacak kadar güçlü bulunamadı. Bu çalışmada ayrıca, bir saldırganın kısıtlanmış sanal ortamdan fiziksel sisteme kaçarken sanal sistem üzerinde kullanabileceği birden fazla açıklık gösterildi. Bu sonuçlar sanallaştırma güvenliğinde araştırılma yapılması ihtiyacını göstermiş oldu.

Sanal makine yöneticileri karmaşıktırlar. Xen Hypervisor üç yüz bin (300,000) satır

koddan oluştuğu düşünülürse olayın büyüklüğü ortaya çıkmaktadır. SMY’lerde oluşabilecek sorunlar sadece açıklıklarla sınırlı değildir. Sanal sistemler artıkça, sanal sistem yönetimi için kullanılan uygulamaların ölçeklenebilirliği sorun olmakta. Bir fiziksel sunucu üzerinde bulunan 150 tane sanal makinede aynı anda daha önceden belirlenmiş anti virüs taraması olduğunu düşünün. Sistemin girdi-çıktı bant genişliğini boğar. Bunun dışında sanallaştırma ve bulut servislerine erişimde kullanılan yazılım programlama ara yüzünde oluşacak hatalar tüm sistemi etkilemektedir. Burada oluşacak bir açıklık, tüm sistemde büyük bir sorun yaratabilir.

Sanal sistemlerde düşünülmesi gereken bir başka nokta ise yalıtımdır. Bir firmanın ve bu

firmanın rakibinin aynı fiziksel sunucu üzerinde çalışan sanal sistemleri olabilir. Eğer gerekli yalıtım bu sistemler arasında sağlanmaz ise, sonuçlar felaket olabilir. Bu yalıtımı sağlamak sanal makine yönetim sistemlerinin ve bulut sisteme erişirken kullanılan API’ler görevidir. Ayrıca bu yalıtımın aşılması sonucunda oluşabilecek hasarın engellenmesi sanal ağ güvenlik sistemleri ile sağlanabilir. 3.2. Sanal Ağ Güvenliği

Sanal ağ, aynı fiziksel makine veya birden fazla fiziksel makine üzerinde çalışan sanal sistemlerin aralarında kurulan ağdır. Sanal ağ aynı fiziksel ağ şeklinde yönetebilinen bir ağdır. Sanal ağ fiziksel makine üzerinden internete açılır.

Temel olarak sanal ağlar sanal makineleri iki farklı bağlantı şeklini destekler:

Köprü (Bridge): Ağ sanal bir hub üzerinde çalışır. Yönlendirme (Route): Ağ sanal bir switch üzerinde çalışır.

Hub ve switch burada dikkat çeken iki terimdir. Fiziksel ağlardan biliyoruz ki hublar

aldıkları her paketi tüm portlarına yollar. Bu sanal ağ içinde geçerlidir. Bir sanal sistem köprü kipinde ağa bağlanır ise, o ağ üzerinden geçen tüm paketler bütün sanal makinelere gönderileceğinden dolayı, bir sanal sistemin üzerine koyulacak koklama (sniffing) yazılımı sayesinde tüm ağ dinlenmiş olur. Aynı şekilde yine fiziksel ağlardan bildiğimiz üzere, anahtarlayıcıları ARP zehirlemesi saldırısı yaparak bütün portlarına veriyi basmasını yani huba çevirmeyi sağlayabiliyoruz. Aynı şekilde sanal ağlarda da bu yapılabilir ve alınan paketler koklanabilir. [11]

Wu, Hanqian; Ding, Yi; Winer, C.; Yao, Li Aralık 2010 yılında yapılan [11] çalışmada bu

koklama ve zehirleme saldırılarına çözüm bulmak amacıyla üç katmanlı bir sistem önerilmiş. Bu sistemi oluşturan katmanlar ise:

Yönlendirme Katmanı: Bu katman geleneksel yönlendirme katmanı ile aynı

fonksiyonlara sahip. Bu katmanın amacı fiziksel ağa bağlanmakla birlikte fiziksel ağ ile sanal ağ arasında mantıksal bir özel kanal yaratmaktır.

Güvenlik Duvarı: Bu katmanın temel amacı sanal sistemler tarafından başlatılan sızma ve koklama saldırılarını engellemektir. ARP tablosunu değiştirmeye çalışan paketler burada düşürülür. Bu sistem Xen SMY’sinde iptables paket filtreleme sistemi kullanılarak oluşturabilir.

Paylaşılan Ağ Katmanı: Paylaşılan bir ağın içerisinde sanal makinelerin birbirleri ile olan iletişimini engellemek zor bir iştir. Bu katmanda, sanal makinelerin birbirlerine güvendiği bir sanal paylaşılmış ağa bağlı oldukları kabul edilir. Bu varsayım aynı şirket için çalışan sanal makinelerin aynı paylaşılan ağda oldukları anlamına gelir.

Günümüzde fiziksel ağları korumakta kullanılan geleneksel güvenlik yazılımları sanal ağlar üzerinde olan bu sorunu çözmekte yetersiz kalıyorlar. Bunun başlıca nedeni, sanal sistemler arasında geçen bağlantıların dışarıdan bir cihaz tarafından gözlenememesi. Sanal trafiğin fiziksel makine içinden çıkarılıp fiziksel güvenlik cihazlarına gönderilip daha sonra tekrar sanal makineye gönderilmesi mimari tasarım olarak pek mümkün görünmemekte. Ayrıca bu olsa bile, sanal makineler arasında bir fiziksel makine üzerinde çalışan sanal ağ, fiziksel güvenlik ürünün kaldıramayacağı kadar yüksek olabilir. Bunun nedeni sanal ağlar bellek üzerinde oluşturulduğundan, sanal sistemler arasındaki hız çok yüksek olmakta. Elinizde çok sayıda sanal makine olduğunu düşünürseniz, hepsinin fiziksel bir güvenlik ürünü tarafından kontrolü mümkün gözükmemektedir.

Bu nedenle ki, bu cihazlar genel olarak oluşabilecek bir darboğazı engellemek amacı ile

anahtarlama ve yönlendirme noktalarından birkaç adım öteye alınırlar. Bu sebeple sanal sistemler arasında oluşacak bir saldırı, fiziksel güvenlik cihazları tarafından görünemez. Kısacası bir kör nokta oluşur. [12]

Bu kör nokta dışında bir başka sorun daha bulunmaktadır. Fiziksel ağ güvenlik

cihazlarının gelişim hızı, fiziksel sunucuların gelişim hızından çok geri kalmaktadır. Sunucuların yaşam ömrü güvenlik ürünlerinin yaşam ömrü ile karşılaştırıldığında bu fark ortaya çıkmaktadır. Sunucular çok az bir bağımlılık ile güncellenebilirken, fiziksel güvenlik ürünleri iyi test edilmiş, öngörülebilir ve oturmuş bir donanım çözümü sunmak zorundalar.

Güvenlik cihazlarının fonksiyonlarının sanallaştırılması [12] çalışmada çözüm olarak

sunulmuş. Temel olarak yapılan şey, güvenlik cihazlarının özelliklerini bir sistem içine sanallaştırılarak, oluşturulan bu sistemi aynı diğer sanal sistemler gibi fiziksel sunucuya bağlayarak diğer sistemleri kontrol eden bir sistem yaratma fikrine dayanıyor. Böylece her fiziksel sunucuya bir veya birden fazla sanal güvenlik cihazı düştüğünden dolayı, sanal sistemler arasındaki bağlantı çok rahatlıkla gözetlenebiliyor.

Çalışmada aşağıdaki şekilde gösterildiği gibi basit yönlendirme ve anahtarlama dışında

tüm güvenlik ürünleri fiziksel sunucular içinde sanal sistemler ile birlikte bulunan sanal güvenlik cihazlarına çevrilmiş. Bu cihazlardan bir sonraki başlıkta daha detaylı bahsedilecektir.

Şekil 7 – Bulut bilişim ile çalışan bir şirketin ağ yapısı. Sistem fiziksel güvenlik ürünleri tarafından korunmaktadır. Sanal makineler arasındaki ağ gözetlenememekte. [12]

3.3. Sanal Güvenlik Cihazları

Sanal ağların güvenliğinde fiziksel güvenlik ürünlerinin yetersiz kaldığı görününce, çalışmalar güvenlik cihazlarının fonksiyonlarının sanallaştırılması yönüne kaydı. Temel olarak bir sanal güvenlik ürünü, sanal sistem içinde çalışan bir bilgisayar cihazıdır. Cihaz olarak anılmasının sebebi ise, onun sanal bir donanım üzerinde, önceden güvenlik anlamında sertleştirilmiş bir işletim sistemi ve güvenlik yazılımı ile çalışmasıdır.

İlginçtir ki [13] çalışmada, sanal katmanın kaldırıp fiziksel ürünlere donanımsal

sanallaştırma eklentileri kullanarak, bir nevi sanal makineden haberdar fiziksel cihazlar yaratılması önerilmiştir. Çalışmada ağ kısmında verilen sanallaştırmadan haberdar Ethernet anahtarlayıcılar, bağlandıkları fiziksel makinede bulunan sanal sistemler haberdar olup her birine ayrı sanal bir bağlantısı olduğunu kabul etmektedir. Böylece aynı ağ ara yüz denetleyicisi birden fazla sanal makine tarafından paylaşılmış olmakta. Bu şekilde anahtarlayıcı üzerinde fiziksel güvenlik ürünleri kullanılabilmektedir. Fakat şu ana kadar bir uygulaması görülmemiştir.

Öte yandan sanal güvenlik aygıtlarında uygulamalar günümüzde yavaş yavaş ortaya

çıkmaktadır. Sanal güvenlik cihazlarının temel amacı, sanal sistemler arasındaki fiziksel güvenlik ürünleri tarafından izlenemeyen veri trafiğini izlemek ve denetlemektir. Sanal makineler arasında oluşabilecek saldırıları engellemek, izinsiz girişleri engellemek, bulaşabilecek virüsleri engelleyerek sanal makineleri korumakta kullanılırlar.

Sanal güvenlik ürünleri genel olarak birkaç farklı şekilde çalışmaktadır:

Her sanal makineye özel sanal güvenlik ürünü Her fiziksel sunucuya özel sanal güvenlik ürünü

Şekil 8 – Şekil 7’de bulunan ağın sanal güvenlik ürünleri kullanılarak oluşturulmuş hali. Fiziksel yönlendirme ve anahtarlama aygıtları aynı şekilde kullanılabilir. Sanal güvenlik sistemleri, sanal

sistemler ile sanal makine yönetici (hypervisor) arasında sanal bir güvelik katmanı şeklinde gösterilebilir. [12]

Sanal güvenlik duvarları üzerine yapılan [12] çalışmada, piyasada şu an bulunan VMware sanal güvenlik duvarı yapısı hakkında çeşitli bilgiler verilmiş. Temel olarak burada her fiziksel sunucuya özel sanal güvenlik politikası belirlenmiş. Fakat bu sanal güvenlik ürünün her sanal sistemde çalışan bir ajan programı bulunmaktadır. Ajan program içinde bir SMY modülü ve bir sanal güvenlik ürünü barınır. SMY üzerinde bulunan modül transparan bir şekilde sanal sistemlere sanal ağ ara yüz denetleyicisinden gelen ve giden bağlantıyı izler. Eğer şüpheli bir durum ortaya çıkar ise, sanal sistem üzerinde bulunan ajan programına durumu iletir ve gerekli işlemler yapılır.

Yeni teknolojiler genelde bir şey elde ederken bir yerden vazgeçerler (trade off). Sanal

güvenlik ürünlerinde ise sorun olan yön performans kısıtlamalarıdır. Unutmamalıyız ki sanal güvenlik ürünleri, fiziksel sunucular üzerinde çalışan bir çeşit sanal sistemdir. Bu sebeple sanal donanımlar üzerinde çalışmakta ve başka uygulamalar ile kaynakları ortak kullanmaktadırlar. Fiziksel güvenlik ürünleri hızlanma sağlamak için uygulamaya özel entegre devreler geliştirmekte bu şekilde hızlandırma işlemi gerçekleştirilmekteydi. Sanal güvenlik cihazları ise sanal altyapının desteklediği teknolojiler kullanılmakta ve bu sebeple kaynaklar yetmediği zaman diğer uygulamalar ile kaynak yarışı baş göstermektedir. Sanallaştırma teknolojisi alt tarafta yatan uygulamaya özgü olan donanıma erişime direkt olarak izin vermez. Bu sebeple uygulama özgü donanım hızlandırmasını telafi etmek amacıyla sistem üzerinde daha fazla işlem döngüleri kullanır veya daha fazla bellek değişikliği neden olur. Bu da sunucu sanallaştırma teknolojisinin amacını yok der.

Performans dışında da farklı sorunlar bulunmaktadır. Bunlardan biri de güvenli çalışan bir

platforma bu sanal güvenlik ürünlerini eklemekte çıkabilecek sorunlardır. Daha önce kullanılan mimarinin farklılığı nedeniyle sanal cihazların ortama uyumunu sağlarken sanallaştırmayı sağlayan programlarda açık verilebilir.

Bir başka önemli nokta ise, sanal güvenlik ürünlerinin doğrulanması sorunudur. Şu ana

kadar sanal güvenlik ürünlerinin doğrulanması için etkin bir yol görünmemiştir. Son olarak değinilmesi gereken önemli bir konu ise, sanal cihazların birer sanal sistem

olduğunu ve bilinmeli ki bu sistemlerde genel olarak yapılan snapshot (sistemin o anki halini kaydetme), duraklatmak ve rollback (sistemin bir önce kaydedilen duruma döndürülmesi) işlemlerinin problem yaratabileceğidir. Bu problem güvenlik ürünün zaman aşımına uğramış bir versiyonuna geri döndürülmesi ile yaşanabilir. Buna en güzel örnek sanal bir anti virüs programının imzaları 3 ay güncellenmemiş haline geri döndürülmesidir.

4. Sonuç

Bulut bilişimin birçok avantajının bulunmasına rağmen herkes için uygun bir çözüm olmadığı anlaşılmaktadır. Kritik uygulamaların bulut bilişime şu an geçmesi büyük bir risk oluşturmaktadır. Özellikle yasalar banka gibi bazı kurumların bulut bilişim kullanmasına izin

Şekil 9 – Sanal güvenlik duvarı her sistem için bir ajan program istemektedir. [12]

vermemektedir. Bir başka önemli nokta ise bulut bilişim piyasada bulunan az bilgili sistem ve ağ mühendislerini piyasadan temizleyecektir.

Bulut bilişimde güvenlik sürekli gelişmekte olan bir konudur. Bulut bilişim teknolojisi

geliştikçe, verilerin ve işlemlerin birbirinden izole olması sorunu yaşanmaktadır. Asıl amacı kaynakların paylaşımı ile verimi artırmakta olan bir sistemde yalıtım yapılması sistem geliştikçe zorlaşmaktadır. Sanal makine yöneticileri uygulamasının geliştirilirken eklenecek eklentileri dikkatli eklenmesi ve testlerinin düzenli yapılması gerektiği anlaşılmaktadır.

Bu çalışmada bulut bilişim sistemlerinde bulunan güvenlik sorunları ele alınmıştır.

Geleneksel bilgi teknolojileri sistemleri ile bazı sorunları paylaşmakta olsa da, bulut bilişim birçok noktada geleneksel bilgi teknolojileri sorunlarına getirilen çözümleri kullanamamaktadır.

Son olarak bu çalışmada bahsedilen sanal güvenlik sistemleri, bulut bilişimde güvenlik

sorunları çözmeye en uygun gözüken ve son yıllarda popülerite kazanmış cihazlardır. Sanal güvenlik cihazlarının performans sorunlarının neden oluştuğunun incelenmesi, bu sorunların azaltılması veya tamamen ortadan kaldırılması gelecek çalışmalar için uygun bir konu olmaktadır. Bulut bilişim güvenliğinde sanallaştırma güvenliğine son zamanlarda duyulan ilgiye bakarak, ilgi alanı uyan araştırmacıların bu konuda çalışmaya başlamaları önerilebilir.

KAYNAKÇA [1] Christopher Keene. (2009, Mart) The Keene View on Cloud Computing. [Online].

http://www.keeneview.com/2009/03/what-is-platform-as-service-paas.html

[2] Yakup Korkmaz. TÜBİTAK UEKAE. [Online]. http://www.tubitak.gov.tr/tubitak_content_files/bilgiguvenligi/sunular/Korkmaz_Bulut_Bilisim.ppt

[3] S.A., Chan Yeob Yeun Almulla, "Cloud computing security management," Engineering Systems Management and Its Applications (ICESMA), 2010 Second International Conference, pp. 1-7, March 2010.

[4] Yakup Korkmaz. (2010, Haziran) Bulut Bilişim Risk Değerlendirmesi - II. [Online]. http://www.bilgiguvenligi.gov.tr/guvenlik-teknolojileri/bulut-bilisim-risk-degerlendirmesi-ii.html

[5] Frank Saxton. (2009, Mart) The "No Network is 100% Secure" series. [Online]. http://unix.nocdesigns.com/cloud_computing_white_paper.htm

[6] Kostya Kortchinsky, "Cloudburst: A VMware Guest to Host Escape Story ," Blackhat USA 2009.

[7] CVE-2007-0948: Arbitary code execution via heap-based overflow in Microsoft Virtual PC. CVE-2007-0948: Arbitary code execution via heap-based overflow in Microsoft Virtual PC. [Online]. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0948

[8] CVE-2007-4496 - Arbitary code execution on the host operating system via unspecified vectors. [Online]. http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-4496

[9] CVE-2007-4993: Xen guest root can escape to domain 0 through pygrub. [Online]. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-4993

[10] Tavis Ormandy, "An Empirical Study into the Security Exposure to Hosts of Hostile Virtualized Environments ," Google, Inc, 2007.

[11] Hanqian Wu, Yi Ding, C. Winer, and Li Yao, "Network security for virtual machine in cloud computing," Computer Sciences and Convergence Information Technology (ICCIT), 2010 5th International Conference, pp. 18-21, Aralık 2010.

[12] Rohit Toshniwal, Serge Maskalik, and Allwyn Sequeira Debate's Basak, "Virtualizing networking and security in the cloud," SIGOPS Oper. Syst. , Aralık 2010.

[13] Jakub Szefer, Jennifer Rexford, and Ruby B. Lee Eric Keller, "NoHype: virtualized cloud infrastructure without the virtualization," SIGARCH Comput. Archit. News 38, pp. 350-361, Temmuz 2010.

[14] Hakan Uzuner. (2010, Aralık) ÇözümPark. [Online]. http://www.cozumpark.com/blogs/cloud_computing/archive/2010/12/26/cloud-computing-bulut-bili-im.aspx

[15] Co-Directors Aatif Iqbal, Benjamin Black, Catherine Fisher, John Cella, Jonathan Abrams, Miranda Ivana Deyrup & Shane Matthews. CLOUD COMPUTING & NATIONAL SECURITY LAW. [Online]. http://www.law.harvard.edu/students/orgs/nsrc/Cloud.pdf

[16] Huzur Saran. Virtualization and Cloud Security. [Online]. http://www.cse.iitd.ernet.in/~sbansal/csl862/lec/security.ppt

[17] CVE-2007-5497: Vulnerability in Xen Server could result in privilege escalation and arbitrary code execution. [Online]. http://support.citrix.com/article/CTX118766

[18] CVE-2008-2100: VMware Buffer Overflows in VIX API Let Local Users Execute Arbitrary Code in Host OS. [Online]. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2100

[19] R. Wojtczuk, "Subverting the Xen hypervisor," BlackHat USA, 2008.

[20] Wayne A. Jansen, "Cloud Hooks: Security and Privacy Issues in Cloud Computing ," NIST.

[21] Cloud Computing. [Online]. https://secure.wikimedia.org/wikipedia/en/wiki/Cloud_computing