6 Ağustos 2012 Pazartesi

IIS 7 - 7.5 Request Filtering - Nass oluyor da oluyor ? File Name Extension & HTTP Verb filtreleme

URLScan eklentisini bilirsiniz, IIS 6 ve öncesi versiyonlarda bir eklenti olarak kurulur kullanılırdı. Microsoft IIS 7 ile birlikte bu fonksiyonu "Request Filtering" rol servisi ile web sunucusuna entegre etmeye başladı. Request filtering bir güvenlik servisi ve kurulduğunda IIS'e dosya uzantısına,URL'e,HTTP request metoduna, içerik uzunluğuna,URL uzunluğuna,query string uzunluğuna göre filtreleme, double-escaping önleme gibi yetenekler kazandırır. Bu özellikleri kullanarak web sunucunuza yapılan bir çok saldırıyı engelleyebilirsiniz. Request Filtering IIS rolüne ait bir servis.


Ve kurulduktan sonra IIS Manager arayüzünden konfigüre edilebileceği gibi 



"ApplicationHost.config", "web.config" dosyaları vasıtasıyla da düzenlenebilir. Server ya da site/uygulama bazında kullanılabilir. Yani kullanmayı düşündüğünüz filtreleme özelliklerini tüm sunucuya uygulamak zorunda değilsiniz, sunucunuz üzerindeki belli uygulamalar ya da siteler için kullanabilirsiniz. Bu yazıda dosya uzantısına ve HTTP istek metoduna göre filtrelemeden bahsedejeğim.
Bildiğiniz gibi web sunucu, HTTP protokolünün yapısı gereği istemciden ya da kullanıcıdan istek alır, daha sonra elinden geldiğince daha doğrusu sizin konfigürasyonunuz doğrultusunda bu istekleri cevaplamaya çalışır ya da reddeder. Daha önce "HTTP - Nass oluyor da oluyor?" yazı dizisinde bu iletişimin nasıl sağlandığını ayrıntılı olarak anlatmıştım.Kısaca tekrar etmek gerekirse istemci erişmek istediği sayfanın URL'ini tarayıcı penceresine yazar, sunucu da teker teker sayfanın bileşenlerini tarayıcıya gönderir. İkinci resimdeki HTTP 200 kodu isteğin başarıyla cevaplandığını gösterir.



Sunucunun IIS kayıt (log) dosyasında da HTTP isteği ve cevabıyla ilgili ayrıntıları görebilirsiniz. 


Request Filtering özelliği ile örnek olarak "png" uzantılı resim dosyalarını engellediğimizde ise


aynı sayfaya erişim isteğine, web sunucu "png" uzantılı resim dosyası dışındaki diğer dosyaları istemci tarayıcısına göndererek cevap verir. İstemcinin "welcome.png" dosyasına erişim isteği HTTP 404 koduyla ( sc-status) reddedilir ve sayfa aşağıdaki şekilde görülür


İsteğe ilişkin detaylar web sunucu kayıt dosyasında daha ayrıntılı görülebilir, dolayısıyla web sunucu kayıt dosyalarınızda mümkün olduğunca fazla detayı kayıt altına alın ( sc-status: Protocol Status, sc-substatus: Protocol substatus gibi).

 Kayıt dosyasındaki 404 durum kodu "Erişilmek istenen kaynağın,dosyanın,sayfanın vb bulunamadığını", 7 kodu ise "Dosya uzantısının engellendiğini" ifade eder.
404 Durum koduna bağlı daha detaylı kodlar aşağıdaki gibi;
  • 404.0 - Not found.
  • 404.1 - Site Not Found.
  • 404.2 - ISAPI or CGI restriction.
  • 404.3 - MIME type restriction.
  • 404.4 - No handler configured.
  • 404.5 - Denied by request filtering configuration.
  • 404.6 - Verb denied.
  • 404.7 - File extension denied.
  • 404.8 - Hidden namespace.
  • 404.9 - File attribute hidden.
  • 404.10 - Request header too long.
  • 404.11 - Request contains double escape sequence.
  • 404.12 - Request contains high-bit characters.
  • 404.13 - Content length too large.
  • 404.14 - Request URL too long.
  • 404.15 - Query string too long.
  • 404.16 - DAV request sent to the static file handler.
  • 404.17 - Dynamic content mapped to the static file handler via a wildcard MIME mapping.
  • 404.18 - Querystring sequence denied.
  • 404.19 - Denied by filtering rule.
  • 404.20 - Too Many URL Segments
Yakın zamanda Microsoft'un Logparser aracı ile IIS sunucu kayıt dosyalarının nasıl inceleneceği, anormallikerin, saldırı belirtilerinin nasıl tespit edilebileceğine yönelik blog yazısı yazacağım, o yazıda HTTP status ve substatus kodlarının neden önemli olduğunu daha iyi anlayabileceksiniz.



ASP.Net "Application Development" rol servisinin kurulmasıyla birlikte Microsoft varsayılan olarak uygulama için önemli çeşitli dosya uzantılarına (konfigürasyon dosyaları, code behind dosyaları,text dosyaları gibi) ve klasörlere erişimi engeller.Ama siz siz olun yine de bu özelliklere ince ayar (fine tune) yapmayı unutmayın.



IIS web sunucu, kendisine gönderilen HTTP istekleri de benzer şekilde filtreleyebilir. Örneğin uygulamanız kullanıcıdan çeşitli formlar vasıtasıyla veri almıyorsa, sunucunun POST isteklerine cevap vermesine gerek yoktur. Benzer şekilde TRACE,PUT,DELETE gibi tehlikeli HTTP istek metodlarını da "Request Filtering" arayüzünün "HTTP Verbs" sekmesinden filtreleyebilirsiniz.


Filtreleme sonrasında HTTP HEAD isteğiniz yine 404 Durum mesajıyla reddedilecektir.


Daha detaylı bilgi için web sunucu kayıt dosyasına bakıldığında, HTTP response sub-status kodunun 6 olduğu görülür.

Yukarıdaki listeden görülebileceği gibi 404.6 kodu metodun reddedildiğini ifade eder (Verb Denied). Normal şartlar altında 404.4 durum koduyla ilişkili kayıtları kayıt dosyanızda (log) görmezsiniz, bu kodlarla ilişkili kayıtların varlığı web uygulamalarınızın,sunucunuzun tarandığı ya da saldırıya uğradığının göstergesi olabilir.




İlgili Yazılarım
IIS Sıkılaştırma Klavuzu - Nam-ı diğer Security Hardening Guide
IIS 7 - 7.5 Request Filtering - Nass oluyor da oluyor ? Rules & Headers
IIS 7,7.5'de Maximum Query String değeri ve önemi - Nass oluyor da oluyor?
IIS 7 ve 7.5'i Slow Loris DOS Saldırısına Karşı Koruma - Nass oluyor da oluyor?
IIS 7.5 Konfigürasyon Denetim Kaydı Özelliğini Etkin Hale Getirme

Hiç yorum yok:

Yorum Gönder