Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
- Fare clic su Start, fare clic su Esegui e nella finestra di dialogo Apri: digitare blocco note e fare clic su OK.
Figura 1: Apertura della configurazione con blocco note - Fare clic su File, quindi Apri e nella finestra di dialogo Nome file: digitare
%windir%\system32\inetsrv\config\applicationHost.config
. Fare clic su Aperto.
Figura 2: percorso ApplicationHost.config - 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
Fare clic su Start, fare clic su Esegui e nella finestra di dialogo Apri: digitare blocco note e fare clic su OK.
Fare clic su File, quindi Aprire e nella finestra di dialogo Nome file: digitare
%windir%\system32\inetsrv\config\schema\iis\_schema.xml
.
Figura 3: Schema IIS- Per individuare la sezione configHistory, fare clic su CTRL-F e immettere configHistory.In Windows Server® 2008 viene visualizzato quanto segue:
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
Fare clic su Start, Esegui e digitare Inetmgr e fare clic su OK.
Figura 5: Apertura di Gestione IIS: fare doppio clic sul nome del server, ad esempio IIs7Server, per espandere l'albero di spostamento.Fare clic con il pulsante destro del mouse sul server e scegliere Aggiungi sito Web.
Figura 6: Aggiungere sito WebNella procedura guidata Aggiungi sito Web immettere informazioni per creare un nuovo sito Web. Ad esempio:
Figura 7: Aggiunta guidata sito WebFare clic su OK.
Viene ora visualizzato il nuovo sito Web creato in Gestione IIS, come illustrato di seguito:
Figura 8: Home page di Gestione IISA 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.
Fare clic su Start, Esegui e aprire
%systemdrive%\inetpub\history
.
Figura 9: Percorso predefinito della cronologia di configurazioneFare doppio clic sulla cartella cronologia e individuare la modifica più recente.
Figura 10: File di cronologia di ApplicationHost.configNota
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.
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
- Fare clic su Start, fare clic su Esegui e nella finestra di dialogo Apri: digitare Blocco note e fare clic su OK.
- 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
Per individuare la sezione configHistory, fare clic su CTRL-F e immettere system.applicationHost.
Figura 12: Individuazione del gruppo di sezioni system.applicationHostOra 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
- Usando la sessione precedente, aggiungere l'attributo period aggiungendo il valore period="00:00:10".
- 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
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
Salvare il file come ConfigHst.vbs (assicurarsi di scegliere Tutti i file per evitare di salvare come file di testo).
Figura 13: Salvataggio dello script VBSEseguire 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.
Aprire quindi il percorso predefinito per configHistory facendo clic su Start, quindi su Esegui e digitando
%systemdrive%\inetpub\history
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.
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
Fare clic su Avviare, selezionare Esegui, quindi digitare CMD e fare clic su OK.
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:
Figura 15: Messaggio di evento se le autorizzazioni non sono adeguate al percorso della cronologia
Passaggio 2: Individuare AppCmd.exe
Fare clic su Avviare, selezionare Esegui, quindi digitare CMD e fare clic su OK.
Al prompt dei comandi modificare le directory digitando quanto segue:
Cd %windir%\system32\inetsrv
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
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.
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"
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:
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
- Fare clic su Start, Esegui e digitare CMD e fare clic su OK.
- Passare alla directory inetsrv usando il comando seguente:
cd %windir%\system32\inetsrv
. - 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.
- Passare alla directory della cronologia usando le informazioni riportate nel passaggio 1 precedente.
- 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.