7 Ağustos 2012 Salı

IIS 7 - 7.5 Request Filtering - Nass oluyor da oluyor ? Rules & Headers

IIS 7 ve 7.5 ile birlikte gelen (rol servisi olarak yüklerseniz tabi) Request Filtering güvenlik özelliği ile yapılabileceklere devam edelim.
"Rules" sekmesi web sunucunuza gönderilen HTTP isteklerinde URL,Header,Query string gibi metinlerde kelime bazlı filtreleme yapmaya imkan verir. Örnek olması bakımından "User-Agent" Header değeri "Attack" ( piyasada kolaylıkla bulunabilecek acunetix gibi güvenlik tarayıcıları varsayılan olarak User-Agent header'ına belli değerler atarlar,benzer şekilde http saldırı araçları da öyle, bu tip basit saldırıları bu özelliği kullanarak engelleyebilirsiniz) ise web sunucumuzun erişilmek istenen sayfayı engellemesi için kullanılacak kural ekran görüntüsündeki gibi olmalı;


Kural tanımında "Scan URL","Scan Query String" işaretlenmediği için request-filtering modülü URL ve Query Stringi taramayacak.Benzer şekilde "Applies To" hanesinde "html,htm,asp,aspx" gibi dosya uzantısı da belirtmediğimiz için kural tüm dosya uzantılarına erişim isteklerine etki edecek.
"Header" hanesinde kontrol edilmesini istediğimiz header değerini yani "User-Agent" satırını ekledikten sonra, bu header değerinde reddedilecek kelimeyi "Deny Strings" alanında satır olarak ekliyoruz. Özetle kural, kendisine gelen isteklerin Header değerlerini kontrol edecek, "User-Agent: Attack" header'ı ile gelen istekleri reddedecek yani isteği 404 kodu ile cevaplayacak, daha kesin konuşmak gerekirse bu istek ve akabinde gönderilen cevap kayıt dosyasına 404.19 koduyla kaydedilecek. Daha önceki yazıdan hatırlarsanız 404.19 "Denied by filtering rule" anlamına geliyor.
Test için "Send HTTP Tool" adında ücretsiz bir araç kullanıyorum.


Erişim isteği ve sunucunun cevabını Wireshark aşağıdaki şekilde gösteriyor


Web sunucusu kayıt dosyasındaki kayıtlarsa şu şekilde


Benzer şekilde SQL injection saldırılarına karşı aşağıdakine benzer kurallar oluşturarak korunabilirsiniz


Bu kural HTTP isteklerindeki "Query String" i "Deny Strings" alanında yazan değere karşı tarayacak ve querystring bu değeri içeriyorsa isteği 404 koduyla yanıtlayacak.

http://192.168.227.131/test.htm?param=update


"Header" sekmesinde yapabileceğiniz çok çeşitli şeyler yok, ancak belirleyeceğiniz "Header" değerlerinin boyutlarını kısıtlandırabiliyorsunuz. Örnek olması bakımından "User-Agent" header'ına 10 karakter sınırı getirirseniz;


10 karakterden fazla "User-Agent" header değeri içeren istekleriniz yine 404 koduyla cevaplanacaktır.



Sunucu kayıt dosyasında 404 10 durum kodları görürsünüz ki bu da "Request header too long" anlamına geliyor.

Aşağıdaki ekran görüntüsü ise aynı Header uzunluğu kısıtı uygulanmaktayken yapılan isteği ve cevabı gösteriyor, "User-Agent" header'ı 10 karakterden kısa olduğu için sunucu isteği başarıyla cevaplıyor


Eğer belirlenen limit 6 karakterken "User-Agent" header'ının değeri de 6 karakter uzunluğundaysa (örneğimizde Attack kelimesi) istek yine HTTP 200 koduyla başarılı cevaplanıyor,bu da küçük bir ayrıntı.Bu sekmede eklenen Header kısıtının değiştirilememesi de eksilerden, değişiklik yapmak isterseniz silip tekrar oluşturmalısınız.
404.X Durum kodlarını kayıt dosyalarınızdan inceleyerek filtreleme kurallarınıza takılan istekleri analiz edebilirsiniz.



İ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 ? File Name Extension & HTTP Verb filtreleme
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