Condividi tramite


Uso della cronologia di configurazione con IIS 7 e IIS 8

by Tobin Titus

Introduzione

In IIS 6.0 gli amministratori hanno una rete di sicurezza che consente loro di verificare facilmente cosa cambia nella configurazione IIS. È stato implementato come file di cronologia che può essere ripristinato facilmente e servito come cronologia utilizzabile degli eventi che si sono verificati nella configurazione. In caso di errori durante le installazioni, gli aggiornamenti o le singole modifiche apportate alla metabase, l'utente potrebbe ripristinare uno stato funzionante.

Con IIS 7.0 e versioni successive, il team IIS voleva lo stesso "safety net", ma non è stato possibile usare la funzionalità cronologia iis 6.0 a causa delle modifiche apportate all'architettura di configurazione. In IIS 7.0 e versioni successive è stato risolto questo problema creando un servizio che monitora le modifiche al file di configurazione master, ApplicationHost.config e crea periodicamente snapshot per recuperare in un secondo momento.

Questa funzionalità è denominata Cronologia configurazione IIS. Questa procedura dettagliata illustra il funzionamento di questa funzionalità.

Attività 1: Revisione delle impostazioni di configurazione predefinite configHistory

In questa attività vengono esaminate le opzioni di configurazione disponibili dopo l'installazione predefinita di IIS. Nelle attività successive si modificano alcune di queste impostazioni per mostrare la flessibilità della funzionalità per adattarsi all'ambiente.

Passaggio 1: Aprire applicationHost.config

  1. Fare clic su Start, fare clic su Esegui e nella finestra di dialogo Apri: digitare blocco note e fare clic su OK.
    Screenshot che mostra il menu Di esecuzione della cronologia configurazione I S. Il blocco note della voce di menu è evidenziato.
    Figura 1: Apertura della configurazione con blocco note
  2. Fare clic su File, quindi Apri e nella finestra di dialogo Nome file: digitare %windir%\system32\inetsrv\config\applicationHost.config. Fare clic su Aperto.
    Screenshot che mostra il menu Apri configurazione IO S. La voce Nome file è evidenziata.
    Figura 2: percorso ApplicationHost.config
  3. Per individuare la sezione configHistory, fare clic su CTRL-F e immettere configHistory e fare clic su Trova avanti.

Dopo aver aperto il file master, viene visualizzata una voce simile alla seguente per configHistory:

<sectionGroup name"system.applicationHost>
    <section name="applictionPools" allowDefinition="AppHostOnly" overrideMode="Deny" />
    <section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
    <section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> 
    <section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> 
    <section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> 
    <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> 
    <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> 
</sectionGroup>

Si noti che non sono disponibili altre impostazioni per questa funzionalità in applicationHost.config. Questo comportamento è previsto perché per impostazione predefinita, IIS usa i valori archiviati nello schema IIS. Per visualizzare le impostazioni predefinite, aprire il file dello schema IIS (IIS_schema.xml.)

Passaggio 2: Individuare le impostazioni predefinite configHistory nello schema IIS

  1. Fare clic su Start, fare clic su Esegui e nella finestra di dialogo Apri: digitare blocco note e fare clic su OK.

  2. Fare clic su File, quindi Aprire e nella finestra di dialogo Nome file: digitare %windir%\system32\inetsrv\config\schema\iis\_schema.xml.
    Screenshot che mostra il file dello schema I S nel Blocco note contenente le impostazioni predefinite configHistory.
    Figura 3: Schema IIS- Per individuare la sezione configHistory, fare clic su CTRL-F e immettere configHistory.

  3. In Windows Server® 2008 viene visualizzato quanto segue:
    Screenshot che mostra il file dello schema I S in Windows Server 2008. Lo schema configHistory predefinito è evidenziato.

    Figura 4: definizione dello schema configHistory

    Esistono quattro impostazioni configurabili (attributi) per la sezione configHistory:

    Attributo Impostazione predefinita Definizione
    abilitata True Questo valore indica se la cronologia di configurazione è abilitata o disabilitata
    path %systemdrive%\inetpub\history Percorso in cui vengono create e archiviate le directory della cronologia
    maxHistories 10 Numero massimo di directory mantenute
    Periodo 00:02:00 Tempo compreso tra ogni controllo apportato per le modifiche

