IIS & Asp.Net Sıkılaştırma Ayarları
Nisan 2014 itibarıyla Netcraft tarafından 958.919.789 web sitesinden bilgi toplanarak yapılan araştırmaya göre interneteki sitelerin yüzde %31.10’u Microsoft IIS kullanmaktadır. Bu blog yazımızda Microsoft IIS sunucu güveliğini sağlamak için yapılması gerekenlerden bahsedeceğiz.
Sunucu Bilgilerinin Gizlenmesi
Kullanılan sunucu teknolojisi ve versiyonunun bilinmesi saldırganların etkili saldırı yöntemleri bulmasını kolaylaştıracaktır.
Resim 1 ‘de görülebileceği üzere IIS sunucusuna yapılan isteklere dönen yanıtların içerisinde HTTP başlık(header) bölümünde sunucu bilgileri yer almakta.
Resim 1
Yanıt (Response) başlığında yer alan sunucu bilgilerini gizlemek için url rewrite modülünün sunucuya kurulması gerekmetedir. Url rewrite modülünü http://www.iis.net/downloads/microsoft/url-rewrite bu adresten indirebilirsiniz.
HTTP İstek (Request) Metotlarının Düzenlenmesi
Kullanılmayan Dosya Uzantılarının Engellenmesi
Kritik İçeriklerin Filtrelenmesi
IIS Konfigürasyonlarının Başka Bir Sunucuya Aktarımı
Hata Sayfalarına Yönlendirme
defaultRedirect=”ErrorPage.aspx” mode=”RemoteOnly”>
Resim 1
Yanıt (Response) başlığında yer alan sunucu bilgilerini gizlemek için url rewrite modülünün sunucuya kurulması gerekmetedir. Url rewrite modülünü http://www.iis.net/downloads/microsoft/url-rewrite bu adresten indirebilirsiniz.
Sunucu başlığının aşağıdaki gibi engellenmesi sağlanır.
Clickjacking Saldırılarına Karşı Önlem Alınması
Öncelikle Clickjacking konusundan bahsedelim. Clickjacking hedef sisteme görünmez(opacity değeri sıfır ) bir iframe nesnesini yükleyip, yüklenen sayfada kurbanın tıklaması istenen linklerin üzerine ilgisini çekecek tuzak linkler veya html nesneleri ekleyerek kurbanın farkında olmadan iframe içindeki linkle tıklamasını sağlamak olarak ifade edebiliriz.
1.IIS Yöneticisini başlatın
2. HTTP Response Headers ikonuna çif tıklayın.
3.Açılan alanın sağında bunan Actions kısmından Add linkine tıklayın.
HTTP İstek (Request) Metotlarının Düzenlenmesi
HTTP 1.1 protokol birden fazla istek(request) metodunu destekler fakat bunların bir çoğu potansiyel riskler doğurmaktadır. Potansiyel risklerden kaçınmak için IIS Manager Request Filtering uygulamasında HTTP Verbs sekmesine gelip OPTIONS, Put, Delete, Trace, metotlarına izin verilmesini engelleyebilirsiniz.
1.IIS yöneticisini başlatın
2.Request Filtering ikonuna çift tıklayınız
3.HTTP Verbs sekmesine geliniz
4.Açılan alanın sağında bunan Actions kısmından Deny Verb linkine tıklayın.
5.Verb kısmına örneğin TRACE yazın.
Engellemek istediğiniz metotları bu şekilde ekleyiniz. Ayrıca POST,GET,HEAD metotlarınada sayfanın sağında bulunan Action kısmından Allow Verb linkine tıklayıp Verb kısmına ekleyin.
Kullanılmayan Dosya Uzantılarının Engellenmesi
IIS tarafından güvenli kabul edilen bir çok uzantıya varsayılan olarak izin verilir. Uygulamanızda kullanmadığınız dosya uzantıları aşağıdaki gibi engelleyebilirsiniz.
1.IIS yöneticisini başlatın
2.Request Filtering ikonuna çift tıklayınız
3.File Name Extensions sekmesine tıklayın
4.Açılan alanın sağında bunan Actions kısmından Deny File Name Extensions linkine tıklayıp kullanmadığınız dosya uzantısı türlerini File Name Extensions kısmına giriniz.
Yukarıdaki adımlara uyarak yine aynı şekilde istediğiniz dosya uzantılarına sayfanın sağında bulunan Action kısmındaki Allow File Name Extensions linkine tıklayarak gerçekleştirebilirsiniz.
Kritik İçeriklerin Filtrelenmesi
IIS varsayılan olarak web.config, bin, App_Data gibi önemli bilgileri içeren klasör ve dosyaları gizler. Bunlara ek olarak gizlemek istediğiniz klasör veya dosyalarınız aşağıdaki adımları takip ediniz:
1.IIS yöneticisini başlatın.
2.Request Filtering ikonuna çift tıklayınız.
3.Açılan sayfanın sağında bulunan Action bölümünden Add Hidden Segment linkinden gizlemek istediğiniz klasör ve dosya adlarını yazınız.
IIS Konfigürasyonlarının Başka Bir Sunucuya Aktarımı
Localde yaptığınız ve test ettiğiniz sunucu ayarlarınızın veya sunucu üzerinde tutuğunuz ayarların başka sunucu bir sunucuya aktaramı için aşağıdaki adımları uygulayınız:
1.IIS Yöneticisini başlatın
2.Management altındaki Shared Configuration çift tıklayın
3.Açılan Shared Configuration ekranın sağında yer alan Action bölümünden “Export Configuration linkine tıklayınız
4.IIS konfigürasyon dosyalarının kaydedileceği dizinin seçin ve parola oluşturun.
Ayarları aktarmak istediğiniz sunucunuz üzerinde IIS yöneticisine açın ve Shared Configuration” bölümünden “Enable shared configuration” tik işareti koyarak konfigurasyon dosyalarınızın dizinini seçin.
ASP.Net Uygulama Güvenliği
ASP.Net projelerinizi yayınladığınız sunucu kontrolünüzde değilse veya IIS yöneticisine erişiminiz yoksa bazı önlemleri web.config üzerinden alabilirisiniz.
Hata Sayfalarına Yönlendirme
Web sunucu tarafından kullanıcıya görüntülenen ön tanımlı teknik hata mesajları saldırganların işini kolaylaştırıcı bilgiler (ör: web sunucu versiyonu, veritabanı hataları ile tablo yapıları ve verileri, kod parçaları, v.b.) sızdırabilir. Backend kaynaklara yapılacak kaba kuvvet saldırıları (yani kullanıcıların eriştiği sayfalardan linklenmemiş kaynaklar için isim tahmini ile yapılan istekler) HTTP yanıt kodlarındaki farklılıklardan yola çıkılarak daha kolay yapılabilir. Tüm isteklere HTTP 200 OK yanıt kodunun dönmesi durumunda söz konusu saldırıların başarısı azaltılabilecektir. Hata durumlarına göre özel hata sayfaları oluşturmanız önerilmektedir. Oluşturduğunuz size özel hata sayfalarına web.cofig içerisinde yönledirme yapabilirsiniz.
Aşağıdaki kod ile bütün hataları tek bir sayfaya yönlendirme işlemini gerçekleştirebilirsiniz.
Ayrıca, aşağıdaki gibi yapılan isteklere karşılık gelen yanıt içerisinde görünen hata kodlarına göre kendinize özel hata sayfaları oluştura bilirsiniz
Gereksiz Http Başlıklarının Engellenmesi
Kullanılan sunucu teknolojisi ve versiyonunun bilinmesi söz konusu altyapıdaki zafiyetlerin bulunarak kötü niyetli kullanımına imkan tanıyabilir. Bu ayarlar taglerinin arasında aşağıdaki gibi yer alır.
Asp.Net Versiyon Bilgisinin Gizlenmesi
Kullanıla Asp.Net versiyonunun bilinmesi söz konusu altyapıdaki zafiyetlerin bulunarak kötü niyetli kullanımına imkan tanıyabilir.
Trace Metodunun Kapatılması
Web sitesinin hata ve işlemlerini uzaktan takip etmeye yarayan trace metodu sistemle ilgili ciddi bilgileri açığa vurabilmektedir. Trace metodunu kapatmak için aşağıdaki kodu web.config dosyası içersine eklenmesi gerekmektedir.
Debug Modunun Kapatılması
Geliştirme halinde varsayılan olarak açık bulunan debug modu projenizin yayınlama (publish) ayarları yapılmadan yayınlandığında açık kalır. Debug modunu kapatmak için aşağıdaki kodun web.config dosyası içerisine eklenmesi gerekmektedir.
<system.web>
Gereksiz İstek (Request) Metotlarının Engellenmesi
ASP.Net uygulamalrı genellikle POST ve GET komutlarını kullanmaktadır. Bunların dışında kalanlar uygulama gerektirmedikçe kullanılmaz. MOVE ve DELETE gibi seçeneklerin açık olması sayfa değişimi gibi açıklara neden olabilir. Bu sebeplerden sadece kullandığınız metotları açmanız önerilmektedir.
Kritik İçeriklerin Filtrelenmesi
IIS varsayılan olarak web.config, bin, App_Data gibi önemli bilgileri içeren klasör ve dosyaları gizler bunlara ek olarak klasör veya dosyalarınız var ise aşağıdaki kodu kullanarak gizleyebilirsiniz.
Gereksiz / Kullanılmayan Dosya Uzantılarının Kısıtlanması
IIS tarafından güvenli kabul edilen bir çok uzantıya varsayılan olarak izin verilir. Eğer uygulamanızda çok fazla dosya çeşitliliği yok ise bunları kısıtlayabilirsiniz.
Yorumlar