config címkéhez tartozó bejegyzések

Az IIS Express kitakarítása

Az IIS Express a beállításait a %USERPROFILE%\Documents\IISExpress\config\applicationHost.config fájlban tárolja, ami nagyon kényelmes, hiszen így nem szükséges rendszergazdai jog a szerkesztéséhez. Ennek következménye, hogy a Visual Studio eltávolításával a webszerver és a webalkalmazások beállításai megmaradnak.

Előfordulhat, hogy eltávolítjuk a VS 2012-t, telepítjük a 2013-as verziót, majd létrehozunk egy új webalkalmazást, ami szokatlanul viselkedik, például minden indításakor Windowsos bejelentkezést kér. Ez lehet amiatt is, hogy a korábban már hoztunk létre ugyanilyen néven webhelyet az IIS Expressben, aminek a beállításai megőrződtek a konfigurációs fájlban.

Ha a szokásos projektjeink mellett gyakran hozunk létre tesztelésre webprojekteket, akkor időnként érdemes kitakarítani az IIS Expresst. Mivel nincsen hozzá grafikus felületünk, vagy kézzel szerkesztjük az applicationHost.config fájlt, vagy parancssorból esünk neki.

Az Expresses appcmd.exe a C:\Program Files (x86)\IIS Express mappában található. Listázhatjuk vele a webhelyeket:

C:\Program Files (x86)\IIS Express>appcmd list site
SITE "WebSite1" (id:1,bindings:http/:8080:localhost,state:Unknown)
SITE "MyProject" (id:2,bindings:http/*:44441:localhost,https/*:44300:localhost,state:Unknown)
SITE "WebSite1(1)" (id:3,bindings:http/*:44468:localhost,state:Unknown)
SITE "WebSite2" (id:4,bindings:http/*:44465:localhost,state:Unknown)

Ha a webhelyek nevei nem mondanak sokat, akkor listázhatjuk a virtuális mappákat, mert azok mellett megjelennek a fizikai útvonalak is:

C:\Program Files (x86)\IIS Express>appcmd list vdir
VDIR "WebSite1/" (physicalPath:%IIS_SITES_HOME%\WebSite1)
VDIR "MyProject/" (physicalPath:W:\Projektek\MyProject)
VDIR "WebSite1(1)/" (physicalPath:W:\Temp\WebSite1)
VDIR "WebSite2/" (physicalPath:W:\Desktop\WebSite2)

Ha valamelyik webhelyre még szükségünk van, csak épp értelmes nevet akarunk neki adni, akkor átnevezhetjük:

C:\Program Files (x86)\IIS Express>appcmd set site WebSite1(1) -name:Master
SITE object "WebSite1(1)" changed

Amire pedig nincs szükség, azt bátran törölhetjük:

C:\Program Files (x86)\IIS Express>appcmd delete site WebSite2
SITE object "WebSite2" deleted

 

Technorati-címkék: ,,

Árulkodó HTTP fejlécek eltávolítása

Ha megnézzük egy ASP.NET alkalmazásunk hálózati forgalmát, akkor könnyen felfedezhetjük az alábbi fejléceket a HTTP válaszban:

Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 5.0

Ezek a fejléc mezők egyáltalán nem befolyásolják az alkalmazás működését, az egyetlen céljuk, hogy a Bing bot több információt nyerjen a webhelyről.

Sajnos azonban ezek a fejlécek a támadók dolgát jelentősen megkönnyítik, hiszen ha pontosan ismert a platform és a verziószám, akkor már elég csak azokkal az támadásokkal próbálkozni, amik ebben a környezetben működnek. Éppen ezért biztonsági okokból célszerű megváltoztatni az alapbeállításokat és eltávolítani ezeket a fejléceket.

 

Server

A Server fejléc “sugárzása” bele van drótozva az IIS-be, én nem tudok olyan kapcsolóról, amivel kényelmesen kikapcsolható lenne. Lehet használni az UrlScant, bár az az eszköz utoljára 2008-ban frissült. Ha ASP.NET alkalmazásunk van, akkor a global.asax-ban leszedhetjük ezt a fejléc mezőt, mielőtt a HTTP válasz kimenne a szerverről:

protected void Application_PreSendRequestHeaders()
{
  this.Response.Headers.Remove( "Server" ); }

 

X-Powered-By

Az X-Powered-By fejlécet az IIS pakolja rá a HTTP válaszokra, így akár szerver szinten megszabadulhatunk tőle az IIS Managerben:

header-x-powered-by

 

Vagy akár web.configban is:

<system.webServer>
   <httpProtocol>
     <customHeaders>
       <remove name="X-Powered-By" />
     </customHeaders>
   </httpProtocol>
</system.webServer>

 

X-AspNet-Version

Az X-AspNet-Version fejlécet viszonylag egyszerű kikapcsolni a web.configban:

<httpRuntime enableVersionHeader="false" />

 

X-AspNetMvc-Version

Az X-AspNet-Version fejlécet az alkalmazásunk indulásakor kapcsolhatjuk ki:

protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true; }

 

Ha mindezeket a beállításokat egyszerűbben szeretnénk elvégezni, akkor támaszkodhatunk a CodePlexen ingyenesen elérhető NWebsec projektre, amely a konfiguráció szigorításán kívül további lehetőségeket nyújt MVC-s és Azure-os projektek számára, illetve a session kezelés biztonságosabbá tételére. Ezek a funkciók egymástól függetlenül, önállóan is elérhetők NuGet csomagok formájában.

 

Technorati-címkék: ,,

IIS konfiguráció auditálás

Az IIS konfigurációs beállításai között nem nehéz olyat találni, aminek az átbillentése egy csapásra nem biztonságossá teszi a szervert. Éppen ezért nagyon fontos, hogy a konfiguráció változásait tudjuk követni, monitorozni. Szerencsére ez egy beépített lehetőség a webszerverben, csak nem ott kell keresni, ahol az összes többi opciót.

Indítsuk el az Event Viewert, majd navigáljunk el az Application and Services Logs –> Microsoft –> Windows –> IIS Configuration –> Operational ágig. Kattintsunk ezen az ágon jobb egérgombbal és válasszuk az Enable Log menüpontot az auditálás bekapcsolásához:

iis-config-audit-log

Ezek után minden egyes IIS módosítás megjelenik ebben a naplóban:

iis-config-audit-general

A General nézetben a módosított beállításon kívül jóformán csak a módosítás ideje és a felhasználó neve jelenik meg, de a Details nézetben több információt is találunk:

iis-config-details

Nem árt tudni, hogy csak azok a módosítások jelennek meg, amik az IIS Manageren vagy az objektum modellen keresztül történnek; ha az applicationHost.config fájlt Notepaddel szerkesztjük, annak sajnos nem lesz nyoma a naplóban.

 

Technorati-címkék: ,,,