Riepilogo

Nonostante la sua semplicità relativa, non ignorare questa attività. Offre informazioni dettagliate dirette sugli attributi di configurazione disponibili per la sezione configHistory. In seguito si modificano queste impostazioni come dimostrazione della flessibilità delle funzionalità in base all'ambiente.

Attività 2: Convalida della funzionalità configHistory funziona correttamente

L'obiettivo di questa attività consiste nel vedere configHistory in azione. Inoltre, per gli amministratori esperti che comprendono la cronologia della metabase IIS 6.0, questa attività consente di apprendere le differenze tra le due funzionalità.

La cronologia della metabase è stata basata su file anziché basata su directory, ad esempio la cronologia di configurazione di IIS 7.0 e versioni successive. Ad esempio, tutti i backup in IIS 6.0 sono stati archiviati nella stessa posizione non personalizzabile. In IIS 7.0 e versioni successive ogni copia univoca viene archiviata nella propria directory in fase di creazione. In questa attività si apportano alcune modifiche al file di configurazione IIS usando Gestione IIS e si esaminano i risultati di queste modifiche.

Passaggio 1: Creare un sito Web

  1. Fare clic su Start, Esegui e digitare Inetmgr e fare clic su OK.
    Screenshot che mostra l'aggiunta di un nome server nel menu I S Manager Apri.
    Figura 5: Apertura di Gestione IIS: fare doppio clic sul nome del server, ad esempio IIs7Server, per espandere l'albero di spostamento.

  2. Fare clic con il pulsante destro del mouse sul server e scegliere Aggiungi sito Web.
    Screenshot che mostra la finestra albero di spostamento di I S Manager e l'opzione di menu Aggiungi sito Web. L'oggetto I S 7 Server è evidenziato.
    Figura 6: Aggiungere sito Web

  3. Nella procedura guidata Aggiungi sito Web immettere informazioni per creare un nuovo sito Web. Ad esempio:
    Screenshot che mostra la finestra Aggiungi guidata sito Web. La finestra contiene informazioni di esempio per creare un nuovo sito Web.
    Figura 7: Aggiunta guidata sito Web

  4. Fare clic su OK.

  5. Viene ora visualizzato il nuovo sito Web creato in Gestione IIS, come illustrato di seguito:
    Screenshot che mostra una nuova home page del sito Web, in I S Manager. Il nuovo sito Web, MyWebSite Home, è evidenziato nell'albero di spostamento.
    Figura 8: Home page di Gestione IIS

    A questo punto, si verifica che sia stato acquisito un backup riuscito delle modifiche di configurazione dal servizio Helper host dell'applicazione.

Passaggio 2: Individuare i file di cronologia per applicationHost.config

Nota

È probabile che la copia non venga visualizzata immediatamente dopo aver eseguito questi passaggi. Si basa sul valore predefinito di due minuti. Se non viene creata alcuna copia, verificare di aver aspettato due minuti.

  1. Fare clic su Start, Esegui e aprire %systemdrive%\inetpub\history.
    Screenshot che mostra la finestra i net pub. La cartella cronologia è evidenziata.
    Figura 9: Percorso predefinito della cronologia di configurazione

  2. Fare doppio clic sulla cartella cronologia e individuare la modifica più recente.
    Screenshot che mostra la cartella cronologia e la modifica più recente della configurazione punto ApplicationHost.
    Figura 10: File di cronologia di ApplicationHost.config

    Nota

    Se non è possibile individuare la copia nella cartella cronologia, verificare che il servizio Helper host applicazione sia in esecuzione. Controllare la Visualizzatore eventi per eventuali potenziali errori generati da IIS-AppHstSvc.

Screeshot che mostra la finestra Servizi, con il servizio Helper host applicazione evidenziato.
Figura 11: Servizio helper host applicazione

Riepilogo

