231 likes | 709 Views
Web Uygulama Güvenliği. Çağrı TIRAŞ Danışman: Kerem ERZURUMLU. Sunum Planı. Web Uygulamaları Web Uygulama Mimarisi Web Uygulamaları için Güvenlik İhtiyacı Ağ Güvenliği Sunucu İşletim Sistemi Güvenliği Web Sunucu Yazılım Güvenliği Uygulama Yazılımı Güvenliği
E N D
Web Uygulama Güvenliği Çağrı TIRAŞ Danışman: Kerem ERZURUMLU
Sunum Planı • Web Uygulamaları • Web Uygulama Mimarisi • Web Uygulamaları için Güvenlik İhtiyacı • Ağ Güvenliği • Sunucu İşletim Sistemi Güvenliği • Web Sunucu Yazılım Güvenliği • Uygulama Yazılımı Güvenliği • Güvenliğin İzlenmesi ve Saldırıların Tespiti • Özet ve Sonuç
Web Uygulamaları • Kullanıcılar ile etkileşimi sağlar • İstemci/Sunucu mimarisinde çalışır • Genelde sunucu üzerinde çalışır • Platformdan bağımsızdır • Uygulama yazılımı seçimi esnekdir • PHP, ASP, CGI(C, Perl, Shell, Delphi)
Web Uygulama Mimarisi İstemci İstemci İstemci VTYSÖzel VeritabanıSunucusu VeritabanıSunucusu HTTP Uygulama Sunucu Uygulama Sunucu • Üç Katmanlı Yapı • Depolama Katmanı (Veritabanı) • İş Mantığı ve Süreç Katmanı (Uygulama Sunucu) • Sunum Katmanı (İstemci Tarayıcılar)
Farklı İstemciler • Alabildiğine hafif (Ultra-thin) istemciler • “Herkes bağlansın, herkes kullansın” • HTML ve JavaScript desteği yeterli • Microsoft İstemcileri • HTML ve ActiveX desteği • Java İstemcileri
Web Uygulamaları için Güvenlik • Web Uygulamaları Hızla Artıyor • Bankacılık, öğrenci işleri, e-ticaret siteleri ... • Web Uygulamalarına Yönelik Saldırılar Artıyor • CSI/FBI araştırmasına göre saldırılar son dört yıldır her yıl ikiye katlanıyor • Kaybedilebilecekler / Zararlar • Müşterilere özel bilgiler • Prestij • Hizmette aksaklıklar • Para
Ağ Güvenliğinin Sağlanması • Ağın uygun bir biçimde bölümlendirilmesi ve güvenlik duvarları ile ağ bölümleri arasında yalıtımın gerçekleştirilmesi • Web sunucu bilgisayar sistemine HTTP dışında isteklerin ulaşmasının engellenmesi • Güncelleme işlemleri için yalnızca kısıtlı sayıda güvenilen bilgisayar sistemine izin verilmesi
Sunucu İşletim Sistemi Güvenliği • Yazılım güncellemelerinin yapılması • Güncel sürümler için mevcut yamaların uygulanması • Çalışması şart olmayan ağ hizmetlerinin durdurulması • Parolaların düzenli olarak güvenliğinin denetlenmesi
Sunucu İşletim Sistemi Güvenliği - II • Yalnızca gerektiği kadar yetki verilmesi • Kullanıcılara • Çalışması zorunlu sunucu yazılımlarına • Sunucu yazılımlarının yetkili-kullanıcı olarak çalıştırılmaması • Pek çok sunucu yazılımı sıradan-kullanıcı yetkileri ile de çalışabilir (Örn. root yerine nobody, Administrator yerine Oracle) • Öntanımlı sistem şifrelerinin değiştirilmesi (Örn. Oracle/system)
Web Sunucu Yazılımı Güvenliği • Web sunucu yazılımı ile birlikte gelen örnek uygulamaların kaldırılması • Web sunucunun belirli bir küme dosya türü dışında dosyayı işlememesinin sağlanması • Yalnızca .html, .asp, .php, .jsp, .txt dosyalarının işlenmesi ve sunulması • Dizin listesi gösteriminin iptal edilmesi
Uygulama Yazılımlarının Güvenliği • Varsayım: Kullanıcıların tümü art-niyetlidir • Kullanıcılardan alınan her türlü bilgi girdisinin • Uzunluk • Tür • İçerik denetimlerinin gerçekleştirilmesi
Uygulama Yazılımlarının Güvenliği - II • Oturum Yönetiminin Dikkatli Programlanması • Kullanıcı tarafında depolanan çerezler kullanıcılar tarafından değiştirilebilir • Çerezlerin içerisinde yalnızca kullanıcıyı tanımlayacak bilgi girilmeli, diğer tüm bilgiler sunucu üzerinde tutulmalıdır • Kullanıcıyı tanımlayan bilginin “artıklığı” yüksek olmalı, tahmin ile bulunamamalıdır
Yığıt Taşırma • Bir uygulama yazılımında tanımlanmış küçük bir alana büyük bir veri yüklemeye çalışırsanız ne olur? • Uygulama çakılır • Bazı durumlarda, uygulamanın ‘istenmedik’ komutları işletmesi sağlanabilir
Programlama Örneği void dikkatsiz(char *param) { char hataKaynagi[16]; strcpy(hataKaynagi,param); ... } http://kurban.edu.tr/cgi-bin/swc?ctr=XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Yığıt Düzeni Belleğin Başı Belleğin Sonu yereller sçg Dönüş @ param Yığıtın Üstü Yığıtın Altı void dikkatsiz(char *param) { char hataKaynagi[16]; strcpy(hataKaynagi,param); ... }
Güvenliğin İzlenmesi ve Saldırı Tespiti • Bilindik saldırıları tespit etmek ve kaydını tutmak üzere ağ temelli saldırı tespit sistemleri kullanılabilir saldirgan1.saldiran.edu.tr - - [27/Nov/2001:18:13:28 +0200] "GET /search.dll?query=%00&logic=AND HTTP/1.1" 404 216 "-" • Saldırganların sisteme sızmayı başarması durumunda ilk yapacakları sonraki girişleri için arka-kapı açmak olacaktır • Dosya bütünlük denetleyicileri ile dosya ve dizinlerdeki beklenmedik değişiklikler tespit edilebilir • Web sunucu kayıtlarındaki anormallikler izlenmelidir
Özet ve Sonuç • Web uygulamalarının güvenliğinin sağlanması için uygulanabilecek birkaç temel adım pek çok saldırıyı engelleyecektir • Ağ güvenliğinin, sistem güvenliğinin, sunucu yazılımı güvenliğinin sağlanması • Uygulama geliştirme sürecinde güvenlik boyutunun düşünülmesi/değerlendirilmesi • Sistem ve sunucu kayıtlarının düzenli incelenmesi ve problemlerin analizi