Günümüz uygulamalarında gittikçe artan bir ihtiyaçta uygulamaların entegre olması ve verilerin paylaşılmasıdır. Uygulama veya veri tabanı seviyesinde birçok güvenlik standardı bulunurken bu yeni gelişen entegrasyon katmanında standartlar ve yaklaşımlar yeni yeni oluşmaya başlamıştır. Makalede bu konu üzerine yoğunlaşılacaktır.
Web servisleri konusunda dünya genelinde kabul görmüş organizasyonlar listelenecek olursa;
- OASIS (The Organization for the Advancement of Structured Information Standards)
- W3C (The World Wide Web Consortium)
- WS-I (The Web Services Interopability Organization)
- IETF (The Internet Engineering Task Force)
Bu organizasyonlar ve bu katmanda ürün piyasaya süren (IBM,Oracle – BEA, Microsoft, Software Ag, v.s.) şirketler tarafından Şekil -1 deki standartlar belirlenerek güvenli bir şekilde entegrasyonun sağlanması amaçlanmaktadır.
Bu standartlar genel olarak WS-Security standartları olarak adlandırılır. Farklı web servis üreticileri için aralarında paylaşımın güvenli şekilde sağlanmasında da “WS-Federation” standartları benimsenmiştir.
Genel olarak Web servis işleyiş sürecini güvenlik açısından inceleyecek olursak, Şekil-2 de görüldüğü üzere,
- Bir istemci web servisten önce servis bilgileri isteğinde bulunur. Burada ilk aşama güvenlik olarak servis bilgilerini bulunduran dosyalara authentication (Basic, Digest, Integrated ve Certificate Authentication) ile erişimin kısıtlanmasıdır.
- Authentication dan sonraki aşama ise yetkilendirme (authorization) aşamasıdır. Bu aşamada istemci kendini tanıtmış gerekli güvenlik onayını geçmiş ve bir istekte bulunmuştur fakat her istemcinin tüm veriye erişmesi istenmeyen bir durum olduğu için her istemciye ayrı bir yetki verilmelidir. İşte bu işlem bu adımda gerçekleşmektedir.
- İstemcinin yetkilerini sunucu tarafında kontrol ettikten sonra istemcinin güvenliği ve sunucunun güvenilirliği için mesajın kime ait olduğunun tespit edilebilmesini sağlayan imzalama (signature) aşamasına geçilir. Bu aşamada geçerli bir sertifika ile mesaj imzalanır ve karşı trafa gönderilmeye hazır hale getirilir.
- Son aşama ise mesaj içeriğinin şifrelenmesi (encryption) aşamasıdır. Bu aşamada kullandığınız platformun desteklediği yeteneklere göre istenilen formatta mesajı şifreleyebilirsiniz. Yeter ki istemci kullandığınız yöntemi bilsin ve ona göre şifrelenmiş mesajı çözüp anlamlı hale getirebilsin.
Neden web servislerinde güvenliğe dikkat edilmeli?
- Web servisleri, uygulamaların API'lerine ve hedef uygulamalara erişim sağladığından birçok güvenlik açıklıkları bulunmaktadır.
- Web servislerinin dağıtık ve uçtan-uca yapısı, tehdit ve güvenlik açıklıklarının bir uygulamadan başka uygulamalara atlamalarına neden olabilmektedir.
- İnternet ortamında çok daha fazla kullanıcı, çok daha fazla bilgi, belge, hacker v.s. dolaşmaktadır.
Mevcut Güvenlik Çözümleri Web Servisleri Güvenliği İçin Yeterli mi?
SSL Güvenliği
- Noktadan noktaya güvenlik sağlar, tüm veriyi şifreler ancak verinin içeriği ile ilgilenmez.
- Taşıma seviyesinde kullanıcı doğrulaması yapabilir, mesaj seviyesinde yapamaz.
Network Firewall
- Ağ üzerinden geçen paketlerin kaynak/hedef gibi temel özelliklerine bakıp, paketin geçip geçmemesine karar verir.
- Nereden geldiği, kimin oluşturduğu, hedefi, ne zaman geldiği gibi ayrıntılara bakmazlar.
Application Firewall
- Paketin içeriğine göre geçip geçmemesine karar verir.
- Paketin içeriği uygun mu, paketin içindeki bilgi ne kadar öncelikli, paketin içeriğinin yapısı doğru mu, gibi önemli kısımlara bakmazlar.
İşte eksik kalan bu özellikler için web servislerin temelini oluşturan XML için donanımsal veya yazılımsal firewall'lar tasarlanmıştır. Bu Firewall'lar genel olarak aşağıdaki işlemleri gerçekleştirebilir.
- Gelen XML dökümanı/mesajı yapısı, kurum tarafından belirlenen XML şemasına uyup uymadığını kontrol eder.
- Zararlı kod içerip içermediğini belirli tekniklere göre kontrol eder.Hatta bazı ürünler gömülü bir antivirüs programı barındırır,
- Gelen mesajın Mesaj Seviyesi Güvenliği (MessageLevel Security) var mı kontrol eder.
- Alıcının veya göndericinin kimlik doğrulama işlemleri ve yetkileri (Authentication and Authorization) işlemini gerçekleştirir,
- İzleme ve kayıt altına alma (Audit and Accounting) işlemlerini yapabilir,
- HTTP header, SOAP, ve XML seviyelerinde atakları bloklar. Attachment dosyaları scan edilir. Zararlı mesajlar bloklanır,
- Veri tabanından sorgulama yapabilir. Dönen veriyi XML mesajının içine ve/veya mesaj header’ine enjekte edebilir,
- Hizmet seviyesi anlaşmasına (SLA) göre yükü dengeler,
- Aynı web servis üzerinde client ’e özel politikalar tanımlanabilir,
- Client ‘a özel istek işleme sayısının sınırlanması yapılabilir,
- Client’a özel SLA (service-level agreement) tanımlama ve uyarılar yapılabilir,
- Bazı servis metotlarını belli client'lardan saklanabilir,
- Client'lar IP adres, SAML özellik, SOAP/transport header'ları bazında tanımlanabilir.
- Uyarılar windows event log, Unix/Linux syslog, SNMP, E-mail gibi farklı kanallara iletilebilir.
- Web servis erişimlerini gerçek zamanlı izleme ve raporlama yapma imklanı sağlar.
XML Firewall Şekil-3 deki gibi ideal bir mimari ortamında İlkkKontrol noktasında konumlandırılmalıdır.
Web Servislerine Yapılan Saldırı Türleri
WSDL Tarama
Bu saldırı, bir web servisi tarafından sunulan WSDL arayüzünü bulmayı sağlar. Saldırgan, web serivisi oluşturmak için kullanılan teknolojiyi tespit etmek ve ilgili güvenlik açıklarını bulmak için WSDL arayüzü taraması yapabilir. Genellikle bu tür saldırılar daha ciddi saldırılar gerçekleştirmek için örneğin; parametre kurcalama(paremeter tempering), zararlı içerik enjeksiyonu(malicious content injection), komut enjeksiyonu (command injection) vb. yapılmaktadır. WSDL dosyaları, tüketicilere sunulan hizmetlerin portları ve parametreleri hakkında ayrıntılı bilgi sağlar. Örneğin, saldırgan, özel karakterler veya kötü niyetli içerik göndererek serivisin hizmet dışı kalmasına yada önemli bilgilerin veritabanından çekilmesine neden olabilir. Buna ek olarak, saldırgan WSDL dosyalarında sağlanan bilgileri kullanarak diğer özel yöntemlerle aynı servis altında tanımlı gizli metotları tahmin edebilir.
DoS Saldırıları
Bilindiği üzere Servis dışı bırakma saldırıları olarak adlandırılan bu saldırı türü web servisleri içinde tehlike arz etmektedir.
XML Jumbo Tag İsimleri
XML içerisindeki meta verilerin (element name, attribute name, name space vb.) max boyutlarının aşılarak ayrıştırıcı tarafından işlenememesi sonucunu ortaya çıkaran saldırı türüdür.
Coercive Parsing
XML verisi içerisinde “CDATA” alanları ayrıştırıcı (parser) tarafından ele alınmazlar. Saldırganlar bu alanları kullanarak sistem komutları gönderebilir. Bu tip saldırılara coercive parsing denmektedir.
XML Döküman Büyüklüğü
XML dosyaları içerisine büyük boyutlu veri girilmesi sonucu web servis sunucusu bu xml dosyasını işleyemez ve yeni gelen servis isteklerine cevap veremez hale gelir.
Enjeksiyon Saldırıları
SQL Enjeksiyonu
Daha önceden de bildiğimiz bu saldırı yöntemi web servisler içinde geçerlidir. XML içerisine beklenmeyen sql cümlecikleri eklenerek ekstra bilgiye erişim sağlayan saldırı yöntemidir.
XML Enjeksiyonu
Bu saldırı türüde sql cümleciği yerine istenilen bir xml cümleciğini servise aktarmayı hedefler. Bu saldırı sayesinde örneğin sizin bir adet kayıt girme hakkınız var servisde fakat siz bu yöntemle xml ayrıştırıcıyı da atlatarak birden fazla veri girişi sağlayabilirsiniz.
Zararlı Yazılım, virüs
Diğer sistemlerde olduğu gibi web servisi sunduğunuz platformun açıklıklarından faydalanan ve sisteme zarar veren yazılım ve virüsler bu ortam içinde geliştirilmeye başlanmıştır.
Burada saydığımız saldırılardan korunmak için XML firewall üzerinde Politika (Policy) tanımlamalıyız. Kısaca çok kullanılan politikaları inceleyelim.
Politikalar (Policy)
Schema validasyonu
Bir XML dosyanin icerigini kontrol etmek icin schema dosyalarindan faydalanırız. XML schema dosyasi, XML dosyasınıniçeriğinin sahip olması gereken kuralları tanımlayan, uzantısı XSD (XML Schema Definition) olan dosyalardır.
XSD içersinde bahsedilen kurallar şunlardır;
- XML dosyası içinde var olması beklenen element ve attribute'ler, bunlara ait olan data tipleri.
- XML dosyasının yapısı, elementler ve bu elementlere ait olan child elementler,
- Child elementlerin sayısı ve sırası,
- Element'lerin bir text değere sahip olup olmayacağı.
Hata mesajı ekleme
Bilgi sızmaması için özel koşullar oluştuğunda web servisin cevabı yerine anlamlı hata mesajı dönmesi bir güvenlik yöntemidir.
IP filtreleme
Web servisine erişimin IP bazlı kısıtlanmasını sağlayan politikadır.
WS-Security Kullanıcı bilgileri ekleme
Farklı güvenli protokolleri kullanarak web servisine ulaşmadan daha öncesinde bir kullanıcı kontrol mekanizması oluşturan politikadır.
Routing
Arka planda çalışan servisin gerçek adresinin tespit edilememesi için ip ve port bazlı yönlendirmeye olanak sağlayan politikadır.
Zaman Filtreleme
Servisin istediğiniz saatler dışında kullanılmamasını sağlayan politika.
Yorumlar
Yorum Gönder