In questa attività sono stati eseguiti alcuni passaggi per comprendere il funzionamento della funzionalità cronologia configurazione IIS. Prima di tutto, sono state apportate modifiche alla ApplicationHost.config, attivando il servizio helper host applicazione per creare una copia al periodo pianificato successivo. Inoltre, si trova la copia e si convalida che è stata creata correttamente la copia in %systemdrive%\inetpub\history.

Attività 3: modifica del numero di directory (maxHistories) mantenute e degli attributi del periodo

L'obiettivo di questa attività è modificare correttamente il numero di file di cronologia conservati da IIS 7.0 e versioni successive. Poiché le impostazioni predefinite vengono archiviate nello schema, è necessario creare la sezione configHistory in applicationHost.config e aggiungere gli attributi e i valori appropriati per gli attributi maxHistories e period.

In questa attività usare Blocco note per modificare questo attributo per mostrare la flessibilità e la semplicità di modifica ApplicationHost.config.

Passaggio 1: Aprire applicationHost.config

  1. Fare clic su Start, fare clic su Esegui e nella finestra di dialogo Apri: digitare Blocco note e fare clic su OK.
  2. Fare clic su File, quindi Apri e nella finestra di dialogo Nome file: digitare %windir%\system32\inetsrv\config\applicationHost.config e fare clic su Apri.

Il passaggio successivo consiste nell'aggiungere la sezione di configurazione e quindi aggiungere l'attributo con il valore .

Passaggio 2: Aggiungere la sezione configHistory e Aggiungere maxHistory

  1. Per individuare la sezione configHistory, fare clic su CTRL-F e immettere system.applicationHost.
    Screenshot che mostra la finestra di dialogo Trova per individuare la sezione configHistory. La voce della finestra di dialogo system.applicationHost è evidenziata.
    Figura 12: Individuazione del gruppo di sezioni system.applicationHost

  2. Ora che ci si trova nella sezione destra, aggiungere l'attributo e il valore corretti per maxHistory. Digitare il testo seguente nel gruppo di sezioni system.applicationHost:

    <configHistory maxHistories="15" />
    

Nota

Per risparmiare tempo nel passaggio successivo, lasciare aperto blocco note dopo aver completato questa attività.

Verificare infine che la modifica sia stata eseguita. Per impostazione predefinita, si noterà che per impostazione predefinita dovrebbero essere visualizzate solo 10 directory alla volta, come definito dallo schema IIS.

Dopo aver aumentato i valori massimi mantenuti da IIS, è necessario un metodo semplice per attivare molte directory da creare. Per simulare questa operazione, il valore predefinito per l'attributo period viene ridotto al valore predefinito minimo di 10 secondi. Ciò aumenta l'intervallo di controllo delle modifiche e quindi crea potenzialmente più copie dei file in un ambiente dinamico.

Passaggio 3: Impostare l'attributo period per configHistory

  1. Usando la sessione precedente, aggiungere l'attributo period aggiungendo il valore period="00:00:10".
  2. Fare clic su File, Salva per eseguire il commit delle modifiche.

Al termine, la sezione configHistory è simile alla seguente:

<configHistory maxHistories="15" period="00:00:10" />

