Web Uygulamaları Güvenliği II

Etiketler:

Geçen sayıda saldırganların Web uygulamalarını nasıl deldiklerini, problemlerin neler olduğunu,alınan birçok önlemi nasıl kullanılmaz kıldıklarını anlatmaya çalışmıştım. Tekrar kısaca özetlemek gerekirse birçok önlem alınmasına karşın web uygulamaları halen sonucu başarıya ulaşmış saldırılarla karşı karşıya kalıyordu. Bu yazımda, hem web uygulamalarına sahip olmak hem de güvenliği sağlamak için neler yapılması gerektiğinden bahsedeceğiz.

Web uygulamaları ile alakalı en zayıf nokta, uygulamanın her ne kadar kendisi de olsa bunun dışında alınacak birçok tedbir var. Yazımın ilk kısmında, web uygulamalarının dışındaki tedbirlerden bahsedeceğim ve web uygulamaları ile ilgili alınması gereken tedbirlere ilişkin bilgiler vererek tamamlayacağım.

Güvenlik Mimarisinin Kurulması
Bilgi güvenliğinin merkezinde herşeyden önce, kurumun bir güvenlik politikası, ve bunu destekleyen bir yönetimi olmalıdır. Politikanın ardında, onun nasıl uygulanacağını anlatan prosedür ve kılavuzlar hazırlanmalı, çalışanlar politikaya uymamanın bir karşılığı olacağını ve şirketin konu üzerinde ne kadar titizlikle durduğunu anlamalıdırlar. Tüm bu kılavuz, doküman ve politikalar herkesin anlayabileceği bir dilde ve açık olarak hazırlanmalı, herkesin ulaşabileceği bir yerde bulundurmalıdır. Daha da ötesinden bu belgeler günün koşullarına göre güncellenmeli ve herkes okumakla yükümlü olmalıdır. Kurumun bilgi güvenliği prosedürleri hazırlanırken BS7799 (ISO17799) gibi bir standard yol gösterici olarak kullanılabilir.

Bu prosedürel önlemlerden sonra, sistem mimari anlamda güvenlik hesaba katılarak tasarlanmalı; sadece dışarıya açık sistemler (web sunucular), hem dışarıya hem içeriye açık sistemler (eposta sunucuları), sadece içeriye açık sistemler (bazı veritabanı sunucuları) birbirlerinden ateş duvarları(1) ile ayrılarak(2) konumlandırılmalı ve bu noktalardaki faaliyetler saldırı önleme sistemleri(3) ile monitör edilmeli, farklı bir noktada mümkünse sadece yazılabilir bir medyaya- kayıt edilmelidir(4).

Bahsedildiği gibi parçalara ayrılmış bir yapıya örnek olarak Şekil 1 gösterilebilir.

Web Uygulamaları Güvenliği II

Şekil 1

(1) Ateş duvarı, Firewall
(2) Sistemleri ayırmak, Partitioning
(3) Saldırı önleme sistemi, Intrusion Detection System
(4) Kayıt sistemi, Audit Log

Sistemlerin bulunduğu bölgeler parçalara ayrıldığında kimin hangi servislere ve hangi sunumculara ulaşabileceği ateş duvarlarının kural tanım tablolarında(5) mümkün olan en az yetki prensibi ile belirlenmeli, ve test edilmelidir. Ateş duvarları en son yamalarla kaplanmalı, -mümkünse- loglarını farklı bir yerdeki kayıt sistemine yazmalıdırlar. Bu kayıtlar, yetkili kişilerce izlenmeli ve proaktif biçimde takip edilmelidir.

Sunucuların Kuvvetlendirilmesi(6)
Yukarıda bahsedilen mimarinin kurulmasından sonra sistemde var olan her komponentin yeterli güvenlik seviyesinde ayarlanması gerekmektedir. Zira satın alınan komponentlerin, ilk ayarları kullanım kolaylığı ön planda düşünülerek yapıldığından; genellikle birçok güvenlik açığı ve çalışmakta olan birçok gereksiz servisi içermektedirler. Bu sistemlere, son kullanıcının kullandığı PC’ler, DMZ'de(7) bulunan sunucular, router, switch gibi network komponentleri, ateş duvarları, saldırı önleme sistemleri, anti virus sunucuları, yazıcılar, PBX telefon santralleri dahildir. Tüm sistemlere en son çıkan yamalar işlenmeli, gereksiz tüm servisler kapatılmalıdır.

Sunucu kuvvetlendirmek kaba bir bakışla;

  • Açık olan gereksiz servislerin kapatılması, örneğin MS Windows 2000 işletim sistemi ilk kurulduğunda TFTP uygulaması sunucuya yüklenmiş olarak çalışmaya başlar ki, belirli koşullar altında bu uygulama, makinaya istenilen dosyanın transferini mümkün kılmaktadır.
  • Sistemi güvenli hale getirmek için gerekli ayarların yapılması. Bu aşamada yol gösterecek birçok doküman bulmak mümkündür, örnek olarak Windows NT Network’lerini ve Cisco Router’larını mümkün olduğunca güvenli hale getirmek için Amerikan Güvenlik Ajansı(8) iki rapor yayınlamıştır.
  • Sunucularda işletim sistemi dosyaları, uygulamalara ilişkin dosyalar ile kullanıcılara ait dosyaların ayrılması, ayrı disklerde yada disk bölümlerinde(9) saklanması.

