IIS – INETPUB Ordner auf ein nicht-Systemlaufwerk verschieben

Aus Sicherheitssicht ist es besser, den Inhalt eines Web-Servers von der Systempartition zu trennen. In früheren Versionen war dies bereits bei der Installation per unattended Setup File möglich. Seit Windows Server 2008 (IIS7) ist dies bedingt durch Änderungen in der Setup-Routine nicht mehr möglich und muss nach Abschluss der Installation manuell durchgeführt werden.

Im folgenden Beispiel zeige ich euch, was es mit den verschiedenen Ordner auf sich hat und wie mann die entsprechenden Ordner verschiebt. Ziellaufwerk ist in diesem Fall Laufwerk D:\.

LOGS\FREBLOGS

Failed Request Event Burffering (FREB) ist ein neues Feature in IIS8, das fehlgeschlagene Requests protokolliert.
Standardpfad: %systemdrive%\inetpub\logs\FailedReqLogfiles.

%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.traceFailedRequestsLogging.directory:"D:\inetpub\logs\Failed\ReqLogFiles"

LOGS\LOGFILES

Standardpfad: %systemdrive%\inetpub\logs\logfiles.

%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.logfile.directory:"D:\inetpub\logs\logfiles"
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralBinaryLogFile.directory:"D:\inetpub\logs\logfiles"
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralW3CLogFile.directory:"D:\inetpub\logs\logfiles"

TEMP\APPPOOLS

AppPool Isolation ist ebenfalls ein neues Feature in IIS7. Eine dedizierte AppPool Konfigurationsdatei wird automatisch generiert, bevor ein neuer AppPool startet.
Standardpfad: %systemdrive%\inetpub\temp\appPools

reg add HKLM\System\CurrentControlSet\Services\WAS\Parameters /v ConfigIsolationPath /t REG_SZ /d D:\inetpub\temp\appPools

HISTORY

Die Konfigurationshistorie stellt sicher, dass Änderungen rückgängig gemacht werden können.
Standardpfad:  %systemdrive%\inetpub\history

%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/configHistory -path:"D:\inetpub\history"

TEMP\ASP COMPILED TEMPLATES

Klassisches ASP speichert kompilierten ASP Code auf die Disk, wenn sich mehr als 250 kompilierte Templates im Speicher befinden.
Standardpfad:  %systemdrive%\inetpub\temp\ASP Compiled Templates

%windir%\system32\inetsrv\appcmd set config -section:system.webServer/asp -cache.disktemplateCacheDirectory:"D:\inetpub\temp\ASP Compiled Templates"

TEMP\IIS TEMPORARY COMPRESSED FILES

IIS7 cached komprimierte Responses auf Disk, wenn dies nötig ist.
Standardpfad:  %systemdrive%\inetpub\temp\IIS Temporary Compressed Files

%windir%\system32\inetsrv\appcmd set config -section:system.webServer/httpCompression -directory:"D:\inetpub\temp\IIS Temporary Compressed Files"

CUSTERR

Im CUSTERR Ordner werden die Custom Error Pages des IIS gespeichert.
Standardpfad:  %systemdrive%\inetpub\custerr

%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='401'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='403'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='404'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='405'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='406'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='412'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='500'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='501'].prefixLanguageFilePath:"D:\inetpub\custerr"
%windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode='502'].prefixLanguageFilePath:"D:\inetpub\custerr"

WWWROOT

Standardpfad:  %systemdrive%\inetpub\wwwroot
Zusätzlich ist für Service Packs und andere Installer der Pfad in der Registry spezifiziert und muss angepasst werden.

%windir%\system32\inetsrv\appcmd set vdir "Default Web Site/" -physicalPath:"D:\inetpub\wwwroot"
reg add HKLM\Software\Microsoft\inetstp /v PathWWWRoot /t REG_SZ /d D:\inetpub\wwwroot

FTPROOT

Standardpfad:  %systemdrive%\inetpub\ftproot
Zusätzlich ist für Service Packs und andere Installer der Pfad in der Registry spezifiziert und muss angepasst werden.

%windir%\system32\inetsrv\appcmd set vdir "Default FTP Site/" -physicalPath:"D:\inetpub\ftproot"
reg add HKLM\Software\Microsoft\inetstp /v PathFTPRoot /t REG_SZ /d D:\inetpub\ftproot

Nach Abschluss der Anpassungen muss noch der Inhalt des inetpub-Ordners an die neue Stelle kopiert werden:

xcopy %systemdrive%\inetpub D:\inetpub /E /O /I

/E kopiert alle Verzeichnisse, auch leere
/O kopiert alle Sicherheitseinstellungen, z.B. ACLs
/I definiert das Ziel als einen Ordner

Der alte Ordner %systemdrive%\inetpub sollte NICHT gelöscht werden.

5 Antworten

  1. Pedro Vizcaino sagt:

    Im Abschnitt LOGS\FREEBLOGS hat sich leider ein kleiner Tippfehler eingeschlichen.

    Der Abschnitt sollte selbst besser LOGS\FREBLOGS heißen und der dort stehende AppCmd-Befehl muss korrekt so geschrieben werden:

    %windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.traceFailedRequestsLogging.directory:“D:\inetpub\logs\Failed\ReqLogFiles“

    • Hallo Pedro. Danke für den Hinweis. Die Überschrift war natürlich ein Tippfehler, aber bei dem Parameter war ich mir sicher, er wird „Request“ geschrieben und nicht „Requests“. Getäuscht, du hast Recht. Ist korrigiert. Gruß. Andreas

  2. Peter Huber sagt:

    Hallo
    Ich bekomme immer einen Fehler, wenn ich den Befehl „LOGS\LOGFILES“ – Befehl als ADMIN im CMD ausführe:

    C:\Windows\system32>C:\Windows\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.logfile.directory:“D:\inetpub\logs\logfiles“?C:\Windows\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralBinaryLogFile.directory:“D:\inetpub\logs\logfiles“?C:\Windows\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralW3CLogFile.directory:“D:\inetpub\logs\logfiles“
    Fehler beim Verarbeiten der Eingabe: Der Parameter „config“ muss mit / oder – (HRESULT=8007005)

    Kann mir jemand helfen, wo das Problem liegen könnte??

  3. Astrid Brodbeck sagt:

    Hallo,
    klasse Beschreibung, Danke.
    Ich bekomme folgenden Fehler bei den custom errors:
    %windir%\system32\inetsrv\appcmd set config -section:httpErrors/[statusCode=’401′].prefixLanguageFilePath:“D:\inetpub\custerr“
    ERROR ( message:Unbekannter Konfigurationsabschnitt „httpErrors/[statusCode=’401′].prefixLanguageFilePath:D:\inetpub\custerr“. Durch „?“ ersetzen, um Hilfe anzuzeigen. )
    Kann es sein, dass sich das mit neuen IIS Versionen geändert hat?

    • Hallo Astrid
      Also bis inkl. IIS 7.5 hat die Änderung des Pfads noch so funktioniert.
      In diesem Microsoft Artikel steht aber etwas davon, dass der Konfigurationsabschnitt system.webServer in IIS 8.0 geändert wurde; in der Beispiel-XML steht httpErrors jetzt da drin. Du kannst mal folgenden Befehl probieren (ich hab leider aktuell keinen IIS, um das selbst auszuprobieren):
      %windir%\system32\inetsrv\appcmd set config -section:system.webServer/httpErrors/[statusCode=’401′].prefixLanguageFilePath:"D:\inetpub\custerr"
      Gruß
      Andreas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.