Passaggio 4: Eseguire script per causare la creazione della cronologia

  1. Aprire il Blocco note. Copiare e incollare quanto segue:

    Option Explicit 
    
    ' Global objects, variables
    Dim objShell, argObj, oExec
    Dim strDirectory, strFile, strCmd, strFullCmd, stdIn, i
    
    set objShell = CreateObject("Wscript.Shell")
    strDirectory = "%windir%\system32\inetsrv\" 
    strFile = "AppCmd.exe"
    
    set ArgObj = Wscript.Arguments
    
    ' No args (default case), hard-code StdIn
    If ArgObj.Count = 0 Then 
    stdIn = 17
    
    i = 0 'initilize i
    
    For i = 0 to stdIn 
    ' Call Select Case to change Statement 
    strCmd = getStrCmd(i)
    strFullCmd = strDirectory & strFile & " " & strCmd
    
    Set oExec = objShell.Exec(strFullCmd) 
    
    Do While oExec.Status = 0
    WScript.Sleep 100
    Loop 
    
    If oExec.ExitCode <> 0 Then 
    ' Something wrong with the IIS Installation
    
    ' Is AppCmd installed on the machine? \inetsrv directory?
    msgBox "Executing AppCmd Command Failed. Please Try Again!"
    
    wscript.Quit
    End if 
    
    WScript.Sleep(2 * 1000)
    
    Next 
    
    ' Handle the case where we passed arguments to
    ' the script
    
    Else 
    stdIn = ArgObj(0)
    
    ' Same code as above but handle arguments being passed.
    
    i = 0 ' initialize i
    
    For i = 0 to stdIn 
    ' Call Select Case to change Statement
    strCmd = getStrCmd(i)
    strFullCmd = strDirectory & strFile & " " & strCmd
    
    Set oExec = objShell.Exec(strFullCmd)
    
    Do While oExec.Status = 0
    WScript.Sleep 100
    Loop 
    
    ' Validate that AppCmd calls succeeded by checking Error code
    If oExec.ExitCode <> 0 Then 
    ' Something wrong with the IIS Installation
    ' Is AppCmd installed on the machine? \inetsrv directory?
    msgBox "Executing AppCmd Command Failed. Please Try Again!"
    wscript.Quit
    End if 
    
    ' Go to sleep for x period (default: 20)
    WScript.Sleep(20 * 1000)
    
    Next 
    
    ' End the StdIn Input Tree
    
    End if 
    
    ' AppCMD Command Function 
    Function getStrCmd(MyIndex)
    Select Case (MyIndex)
    Case 0 ' set Server Runtime
    getStrCmd = "set config /section:serverRuntime /enabled:false"
    Case 1 ' set Default Document
    getStrCmd = "set config /section:defaultDocument /enabled:true"
    Case 2 'set httpRedirect
    getStrCmd = "set config /section:httpRedirect /enabled:true"
    Case 3 ' set Client Certificate Mapping Auth
    getStrCmd = "set config /section:security/authentication/clientCertificateMappingAuthentication /enabled:true"
    Case 4 ' set Directory Browse
    getStrCmd = "set config /section:directoryBrowse /enabled:true"
    Case 5 ' set httpRedirect
    getStrCmd = "set config /section:httpRedirect /enabled:false" 
    Case 6 ' set anonymousAuth
    getStrCmd = "set config /section:security/authentication/anonymousAuthentication /enabled:false"
    Case 7 ' set basicAuth
    getStrCmd = "set config /section:security/authentication/basicAuthentication /enabled:true"
    Case 8 ' set digestAuth
    getStrCmd = "set config /section:security/authentication/digestAuthentication /enabled:true"
    Case 9 ' set client cert mapping auth
    getStrCmd = "set config /section:security/authentication/clientCertificateMappingAuthentication /enabled:false"
    Case 10 ' set windows auth
    getStrCmd = "set config /section:security/authentication/windowsAuthentication /enabled:true"
    Case 11 ' server runtime
    getStrCmd = "set config /section:serverRuntime /enabled:true"
    Case 12 ' set Server Runtime
    getStrCmd = "set config /section:serverRuntime /enabled:false"
    Case 13 ' set Server Runtime
    getStrCmd = "set config /section:serverRuntime /enabled:true"
    Case 14 ' set Server Runtime
    getStrCmd = "set config /section:serverRuntime /enabled:true"
    Case 15 ' set Server Runtime
    getStrCmd = "set config /section:serverRuntime /enabled:true"
    Case 16 ' set Server Runtime
    getStrCmd = "set config /section:serverRuntime /enabled:true"
    Case 17 ' set Server Runtime
    getStrCmd = "set config /section:serverRuntime /enabled:true"
    
    End select 
    End Function
    
  2. Salvare il file come ConfigHst.vbs (assicurarsi di scegliere Tutti i file per evitare di salvare come file di testo).
    Screenshot che mostra la finestra Salva con nome.
    Figura 13: Salvataggio dello script VBS

  3. Eseguire questo file VBS aprendo un prompt dei comandi, individuando il percorso del file in cui è stato salvato e digitando quanto segue:

    cscript //nologo configHst.vbs
    

    Questo script effettua chiamate per modificare la configurazione di IIS ogni 15 secondi. Tempo sufficiente per la cronologia di configurazione per verificare la presenza di modifiche e creare un backup. Dopo aver completato questa operazione, viene visualizzata una vasta gamma di backup di configurazione nella directory di backup.

  4. Aprire quindi il percorso predefinito per configHistory facendo clic su Start, quindi su Esegui e digitando %systemdrive%\inetpub\history

  5. Viene visualizzata una cartella di backup, ad esempio CFGHISTORY_0000001, CFGHISTORY_0000002 e così via.