Bu işlemler yapıldıktan sonra, sistemlerin ve mimarinin güvenliğinin, ücretsiz yada ücret karşılığı satılan tarayıcı programlar(10) ile test edilmeleri gerekmektedir. Bu iş için kullanılabilecek tarayıcılara örnek vermek gerekirse;

  • Nessus, Linux işletim sistemi üzerinde çalışan birçok saldırgan ve güvenlik profesyonelinin kullandığı ücretsiz bir tarayıcıdır.
  • Internet Security Scanner, Windows işletim sisteminde çalışan bir tarayıcıdır.
  • Bunlara birçoğunu eklemek mümkündür, Cybercop, Shadow Security Scanner, Retina vb.

Web Uygulamalarının Güvenliği
Yukarıda bahsedilen tedbirlerin yetersiz kaldığı nokta, web uygulamalarının kendisinden, tasarımından meydana gelen problemlerdir.

(5) Ateş duvarı kural tanım tablosu, Firewall Rulebase
(6) Sunucu Kuvvetlendirmek, Server Hardening
(7) DMZ, Demilitarized Zone
(8) Amerikan Güvenlik Ajansı, National Security Agency (NSA)
(9) Disk Bölümü, Disk Partition
(10) Tarayıcı Program, Scanner

Bu problemlerden geçen yazımızda bahsetmiştik, bunları iki şekilde önlemek mümküdür,

  • Güvenliği hesaba katarak uygulama geliştirmek,
  • Web uygulamasının önüne bir tür kalkan yerleştirmek.

Güvenliği Hesaba Katarak Uygulama Geliştirmek
Günümüzde Web uygulamaları birçok komponenti bir araya getirdiği için (n-tier) uygulamayı tasarlayan takım çok sıkı bir işbirliği içinde çalışarak, daha önceden isterlerin ve teknik özelliklerinin belli olduğu programları yazmalılar. Program yazımı esnasında güvenlik, parametre kontrolü, web sunucuların girişleri işleyiş biçimleri hesaba katılmalıdır. Bu amaçla çeşitli organizasyonlar projeler yürütmekte, yardımcı kılavuzlar hazırlamaktadırlar. Bunlardan birine örnek olarak OWASP organizasyonu gösterilebilir.

Web Kalkanı Yerleştirmek
Halihazırda geliştirilmiş web uygulamaları için genellikle popüler olan bu çözüm, web uygulamasının önüne kalkan denilen bir çeşit özel yazılım yada donanım/yazılımın kutusunun yerleştirilmesi ile gerçekleştirilmektedir. Kalkan web uygulamasına gelen tüm isteklere öncelikle müdahale etmekte, istekleri veri tabanında var olan saldırı imzalarıyla karşılaştırmakta yada hareket tarzını değerlendirmekte (heuristic), sonuca göre ya paketin web uygulamasına ulaşmasını engellemekte, isteği düzeltip göndermekte yada uygun bir istek ise uygulamaya ulaştırmaktadır. Bu tip kalkanlar sadece yazılım ya da hem yazılım hem donanımdan oluşan çözümler olarak iki tipte bulunmaktadırlar. Sadece yazılım olanlara örnek vermek gerekirse, Sanctum’un AppShield, Kavado’nun InterDo, Ubizen’in DMZ/Shield ürünleri. Hem yazılım hem donanımdan oluşan ve kutu şeklinde sunulan kalkanlara örnek olarak WatchGuard’ın AppLock, iBroker’ın Multinet’i, Entercept’in aynı adlı ürünü ve Stranum8’in APS ürünleri verilebilir.

Bu tedbirleri aldıktan sonra uygulamaların ve var ise kalkanların ne kadar iyi çalıştıklarını test etmek için bu iş için hazırlanmış web uygulama tarayıcıları ile kontrol etmek gerekir. Bu tip tarayıcılara örnek olarak Sanctum’un AppScan, Kavado’nun ScanDo ve SPI Dynamics’in WebInspect araçları kullanılabilir.

Sonuç
Burada bahsedildiği web uygulama güvenliğini sağlamak için birçok tedbir almak, gerekirse mimariyi değiştirmek gerekiyor. Ama MIT, Stanford University ve @Stake firmasının yaptığı araştırmaya göre güvenliği yazılımın tasarım safhasında dahil etmek %21, programlama safhasında dahil etmek %15, yazılımın testi sırasında dahil etmek %12 kazanç sağlanmaktadır(11).

(11) http://www.cio.com/archive/021502/security.html

kaynak: ITSecurity Magazine Oct02

__________________________

0