Server ve ASP.NET başlıkları

IIS sunucuları, gelen istekleri yanıtlarken HTTP başlık (header) bölümünde kendileriyle ilgili bazı bilgiler sunar:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727

X-Powered-By: ASP.NET
Set-Cookie: ASP.NET_SessionId=awfthz48bftycdu3f7lpkku1; path=/; HttpOnly
Date: Mon, 30 Jan 2012 08:41:49 GMT
Content-Length: 5975

Yukarıdaki altı çizili üç başlığın, uygulamanın veya sunucunun çalışmasına direkt bir etkisi yoktur, dolayısıyla bunları engelleyebiliriz. Nitekim, pek çok güvenlik taramasında bu başlıklların bulunması potansiyel güvenlik açığı olarak nitelendirilir.Bunun gerekçesi, potansiyel bir saldırgana uygulama ortamı ve versiyonu bilgisi sunmasının, saldırganın işini kolaylaştıracak olmasıdır.

Bunları engellemek oldukça kolaydır:

  • Server: IIS/6.0: Bunun için sunucuya UrlScan kurulup, urlscan.ini dosyasında DisableServerHeader = 1 şeklinde bir ayar tanımlanmalıdır. Ancak, UrlScan default olarak bazı kısıtlamalar getireceğinden tüm ayarların üzerinden geçmekte fayda olacaktır.
  • Server: IIS/7.x: Bunun için sunucuya url rewrite modülü kurulup aşağıdaki ayarın yapılmasi gerekiyor:
            <rewrite>
                <outboundRules>
                    <rule name="replace server header" patternSyntax="Wildcard">
                        <match serverVariable="RESPONSE_SERVER" pattern="*" />
                        <action type="Rewrite" value="MyServer" />
                    </rule>
                </outboundRules>
            </rewrite>
    Yukarıdaki ayar, "Server" başlığını kaldırmayıp değerini "MyServer" olarak değiştirecektir.
  • X-Powered-By: ASP.NET: Bu header'ı kaldırmak için IIS'in arayüzünde "HTTP Response Headers"tan silmek yeterlidir.
  • X-AspNet-Version: 2.0.50727: Bu header'ı ASP.NET eklediği için bunu .NET Framework'ün machine.config dosyasına asağıdaki ayarı ekleyin:
    <httpRuntime enableVersionHeader="false" />

Kaynaklar:

URL Rewrite
HTTP Response Headers (IIS 7)
HttpRuntimeSection.EnableVersionHeader Property

CENK