Dopo l'esecuzione di questo script, si noti come questa funzionalità esegua il push dei dati meno recenti quando si raggiunge il valore massimo ,ad esempio maxHistories. In questo caso, dopo aver raggiunto CFGHISTORY_0000000015, l'elemento meno recente è stato eliminato prima di creare la sedicesima directory.

Screenshot che mostra la finestra della directory della cronologia.
Figura 14: Directory cronologia con valore massimo di 15

Riepilogo

In questa attività è stato modificato correttamente il numero di backup archiviati da IIS. L'impostazione predefinita di 10 è sufficiente per molti; tuttavia, per gli ambienti dinamici, ad esempio i server di hosting condivisi in cui i clienti accedono a siti in modo casuale e spesso, è consigliabile avere una cronologia più completa.

In questa attività sono stati modificati gli attributi maxHistories e period per la sezione configHistory e quindi sono state generate più modifiche che mostrano che sono state archiviate più di 10 copie (impostazione predefinita).

Attività 4: Modifica del percorso predefinito per il salvataggio di backup configHistory

Il numero di directory di cronologia e i file associati archiviati da IIS è configurabile in modo flessibile a seconda dell'ambiente. Per molti casi, l'archiviazione dei file di cronologia nel percorso di sistema (ad esempio %systemdrive%inetpub\history) non è auspicabile. A differenza della cronologia in IIS 6.0, che non aveva alcun meccanismo configurabile per la cronologia di configurazione, la cronologia di configurazione di IIS 7.0 e versioni successive offre ora la possibilità di modificare la posizione in cui IIS archivia le directory e i file della cronologia.

In questa attività viene usato un metodo per modificare la configurazione, in questo caso l'interfaccia della riga di comando IIS. L'obiettivo di questa attività non è solo quello di modificare il percorso per le directory della cronologia di configurazione, ma anche di acquisire familiarità con AppCmd.exe, l'interfaccia della riga di comando IIS ai dati di configurazione e di runtime.

Passaggio 1: Creare la directory per la cronologia

  1. Fare clic su Avviare, selezionare Esegui, quindi digitare CMD e fare clic su OK.

  2. Al prompt dei comandi creare la directory digitando quanto segue:

    md MyWebHistory

Questo passaggio è obbligatorio perché non viene creata automaticamente alcuna directory se non esiste. Se non si riesce a eseguire questo passaggio, verrà visualizzato quanto segue:
Screenshot che mostra la finestra informazioni proprietà evento.
Figura 15: Messaggio di evento se le autorizzazioni non sono adeguate al percorso della cronologia

Passaggio 2: Individuare AppCmd.exe

  1. Fare clic su Avviare, selezionare Esegui, quindi digitare CMD e fare clic su OK.

  2. Al prompt dei comandi modificare le directory digitando quanto segue:

    Cd %windir%\system32\inetsrv
    
  3. Per acquisire familiarità con la sintassi di AppCmd, digitare quanto segue:

    Appcmd /?
    

A questo punto, modificare il valore per l'attributo path in un valore più appropriato nell'ambiente in uso. In questo caso, modificarlo in una directory personalizzata nella partizione di sistema, ovvero la %systemdrive%\MyWebHistory directory.

Nota

Spesso è necessario spostare questi dati in una partizione separata, o meglio, in un'unità in un controller diverso, ad esempio D:, e così via. Modificare il valore del percorso usando AppCmd: -

