IIS 8.5 inetPub Dizininin Taşınması
Bu makalemizde Microsoft IIS sunucular üzerinde en iyi güvenlik yapılandırma önerilerinden bir tanesi olan Inetpub dizininin sistem sürücüsü yerine farklı bir sürücüye taşınmasını ele alıyoruz.
Uygulamalarımızı Windows Server 2012 R2 ile gelen IIS 8.5 versiyon arayüzünde inceliyor olsak da aynı standartlar IIS 7.0 ve sonrası tüm versiyonlar için geçerli olacaktır.
INETPUB İÇERİĞİNİ TANIYALIM :
IIS web sunucularda güvenlik alanındaki en-iyi-yapılandırma pratiklerinden bir tanesi de Inetpub dizininin varsayılan olarak oluştuğu sistem diskinden farklı bir disk sürücüsüne taşınmasıdır. IIS 8.5 öncesi versiyonlarda bu işlemi işletim sistemi kurulumu esnasında katılımsız kurulum dosyası (unattend file) ile yapabiliyorduk. Özellikle Vista ve Windows Server 2008 ile başlayan yeni kurulum süreci ile bu uygulama biraz farklılaştı. Kurulum sonrasında Inetpub dizini otomatik olarak Windows ile aynı dizinde geliyor. Ve Inetpub dizinini Windows harici farklı bir disk sürücüne taşımak da kurulum sonrası gerçekleştirilmesi gerekiyor artık.
Aşağıdaki varsayılan kurulum sonrası Inetpub dizinini kullanan yapılandırma dosyalarını görüyorsunuz. Şimdi bu yapılandırma dosyalarını ve bunların farklı bir dizine nasıl taşındığını birlikte ele alalım. Bazı dizin isimleri sadece IIS 7 ve 7.5 versiyonuna ait olup 8.5 versiyonunda bulamayabilirsiniz.
LOGS\FREBLOGS : Failed Request Event Buffering (FREB) başarısızlıkla sonuçlanan isteklere ait günleri tutar. Varsayılan dizin yolu %systemdrive%\inetpub\logs\FailedReqLogfiles
LOGS\LOGFILES : IIS günlük dosyaları için varsayılan yol tanımı. Varsayılan dizin yolu %systemdrive%\inetpub\logs\logfiles
TEMP\AppPools : AppPool Isolation, ilk olarak IIS 7 ile gelmiş olan yeni bir özellik. IIS üzerinde oluşturulmuş uygulama havuzlarına ilişkin (application pools) yapılandırma dosyaları burada saklanmaktadır. Varsayılan konumu %systemdrive%\inetpub\temp\appPools
HISTORY : IIS sunucular için yapılandırma geçmişini tutar. Bir diğer ifade ile IIS yapılandırma ayarlarının saklandığı administration.config ve applicationHost.config dosyalarının sürekli bir yedeğini saklar. Böylece gerçekleştirilen yapılandırmalar geri alınabilir. Varsayılan konumu %systemdrive%\inetpub\history
TEMP\ASP COMPILED TEMPLATES : Classic ASP uygulamalarında derlenen ASP kodu hafıza alanında 250’yi geçerse derlenen kodlar disk üzerindeki bu alana yazılırlar. Varsayılan disk önbellekleme konumu %systemdrive%\inetpub\temp\ASP Compiled Templates
TEMP\IIS TEMPORARY COMPRESSED FILES : IIS sunucular sıkıştırılmış dosyaları gerektiğinde disk üzerinde önbellekleyebilir. Sıkıştırma önbelleği için varsayılan konum %systemdrive%\inetpub\temp\IIS Temporary Compressed Files
WWWROOT : IIS sunucular Default Web Site isimli varsayılan web sitesi ile gelmektedir. Bu siteden de varsayılan IIS yayını yapılmaktadır. Varsayılan konumu %systemdrive%\inetpub\wwwroot dizinidir.
CUSTERR : IIS sunucular için özelleştirilmiş hata sayfalarının depolandığı dizindir. Varsayılan konumu %systemdrive%\inetpub\custerr dizinidir.
WWWROOT ve FTPROOT: Özellikle servis paketleri (SP) ya da diğer kurulumlarda WWWROOT ve FTPROOT dizinlerinin nerede olduğuna ait bilgiler talep edilir. Bunda dolayı WWWROOT ve FTPROOT dizinlerine ait konum bilgisi registry içerisinde de kayıtlıdır.
INETPUB İÇERİĞİNİ TAŞIYORUZ :
Yukarıdak maddeler halinde anlattığımız dizinleri sırasıyla taşımaya başlıyoruz. Bu taşıma operasyonlarında APPCMD komut satırı aracını kullanacağız. Tüm yapılandırma dosyaları taşındıktan sonra da INETPUB dizinini XCOPY aracı ile istenilen disk sürücüsüne kopyalayacağız.
LOGS\FREBLOGS Taşınması:
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.traceFailedRequestsLogging.directory:”E:\inetpub\logs\FailedReqLogFiles”
LOGS\LOGFILES Taşınması:
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.logfile.directory:”E:\inetpub\logs\logfiles
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralBinaryLogFile.directory:”E:\inetpub\logs\logfiles
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralW3CLogFile.directory:”E:\inetpub\logs\logfiles
TEMP\AppPools Taşınması:
reg add HKLM\System\CurrentControlSet\Services\WAS\Parameters /v ConfigIsolationPath /t REG_SZ /d E:\inetpub\temp\appPools
HISTORY Taşınması:
%windir%\system32\inetsrv\appcmd set config -section:system.applicationhost/configHistory -path:E:\inetpub\history
TEMP\ASP COMPILED TEMPLATES Taşınması:
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/asp -cache.disktemplateCacheDirectory:”E:\inetpub\temp\ASP Compiled Templates”
TEMP\IIS TEMPORARY COMPRESSED FILES Taşınması:
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/httpCompression -directory:”E:\inetpub\temp\IIS Temporary Compressed Files”
WWWROOT Taşınması:
%windir%\system32\inetsrv\appcmd set vdir “Default Web Site/” -physicalPath:E:\inetpub\wwwroot
CUSTERR Taşınması:
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’401′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’403′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’405′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’404′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’406′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’412′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’500′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’501′].prefixLanguageFilePath:E:\inetpub\custerr
%windir%\system32\inetsrv\appcmd set config -section:httpErrors /[statusCode=’502′].prefixLanguageFilePath:E:\inetpub\custerr
WWWROOT ve FTPROOT Taşınması:
reg add HKLM\Software\Microsoft\inetstp /v PathWWWRoot /t REG_SZ /d E:\inetpub\wwwroot
reg add HKLM\Software\Microsoft\inetstp /v PathFTPRoot /t REG_SZ /d E:\inetpub\ftproot
INETPUB İçeriğinin Kopyalanması: Yukarıdaki adımlarla yapılandırma dosyalarının yeni konumları belirlendikten sonra tüm INETPUB içeriğini Windows dizininin bulunduğu sistem sürücüsünden farklı bir disk sürücüsüne tüm klasör ve dosyaların izinleri ve boş dizinleri ile beraber taşıma yapacağız. Bunun içinde XCOPY aracını ya da ROBOCOPY aracını kullanabilirsiniz. Aşağıda örnek olarak XCOPY aracının parametreleri ile taşıma yapacak komutumuzu görüyorsunuz:
XCOPY C:\Inetpub E:\Inetpub /E /O /I
/E : Boş dizinleri de kopyalar.
/O : Dosya ve dizinleri üzerlerinde tanımlı izinlerle birlikte kopyalar.
Böylece tüm Inetpub içeriğini E: sürücüsüne taşımış olduk.
ÖZETLE :
Microsoft IIS sunucular üzerinden web tabanlı mimaride hizmet veren servisler ve uygulamalar yaygınlaştıkça güvenlik önlemleri de daha fazla önem kazanmaktadır. Bu makalemizde IIS sunucular üzerinde en iyi güvenlik yapılandırma önerilerinden bir tanesi olan Inetpub dizininin sistem sürücüsü yerine farklı bir sürücüye taşınmasını ele detaylı adımlarla ele aldık.Yeni bir makalede görüşmek dileğiyle, hoşçakalın.
Mesut ALADAĞ.
Microsoft MVP, MCT, P-TSP
www.cozumpark.com | www.mesutaladag.com