Web Uygulamaları Güvenliği

advertisement
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
• Üç Katmanlı Yapı
• Depolama Katmanı (Veritabanı)
• İş Mantığı ve Süreç Katmanı (Uygulama Sunucu)
• Sunum Katmanı (İstemci Tarayıcılar)
İstemci
Veritabanı
Sunucusu
VTYS
Özel
Uygulama Sunucu
Veritabanı
Sunucusu
HTTP
İstemci
İstemci
Uygulama Sunucu
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şı
yereller
Belleğin Sonu
sçg
Dönüş @
param
Yığıtın Üstü
void dikkatsiz(char *param) {
char hataKaynagi[16];
strcpy(hataKaynagi,param);
...
}
Yığıtın Altı
Örnek Zayıf Sayfa
Örnek Saldırı
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
Download