Passaggio 3: Modificare il valore del percorso per configHistory

  1. Per acquisire familiarità con AppCmd.exe, aprire un prompt dei comandi e digitare quanto segue:

    Appcmd set config –section:?
    

    Questo comando consente di apprendere come esaminare le sezioni attualmente disponibili consentite per la modifica.

    Appcmd list config –section:configHistory –config:*
    

    Questo comando consente di comprendere quali sono gli attributi e i valori attualmente impostati nel sistema.

  2. Eseguire ora il comando seguente per modificare l'attributo path dal valore predefinito di %systemdrive%inetpub\history a %systemdrive%MyWebHistory :

    Appcmd set config -section:configHistory –path:"%systemdrive%MyWebHistory"
    
  3. Per convalidare la modifica, digitare quanto segue e verificare che maxHistories e period siano impostati in modo appropriato.

<configHistory maxHistories="15" period="00:00:10" path="%systemdrive%\MyWebHistory" />

Saranno visualizzate le informazioni illustrate nell'immagine seguente:
Screenshot della console di comando dell'amministratore.
Figura 16: Uso di AppCmd per elencare la configurazione

Infine, verranno apportate modifiche alla configurazione, causando l'attivazione di un backup. Si noti il nuovo percorso per le directory e i file.

Passaggio 4: Eseguire nuovamente lo script precedente

  • Eseguire ConfigHst.vbs digitando quanto segue:
cscript //nologo configHst.vbs

Se si seleziona %systemdrive%\MyWebHistory, vengono visualizzate diverse directory con nomi di cartelle simili a CFGHISTORY_0000001, 2 e così via.

Riepilogo

È prassi standard spostare dati importanti e volatili dalla partizione di sistema del server (%systemdrive% per impostazione predefinita) ad altre partizioni o unità. In questa attività è stato modificato correttamente il percorso di destinazione per le directory della cronologia di configurazione IIS.

Attività 5: Ripristino della configurazione da un file di backup

Non è utile avere una funzionalità di cronologia senza offrire un metodo per il ripristino di una configurazione funzionante in precedenza. Lo scopo di questa attività è eseguire un processo manuale per il ripristino da una copia della configurazione creata in precedenza.

Passaggio 1: Elencare i backup disponibili

  1. Fare clic su Start, Esegui e digitare CMD e fare clic su OK.
  2. Passare alla directory inetsrv usando il comando seguente: cd %windir%\system32\inetsrv.
  3. Per ottenere il percorso attualmente configurato per la sezione configHistory, digitare quanto segue:
appcmd list backups

Questo comando elenca i backup disponibili, inclusi i backup manuali eseguiti con il comando appcmd add backup, nonché i backup eseguiti dal servizio cronologia configurazione. È possibile usare il comando di backup di ripristino appcmd per ripristinare uno di questi, come illustrato nel passaggio successivo

Passaggio 2: Ripristinare il backup

Dopo aver seguito le istruzioni nel passaggio precedente per elencare i backup, selezionare il backup da ripristinare e ripristinarlo digitando quanto segue:

backup backup di appcmd BACKUPNAME

Dove BACKUPNAME è uno dei backup elencati nel passaggio 1, ad esempio, CFGHISTORY_0000000016.

È anche possibile cercare manualmente i file di configurazione nella cartella di backup per determinare il backup da ripristinare:

Fare clic su Start, Esegui e digitare CMD e fare clic su OK.

  1. Passare alla directory della cronologia usando le informazioni riportate nel passaggio 1 precedente.
  2. Usare il comando findstr di Windows per individuare la modifica che si sta cercando. In questo caso, individuare la configurazione con directoryBrowse impostata su false.
Findstr /S /I /C:"directoryBrowse enabled=\"false\"" *.config

In questo modo viene eseguita la ricerca nella directory corrente e in tutte le sottodirectory della stringa DirectoryBrowse è uguale a false. Viene restituito un solo elemento, ad esempio CFGHISTORY_0000000016, che indica cosa verrà ripristinato.

Riepilogo

In questa attività è stata individuata una copia della cronologia e ripristinata. Questa attività è l'illustrazione più importante della funzionalità di cronologia della configurazione, in quanto offre la possibilità di eseguire facilmente il rollback a una configurazione funzionante in precedenza.