Tutti gli articoli di Ermanno Goletto

Gestione backup GLPI v9.1.4 in ambiente Windows

GLPI (Gestion Libre de Parc Informatique) è un progetto Open Source gratuito distribuito sotto licenza GPL che consente l’IT Asset Management, l’issue tracking system, fornisce una soluzione di service desk solution e consente la gestione di tasks amministrativi e finanziari. Dal momento che il servizio di l’IT Asset Management e/o di issue tracking system, quando implementate all’interno di un’infrastruttura informatica, assumono un’importanza rilevate ai fini della gestione occorre pianificare un’adeguata politica di backup.

Di seguito verrà analizzato come gestire il backup di GLPI 9.1.4 installato in IIS con PHP 7.1.1 su MariaDB 10.2.7 in ambiente Windows Server 2012 R2, inoltre si ipotizzerà che i file di GLPI siano memorizzati in S:\GLPI e che il database sia stato creato col nome glpi.

Funzionalità di backup in GLPI

GLPI offre nativamente la possibilità di eseguire il backup del database tramite il menu Amministrazione – Manutenzione

Tale backup permette di creare un dump sql o XML del contenuto del database, ma come riportato nella pagina WIKI Data/Backup del progetto GLPI al momento non è possibile automatizzare tale operazione, che può quinti tornare utile per backup estemporanei da eseguire prima di operazioni per cui è consigliabile avere una copia di sicurezza del database.

I backup eseguiti tramite l’interfaccia web di GLPI vengono conservati nella subdirectory files\_dumps della cartella d’installazione, è possibile copiarli e incollarli per esempio per gestire il restore su un server differente ad esempio per creare ambienti di test.

Backup del database di GLPI tramite script

Dal momento che come visto precedentemente il backup nativo di GLPI non offre la possibilità di essere eseguito in base ad una schedulazione, per una gestione automatizzata del processo di backup occorrerà creare degli appositi script da eseguire in base ad un’opportuna pianificazione. Di seguito si analizzerà come creare uno script per il backup del database di GLPI ipotizzando che, come detto precedentemente, quest’ultimo sia esposto dal DBMS MariaDB 10.2.7.

In MariaDB 10.2.7 è stato introdotto il tool di backup mariabackup in versione Beta basato su Percona XtraBackup 2.3.8, a riguardo si vedano About MariaDB Backup e MariaDB Backup released with MariaDB Server 10.1.23. Tramite mariabackup è possibile gestire tramite script le operazioni di backup del DBMS MariaDB, di seguito uno script Powershell per il backup gestito dell’intero DBMS MariaDB con possibilità di gestione del numero minimo di backup da mantenere, lo script prevede l’utilizzo dei parametri per poter essere gestito nell’ambito di un’automazione del backup del server GLPI che prevede più step.

Param(
[string]$MariaBackupFile,
[string]$BackupRoot,
[string]$MariaDBHost,
[string]$User,
[string]$Password,
[uint32]$BackupsRetained
)

Set-strictmode -version latest

# Impostazioni di Test
#$MariaBackupFile= $env:ProgramFiles + “\MariaDB 10.2\bin\mariabackup.exe”
#$BackupRoot=”Z:\Backup-MariaDB”
#$MariaDBHost=”.”
#$User=”root”
#$Password=”P@assW0rd!”
#$BackupsRetained = 10

# Inizializzazione Backup
$BackupPath=$BackupRoot + “\” + (Get-Date -format yyyy-MM-dd)
If (Test-Path $BackupPath) {Remove-Item $BackupPath -Force -Recurse}
New-Item -ItemType Directory -Force -Path $BackupPath

# Avvio backup MariaDB
$TargetArg = “–target-dir=” + $BackupPath
$MariaDBHostArg = “–host=” + $MariaDBHost
$UserArg = “–user=” + $User
$PasswordArg = “–password=” + $password

Start-Process -NoNewWindow -Wait -FilePath $MariaBackupFile -ArgumentList “–backup”, $TargetArg, $MariaDBHostArg, $UserArg, $PasswordArg

# Eliminazione backup obsoleti
$BackupDirectories = (Get-ChildItem -Directory $BackupRoot | Sort FullName)
$BackupsCount = ($BackupDirectories | Measure-Object).Count

If ($BackupsCount -gt $BackupsRetained){
For ($i = 1; $i -le $BackupsCount – $BackupsRetained; $i++) {
Remove-Item $BackupDirectories[$i-1].FullName -Force –Recurse
}
}

Lo script è disponibile nel repository GitHub ermannog/PowerShell/Backup-GLPI col nome Backup-MariaDB.ps1.

In alternativa è anche possibile ovviamente eseguire solo il backup del database di GLPI, di seguito uno script Powershell per il backup gestito del singolo database di GLPI con possibilità di gestione del numero minimo di backup da mantenere, lo script prevede l’utilizzo dei parametri per poter essere gestito nell’ambito di un’automazione del backup del server GLPI che prevede più step.

Param(
[string]$MariaBackupFile,
[string]$BackupRoot,
[string]$MariaDBHost,
[string]$GLPIDatabaseName,
[string]$User,
[string]$Password,
[uint32]$BackupsRetained
)

Set-strictmode -version latest

# Impostazioni di Test
#$MariaBackupFile= $env:ProgramFiles + “\MariaDB 10.2\bin\mariabackup.exe”
#$BackupRoot=”Z:\Backup-MariaDB”
#$GLPIDatabaseName=”glpi”
#$User=”root”
#$Password=”P@assW0rd!”
#$BackupsRetained = 10

# Inizializzazione Backup
$BackupPath=$BackupRoot + “\” + (Get-Date -format yyyy-MM-dd)
If (Test-Path $BackupPath) {Remove-Item $BackupPath -Force -Recurse}
New-Item -ItemType Directory -Force -Path $BackupPath

# Avvio backup Database GLPI
$TargetArg = “–target-dir=” + $BackupPath
$MariaDBHostArg = “–host=” + $MariaDBHost
$GLPIDatabaseNameArg = “–databases=” + $GLPIDatabaseName
$UserArg = “–user=” + $User
$PasswordArg = “–password=” + $password

Start-Process -NoNewWindow -Wait -FilePath $MariaBackupFile -ArgumentList “–backup”, $TargetArg, $MariaDBHostArg, $GLPIDatabaseNameArg, $UserArg, $PasswordArg

# Eliminazione backup obsoleti
$BackupDirectories = (Get-ChildItem -Directory $BackupRoot | Sort FullName)
$BackupsCount = ($BackupDirectories | Measure-Object).Count

If ($BackupsCount -gt $BackupsRetained){
For ($i = 1; $i -le $BackupsCount – $BackupsRetained; $i++) {
Remove-Item $BackupDirectories[$i-1].FullName -Force –Recurse
}
}

Lo script è disponibile nel repository GitHub ermannog/PowerShell/Backup-GLPI col nome Backup-DB-GLPI.ps1.

Backup dell’applicazione web GLPI tramite script

Dopo aver eseguito il backup del database di GLPI occorre anche eseguire il backup dell’applicazione web, di seguito uno script Powershell per il backup gestito dell’applicazione GLPI con possibilità di gestione del numero minimo di backup da mantenere, lo script prevede l’utilizzo dei parametri per poter essere gestito nell’ambito di un’automazione del backup del server GLPI che prevede più step.

Param(
[string]$BackupRoot,
[string]$WebApplicationPath,
[string]$WebSiteName,
[uint32]$BackupsRetained
)

Set-strictmode -version latest

# Impostazioni di Test
#$BackupRoot=”Z:\Backup-WebApplication-GLPI”
#$GLPIWebApplicationPath=”C:\inetpub\wwwroot\glpi”

#$WebSiteName=”Default Web Site”
#$BackupsRetained = 10

# Inizializzazione Backup
$BackupPath=$BackupRoot + “\” + (Get-Date -format yyyy-MM-dd)
If (Test-Path $BackupPath) {Remove-Item $BackupPath -Force -Recurse}
New-Item -ItemType Directory -Force -Path $BackupPath

# Arresto Web Site
Stop-WebSite $WebSiteName

# Avvio Backup Web Application GLPI
Copy-Item -Path $WebApplicationPath -Destination $BackupPath –Recurse

# Avvio Web Site
Start-WebSite $WebSiteName

# Eliminazione backup obsoleti
$BackupDirectories = (Get-ChildItem -Directory $BackupRoot | Sort FullName)
$BackupsCount = ($BackupDirectories | Measure-Object).Count

If ($BackupsCount -gt $BackupsRetained){
For ($i = 1; $i -le $BackupsCount – $BackupsRetained; $i++) {
Remove-Item $BackupDirectories[$i-1].FullName -Force –Recurse
}
}

Lo script è disponibile nel repository GitHub ermannog/PowerShell/Backup-GLPI col nome Backup-WebApplication-GLPI.ps1.

Backup del sistema del server GLPI

Oltre al backup del database e dell’applicazione web di GLPI è consigliabile eseguire un backup dell’intero sistema per gestire anche eventuali disaster recovery. Per gestire tali scenari di ripristino è ovviamente consigliabile che il server GLPI sia una macchina virtuale in modo da poter gestire il backup del sistema con vari approcci.

Un primo modo di eseguire il backup dell’intero sistema è quello di utilizzare Windows Backup dedicandogli ad esempio un disco virtuale. Nel la macchina virtuale del server GLPI sia in esecuzione in Hyper-V conviene connettere il disco virtuale su un controller virtuale SCSI in quanto permette di gestire tramite script la connessione e la disconnessione del VHD a caldo per copiare lo stesso su un server di backup.

In alternativa è possibile eseguire il backup dall’Hypervisor e nel caso che quest’ultimo sia Hyper-V tramite Windows Backup o altri software di backup come ad esempio System Center 2016 Data Protection Manager, Veeam Backup & Replication.

Conclusioni

La gestione del backup di GLPI in ambiente Windows non risulta eccessivamente complessa e può essere automatizzata tramite scripts PowerShell, per un recupero dei dati più semplice conviene eseguire il backup con vari livelli di granularità per consentire il ripristino di dati in tabelle, database, applicazione o intero sistema.

Configurazione autenticazione Windows in GLPI v9.1.4

Su ICTPower.it è stato pubblicato l’articolo Configurazione autenticazione Windows in GLPI v9.1.4 che ho scritto a due mani con Roberto Massa, nell’articolo vengono descritti i passi per configurare l’autenticazione basata su LDAP in GLPI 9.1.4 installato in IIS con PHP 7.1.1 in ambiente Windows Server 2012 R2.

Per un articolo sull’installazione di GLPI (Gestion Libre de Parc Informatique) si veda il nostro articolo Installazione GLPI v9.1.4 in ambiente Windows.

Installazione GLPI v9.1.4 in ambiente Windows

Su ICTPower.it è stato pubblicato l’articolo Installazione GLPI v9.1.4 in ambiente Windows che ho scritto a due mani con Roberto Massa. GLPI (Gestion Libre de Parc Informatique) un progetto Open Source gratuito distribuito sotto licenza GPL che consente oltre all’IT Asset Management, l’issue tracking system, fornisce una soluzione di service desk solution anche la gestione di tasks amministrativi e finanziari inerenti al parco IT quali contratti di assistenza/manutenzione, garanzie, documenti di acquisto e stato dell’asset.

Nell’articolo viene descritta l’installazione di GPLI su IIS 8.5 in Windows Server 2012 R2 utilizzando Microsoft Web Platform Installer 5.0 per installare la versione PHP 7.1.1 a 64 Bit, mentre per quanto riguarda il DBMS sarà installato MariaDB 10.2.6 a 64 Bit.

Configurazione autenticazione Windows in GLPI v9.1.4

GLPI (Gestion Libre de Parc Informatique) è un progetto Open Source gratuito distribuito sotto licenza GPL che consente l’IT Asset Management, l’issue tracking system, fornisce una soluzione di service desk solution e consente la gestione di tasks amministrativi e finanziari. Tali attività normalmente vengono assegnate a persone differenti e nel caso in cui in cui GLPI venga utilizzato in un’infrastruttura basata su Active Directory diventa comodo integrare l’autenticazione Windows con l’autenticazione GLPI sfruttando LDAP (Lightweight Directory Access Protocol).

Di seguito verranno descritti i passi per configurare l’autenticazione basata su LDAP in GLPI 9.1.4 installato in IIS con PHP 7.1.1 in ambiente Windows Server 2012 R2.

Configurazione di IIS e PHP per il supporto dell’autenticazione Windows

Perché IIS possa gestire l’autenticazione Windows utilizzando gli utenti Active Directory il server che ospita IIS dovrà essere membro del dominio come indicato nella KB258063 Internet Explorer May Prompt You for a Password:

Windows Integrated authentication, also known as Windows NT Challenge/Response, must be enabled in the Web site properties in IIS. Anonymous authentication is attempted first, followed by Windows Integrated authentication, Digest authentication (if applicable), and finally Basic (clear text) authentication.

Both the client and the Web server must be either in the same Microsoft Windows NT-based or Microsoft Windows 2000-based domain or in trusted Windows NT-based or Windows 2000-based domains in which the user’s account can be granted permissions to resources on the IIS-based computer.

Inoltre sul server che ospita IIS dovrà essere installata la componete Windows Authentication di IIS:

Per abilitare in PHP l’autenticazione integrata di Windows abilitare l’estensione LDAP modificando il file %ProgramFiles%\PHP\v7.1\php.ini aggiungendo nella sezione [ExtensionList] la seguente impostazione:

extension=php_ldap.dll

Terminata l’editazione del file %ProgramFiles%\PHP\v7.1\php.ini riavviare IIS tramite lnternet Information Services (IIS) Manager (InetMgr.exe) o mediante il seguente comando:

iisreset /restart

Per ulteriori informazioni si veda IIS Configuration Reference – Windows Authentication.

Configurazione di GLPI per l’utilizzo di LDAP

Per default GLPI ha già delle configurazioni per la gestione degli utenti provenienti da una fonte esterna come LDAP, in particolare le opzioni Aggiunge automaticamente utenti da fonte esterna di autenticazione e Aggiungi un utente senza diritti da LDAP consentono di aggiungere automaticamente gli utenti al primo accesso con profilo di sicurezza Self-Service, se si preferisce gestire l’accesso manualmente impostare a No tali opzioni.

La prima operazione da eseguire è configurare GLPI per l’utilizzo di LDAP sul proprio dominio per la ricerca di utenti e gruppi nella Organizational Unit che conterrà gli utenti che dovranno accedere a GLPI, configurando come segue:

Nel campo Server è possibile specificare il dominio che verrà così risolto con gli indirizzi IP dei vari Domain Controller, mentre nel campo Filtro Connessione specificare la query LDAP che consente di ricercare gli utenti non disabilitati:

(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

Nel campo BaseDN specificare il path LDAP della Organizational Unit che conterrà gli utenti che dovranno accedere a GLPI, mentre nei campi RootDN e Password specificare le credenziali di un utente a minimi privilegi che verrà utilizzato per eseguire le query LDAP su Active Direcory. Infine nel campo Nome utente specificare l’attributo utente che idendifica il logon name ovvero samaccountname (per default GLPI propone uid).

Inoltre configurare la ricerca dei gruppi come segue

Nel campo Tipo ricerca specificare che la ricerca verrà eseguita nei gruppi, mentre nel campo Filtro di ricerca nei gruppi specificare la seguente query LDAP:

(&(objectCategory=group))

Terminata la configurazione delle impostazioni relative alla Directory LDAP eseguire un test di connessione verso Active Directory con l’opzione Test. Per ulteriori informazioni si veda GLPI, LDAP and Active Directory.

Configurare gli utenti Active Directory in GLPI

Per accedere a GLPI tramite gli utenti Active Directory specificando le autorizzazioni necessari occorre prima aggiungerli tramite il Menù Amministrazione – Utenti selezionando l’opzione Collegamento a directory LDAP e quindi l’opzione Importa nuovi utenti:

In alternativa è possibile far sì che GLPI aggiunga automaticamente gli utenti al primo accesso con profilo di sicurezza Self-Service, come visto precedente.

Abilitazione autenticazione Windows in IIS

Di seguito si ipotizzerà che GLPI è stato installato in una Virtual Directory denominata glpi su cui occorrerà disabilitare l’autenticazione anonima e abitare l’autenticazione Windows tramite lnternet Information Services (IIS) Manager (InetMgr.exe)

Per testare che l’autenticazione Windows funziona correttamente e che l’utente viene trasmesso dal browser al server è possibile creare nella Virtual Directory un file php denominato ad esempio TestAuth.php con seguente contenuto:

<?php

echo “REMOTE_USER = ” . $_SERVER [“REMOTE_USER”] . “<BR />”;

echo “HTTP_AUTH_USER = ” . $_SERVER [“HTTP_AUTH_USER”] . “<BR />”;

echo “PHP_AUTH_USER = ” . $_SERVER [“PHP_AUTH_USER”] . “<BR />”;

echo “USERNAME = ” . $_SERVER [“USERNAME”] . “<BR />”;

echo “REDIRECT_REMOTE_USER” . $_SERVER [“REDIRECT_REMOTE_USER”];

?>

Configurazione GLPI per l’autenticazione automatica

Per far sì che l’utente con cui ci si è autenticati sul client venga passato al server su cui è installato GLPI è necessario configurare come segue l’invio dell’autenticazione nella richiesta http mediante il menù Configurazione – Altri metodi di autenticazione:

In Campo per la registrazione dell’accesso nella richiesta HTTP impostare REMOTE_USER. Dopo aver eseguito tali impostazioni gli utenti a cui è stato consenti l’accesso a GLPI in modo manuale o automatico avranno accesso senza più dover inserire le credenziali, in ogni caso sarà ancora possibile accedere alla pagina di login mediante il seguente url:

http://hostname.domain.ext/glpi/index.php?noAUTO=1

Per maggiori informazioni si veda Automatic authentication

Conclusioni

La gestione dell’autenticazione integrata di Windows in GLPI prevede la configurazione della stessa nei vari componenti quindi in IIS, PHP e GLPI, ma consente un’interessante integrazione con l’infrastruttura Active Directory. Nel caso in cui si riscontrino malfunzionamenti nell’accesso a GLPI mediante l’autenticazione integrata di Windows si provi a chiudere tutte le sessioni dei browser e quindi a tentare nuovamente l’accesso, inoltre per identificare eventuali problemi si provi ad esaminare il file \files\_log\php-errors.log.

Installazione GLPI v9.1.4 in ambiente Windows

Quando le infrastrutture informatiche assumo dimensioni consistenti o la cui complessità richiede più persone per la gestione comincia a farsi sentire l’esigenza di adottare un software per la gestione del parco informatico e del servizio di helpdesk. Un altro scenario in cui tali tipi di software sono particolarmente utili è quello in cui un fornitore di servizi informatici si trovi a dove gestire più piccole aziende con la necessità di offrire un servizio di helpdesk e anche la gestione del parco macchine e apparecchiature dei propri clienti.

Vari sono i software che propongono soluzioni in tal senso, ma molti di essi affrontano il problema tramite scansione della rete per rilevare in modo automatizzato gli asset informatici presenti, sebbene questo tipo di approccio sia in determinati scenari molto pratico in altri può non essere applicabile o comodo. Infatti in scenari in cui non tutti gli asset possono essere gestiti tramite rilevazione automatica in rete in quanto non raggiungibili o privi di interfaccia di rete o ancora perché è necessario poterli gestire prima che vengano inseriti in rete (si pensi ad esempio ad asset mantenuti in magazzino come ricambi).

Inoltre molto spesso la necessità della gestione del parco informatico parte da specifiche necessità di carattere più amministrativo che tecnico, come la gestione dei rinnovi delle garanzie, la gestione del mazzino, la gestione della posizione fisica degli asset o il computo dell’impatto dell’helpdesk declinato in base alle richieste o per tipologia di asset su cui sono avvenuti gli interventi.

Un prodotto che risponde a queste esigenze è GLPI (Gestion Libre de Parc Informatique), un progetto Open Source gratuito distribuito sotto licenza GPL che consente l’IT Asset Management, l’issue tracking system, fornisce una soluzione di service desk solution e consente la gestione di tasks amministrativi e finanziari, di seguito alcune interessanti caratteristiche:

  • Gestione di Multi-entities (multi-park, multi-structure)
  • Gestione Multiutenza
  • Sistema di autenticazione multipla (locale, LDAP, AD, Pop/Imap, CAS, x509…) e multi servers
  • Multilingual (al momento sono disponibili 45 localizzazioni)
  • Gestione di Permissions e profili

Per l’elenco completo delle caratteristiche si veda FEATURES LIST OF GLPI.

GLPI è un applicazione web-based nata nel 2003 come progetto Community based a cui chiunque può contribuire tramite lo lo sviluppo di moduli su GitHub – GLPI o mediante lo sviluppo di GLPi plugins, il progetto ha subito negli anni varie evoluzioni sino ad arrivare all’attuale versione 9.1.4, di seguito la time line dell’evoluzione del progetto tratto dalla pagina Wikipedia dedicata al progetto.

Prerequisiti d’installazione di GPLI

Come riportato nel seguente Prerequisites for installing GLPI l’applicazione web ha i seguenti prerequisiti software:

  • Un Web Server con supporto PHP (Apache 2 o superiore oppure Microsoft IIS)
  • PHP 5.3 o superiore (si veda il seguente Web Server Prerequisites per le estensioni PHP richieste
  • Database MySQL 4.23, ma è raccomando utilizzare per ragioni di performance la versione 5.5.x, in alternativa è possibile utilizzare il DBMS MariaDB (a riguardo si veda Database server Prerequisites)

Dal momento che come viene riportato in Database server Prerequisites, GLPI utilizza l’engine MyISAM non è possibile al momento utilizzare SQL Server come DBMS in quanto quest’ultimo utilizza un engine derivato da quello di Sybase SQL Server frutto di una partnership tra Microsoft e Sybase del 1987 (per maggiori dettagli sulla storia dell’evoluzione dell’engine di SQL Server si veda SQL MythBusters – “SQL Server is really a Sybase product not a Microsoft one.”).

Scenario d’installazione

Nel seguente articolo GPLI sarà installato su IIS 8.5 in Windows Server 2012 R2 utilizzando Microsoft Web Platform Installer 5.0 per installare la versione PHP 7.1.1 a 64 Bit, mentre per quanto riguarda il DBMS sarà installato MariaDB 10.2.6 a 64 Bit.

La scelta di non utilizzare MySQL ma MariaDB che è uno dei fork del primo, nato il 29 ottobre 2009, e scritto dagli sviluppatori originali di MySQL dipende dal fatto di utilizzare un DBMS totalmente OpenSource dal momento che andrà a supporto di un applicativo Open Source qual è GLPI. MySQL infatti dalla versione 5.5 include estensioni non Open Source disponibili solo nella versione Enterprise, tale evoluzione di MySQL è frutto dell’acquisizione di Sun Microsystems da parte di Oracle avvenuta il 27 gennaio 2010 (per quanto riguarda l’evoluzione di MySQL e la nascita MariaDBa riguardo si vedano le relative pagine su Wikipedia). In conseguenza al fatto che MySQL non è più un DBMS solo Open Source (esistono infatti due versioni quella Open Source denominata MySQL Community Server e quella proprietaria denominata Enterprise Server) ha portato vari progetti Open Source a sostituire MySQL con MariaDB, come ad esempio Wikipedia (a riguardo si veda Wikipedia Adopts MariaDB) e alcune distribuzioni Linux quali ad esempio Fedora e RedHat (a riguardo si veda Oracle who? Fedora & openSUSE will replace MySQL with MariaDB).

Per quanto riguarda i prerequisiti hardware dovranno essere rispettati almeno quelli consigliati per il sistema operativo (a riguardo si veda System Requirements and Installation Information for Windows Server 2012 R2):

  • Processore almeno 1.4 GHz a 64-bit
  • 1024 MB di Ram e nel caso una macchina virtuale in Hyper-V è preferibile utilizzare la memoria statica
  • 32 GB per il volume dedicato al sistema operativo, è preferibile installare GLPI e il relativo database su un volume dedicato

Dal momento che i vari pacchetti d’installazione di PHP e MariaDB sono disponibili solo in lingua Inglese è consigliabile installare anche il sistema operativo in lingua Inglese configurando le impostazioni del formato data e ora per la nazionalità italiana. Al termine dell’installazione aggiornare il sistema installando gli aggiornamenti necessari.

Per la documentazione relativa a GLPI si faccia riferimento al Wiki del progetto, mentre per ulteriori informazioni sui prerequisiti si veda https://github.com/glpi-project/glpi mentre per informazioni sui changelog delle varie versioni si veda https://github.com/glpi-project/glpi/releases

Installazione del ruolo Web Server (IIS)

Installare il ruolo Web Server (IIS) con le impostazioni di default, al termine dell’installazione aggiornare il sistema installando gli eventuali aggiornamenti necessari.

Come indicato nei seguenti non è possibile (fatta esclusione per alcune cartelle) spostare IIS su un volume dedicato in quanto IIS è un componente di sistema:

Installazione PHP

Il modo più pratico per installare PHP è quello di utilizzare il Microsoft Web Platform Installer, attualmente è disponibile la versione 5.0 che va installata prima di poter avviare l’installazione del PHP. Per avviare l’installazione del Microsoft Web Platform Installer occorre prima disabilitare la funzionalità IE Enhanced security Configuration per il gruppo Administrators (terminata l’installazione sarà possibile riabilitare tale funzionalità).

Una volta installato il Microsoft Web Platform Installer sarà possibile installare PHP selezionando PHP 7.1.1 a 64 Bit tra i prodotti del gruppo Frameworks

L’installazione comporterà l’installazione di ulteriori package e features:

Per verificare la funzionalità di PHP è possibile creare un file phpinfo.php in %SystemDrive%\inetpub\wwwroot col seguente contenuto:

<?php phpinfo(); ?>

Aprire poi la pagina http://localhost/phpinfo.php che mostrerà le informazioni di configurazione tra cui il percorso del file ini di configurazione per default in (%ProgramFiles%\PHP\v7.1\php.ini)

Abilitazione dell’estensione PHP FileInfo e verifica delle configurazioni nel php.ini

Modificare il file %ProgramFiles%\PHP\v7.1\php.ini aggiungendo nella sezione [ExtensionList] le seguenti impostazioni:

extension=php_fileinfo.dll

zend_extension=php_opcache.dll

Come indicato nel seguente Web Server Prerequisites verificare che le seguenti variabili nel file %ProgramFiles%\PHP\v7.1\php.ini rispettino le seguenti indicazioni (le impostazioni predefinite dovrebbero essere coerenti a tali indicazioni):

memory_limit = 64M ; // Minimum Value
file_uploads = on ;
max_execution_time = 600 ; // Optional but not mandatory
register_globals = off ; // Optional but not mandatory
magic_quotes_sybase = off ;
session.auto_start = off ;
session.use_trans_sid = 0 ; // Optional but not mandatory

La versione 9.14 di GLPI richiede l’estensione apcu-bc che richiede a sua volta l’estensione APCu che può essere scaricata al seguente https://pecl.php.net/package/APCu, al momento l’ultima versione è la 5.1.8 ed occorre scaricare la release per PHP 7.1 Non Thread Safe (NTS) x64 dal momento che il PHP in IIS è configurato con l’opzione Thread Safety a disabled come suggerito in http://windows.php.net/:

“If you are using PHP as FastCGI with IIS you should use the Non-Thread Safe (NTS) versions of PHP.”

Dopo aver scaricato l’estensione apcu, scompattarla e copiare la libreria php_apcu.dll in %ProgramFiles%\PHP\v7.1\ext e quindi modificare il file %ProgramFiles%\PHP\v7.1\php.ini aggiungendo nella sezione [ExtensionList] la seguente impostazione:

extension=php_apcu.dll

Dopo aver attivato l’estensione APCu è possibile scaricare l’estensione apcu-bc al seguente https://pecl.php.net/package/apcu_bc, al momento l’ultima versione è la 1.0.3 ed occorre scaricare la release per PHP 7.1 Non Thread Safe (NTS) x64 perché come visto precedentemente IIS è configurato con l’opzione Thread Safety a disabled.

Dopo aver scaricato l’estensione apcu-bc scompattarla e copiare la libreria php_apc.dll in %ProgramFiles%\PHP\v7.1\ext e quindi modificare il file %ProgramFiles%\PHP\v7.1\php.ini aggiungendo nella sezione [ExtensionList] la seguente impostazione:

extension=php_apc.dll

Nel caso dopo l’installazione di GLPI si notino malfunzionamenti nella visualizzazione delle pagine è possibile disabilitare le estensioni APCu e apcu-bc commentando l’attivazione delle estensioni nel file php.ini dal momento che è un requisito opzionale

Per ulteriori informazioni sulle estensoni PHP in Windows si veda Installation of extensions on Windows.

Terminata l’editazione del file %ProgramFiles%\PHP\v7.1\php.ini riavviare IIS tramite lnternet Information Services (IIS) Manager (InetMgr.exe) o mediante il seguente comando:

iisreset /restart

Installazione del DBMS MariaDB

Scaricare dal sito http://mariadb.org (la pagina di download è disponibile al seguente https://downloads.mariadb.org/) il package per piattaforma Windows a 64 Bit dell’ultima versione di MariaDB, al momento l’ultima versione stabile è la 10.2.6 (mariadb-10.2.6-winx64.msi), come riportato la versione 10.2 ha oltre alla features di MySQL 5.6 & 5.7 anche nuove funzionalità. Sebbene esista anche un package ZIP (mariadb-10.2.6-winx64.zip) questo è indicato solo per semplici scenari di test, ma è meno preformante dell’installazione come servizio e meno sicuro, a riguardo si veda Installing MariaDB Windows ZIP Packages.

Avviare l’installazione di MariaDB 10.2.26 64 Bit eseguendo il package msi con le seguenti impostazioni (per la documentazione sulla procedura d’installazione si veda Installing MariaDB MSI Packages on Windows).

Accettare l’installazione delle funzionalità di default.

Selezionare Database instance per impostare il path dei file di dati tramite il pulsante Browse, nello scenario di esempio saranno memorizzati in S:\MariaDB 10.2\data.

Impostare la password dell’utente root che dovrà essere utilizzato solo motivi amministrativi

Impostare le proprietà dell’istanza configurandola come servizio come raccomandato e se non è necessario connettersi remotamente al DBMS disabilitare l’opzione di networking (come nel caso dello scenario di esempio in quanto GLPI sarà installato sullo stesso server), in questo caso per la connessione al database sarà utilizzato named pipes. GLPI per ora non utilizza InnoDB a riguardo si vedano Closing ticket time issue #1150 e Change storage engine to innodb #644.

Per informazioni sulle impostazioni si vedano le seguenti note riportate in Installing MariaDB MSI Packages on Windows:

Per modificare successivamente le impostazioni è possibili intervenire successivamente editando il file my.ini memorizzato nella directory d’installazione (nello scenario di esempio S:\MariaDB 10.2\data), per informazioni sulla configurazione tramite file d’impostazioni si vedano:

Per connettersi all’istanza di MariaDB è possibile utilizzare HeidiSQL, installato per default insieme a MariaDB, configurando una connessione localmente tramite named pipe, come nello scenario d’esempio.

Installazione dell’applicazione GLPI

Scaricare l’ultima versione di GLPI dal sito http://glpi-project.org (la pagina di download è disponibile al seguente http://glpi-project.org/spip.php?article41), al momento l’ultima versione è la 9.1.4 (glpi-9.1.4.tgz). Estrarre il package tgz, ad esempio tramite 7Zip, e copiare la cartella glpi in locale, nello scenario di esempio verrà copiata in S:\glpi-9.1.4\glpi. Quindi creare in IIS all’interno del Default Web Site una Virtual Directory che punta alla cartella gpli in modo da mantenere l’applicazione su un volume diverso da quello del sistema operativo.

Aprire il sito http://localhost/glpi per eseguire la prima parte dell’installazione di GLPI che creerà il database.

Selezionare la localizzazione italiana.

Accettare la licenza (GNU General Public License Versione 2).

Selezionare Installa.

Controllare che tutte le verifiche siano eseguite con successo.

Inserire le credenziali per accedere all’istanza locale (.)del DBMS MariaDB tramite named pipe con l’account root per creare il database.

Creare un nuovo database, nello scenario di esempio sarà denominato glpi.

Attendere la creazione del database.

Attendere il termine dell’istallazione.

Terminata l’installazione sarà possibile accedere a GLPI tramite la pagina http://localhost/glpi autenticandosi con l’account di amministrazione di default (username=glpi e password=glpi) per iniziare a configurare l’applicazione.

Per ragioni di sicurezza cancellare il seguente file: install/install.php (nello scenario di esempio S:\glpi\install\install.php) e modificare le password degli utenti predefiniti glpi, post-only, tech e normal.

Creazione di un utente per l’accesso al database di GLPI da parte dell’applicazione

Creare tramite HeidiSQL un utente che verrà poi utilizzato dall’applicazione GLPI per accesso locale con soli i privilegi sul database di GLPI, nello scenario di esempio il database è denominato glpi mentre l’utente sarà denominato UsrGLPI.

Impostare le credenziali dell’utente per l’accesso al database GLPI tramite la seguente procedura:

  • Arrestare IIS tramite Internet Information Services (IIS) Manager o mediante il comando: iisreset /stop
  • Impostare le credenziali dell’utente nel file config\config_db.php (nello scenario di esempio S:\glpi-9.1.4\glpi\config\config_db.php)
  • Avviare IIS tramite Internet Information Services (IIS) Manager o mediante il comando: iisreset /start

Gestione dei Plugin

Come anticipato all’inizio dell’articolo le funzionalità di GLPI possono essere estese tramite plugins sviluppati da volontari che contribuiscono al progetto, per il catalogo dei plugins disponibili si veda la Plugin directory, mentre se si intende cimentarsi nello sviluppo di un plugin è possibile trovare informazioni utili ai seguenti:

Per quanto riguarda l’installazione di un plugin l’operazione è descritta al seguente Plugin installation Procedure in GLPI e consiste nelle seguenti operazioni:

  1. Eseguire un backup del database (tramite il menù Amministrazione\Manutenzione)
  2. Scaricare il plugin dalla directory GLPI plugins verificando che sia compatibili con la versione di GLPI installata
  3. Estrarre il file .tar.gz in una sottocartella col nome del plugin nella directory glpi/plugins dell’applicazione, per estrarre i file .tar.gz è possibile utilizzare ad esempio 7Zip (il nome della cartella del plugin deve rispettare quello presente all’interno del file .tar.gz altrimenti il plugin potrebbe non funzionare correttamente)
  4. Eseguire il Log off ed un successivo Log in
  5. Installare il plugin tramite il menu Configurazione\Plugins selezinando Installa in corrispondenza del plugin
  6. Attivare il plugin selezinando Attiva in corrispondenza del plugin

Alcuni plugin necessitano di modifiche al database, che verranno eseguite al primo avvio dello stesso, oppure possono essere necessarie configurazion, in questo caso vi saranno avvisi nella pagina dell’installazione/attivazione del plugin.

L’aggiornamento di un plugin è sostanzialmente simile all’installazione, ma con le precauzioni necessarie per consentire un eventuale ripristino alla versione precedente, di seguito le operazioni da eseguire:

  1. Eseguire un backup del database (tramite il menù Amministrazione\Manutenzione) o delle tabelle create dal plugin che dovrebbero essere specificate nel file readme nella directori del plugin syessto (glpi/plugins/<pluginName>)
  2. Rinominare la directory del plugin per esempio da glpi/plugins/<pluginName> a glpi/plugins/<pluginName-Versione>
  3. Procedere nuovamente all’installazione del plugin come visto precedentemente

Se si intende invece rimuovere un plugin è possibile procedere come segue:

  1. Eseguire un backup del database (tramite il menù Amministrazione\Manutenzione)
  2. Accedere all’elenco dei plugin installati tramite il menu Configurazione\PluginsS
  3. Selezionare Disinstalla in corrispondenza del plugin da rimuovere

Si noti che ovviamente l’utilizzo dei plugin comporterà il controllo che questi siano supportati anche nelle future release di GLPI quanto verranno rilasciate e si deciderà di installarle.

Conclusioni

Grazie al Microsoft Web Platform Installer 5.0 che permette di installare velocemente applicazioni PHP in Windows l’installazione di GLPI si risolve velocemente. Con Windows Server 2016 e la sua integrazione nativa con i container Docker tale installazione potrà ulteriormente essere semplificata. Su GitHub sono infatti presenti vari progetti con la finalità di realizzare container Docker per GLPI, si veda ad esempio driket/docker-glpi – Deploy GLPI (any version) with Docker.

Software per il wipe di dischi

Talvolta capita di dover eseguire il wipe dei dischi di un computer ad esempio nel caso venga dismesso, venduto o donato. Per eseguire tale operazione è possibile utilizzare vari software tra cui CBL Data Shredder un Disk Wipe Tool Free che consente di eliminare i dati da un disco mediante vari metodi:

  • Custom Hard Drive Erase Method
    The CBL Data Shredder program enables you to define your own method to erase a drive. The default setting is to wipe the drive once with a bit pattern of “00”. This is the simplest and quickest way to clear a drive. You may select a different bit pattern to use, and the number of times the drive should be cleared with this bit pattern. Increasing the number of passes the CBL Data Shredder program should make over the drive will increase the security of the erase process. However, it is unlikely that any custom method would be regarded as sufficient to sanitize the drive. The primary purpose is to provide a simple and fast clearing solution. For utility, options exist to write the sector number in each sector of the drive, and a custom signature at the end of each sector.
  • United States Department of Defense Standard 5220.22-M
    The National Industrial Security Program Operating Manual, issued to the US Army, Navy, Air Force, and other US government agencies specifies standards for the clearing, and sanitizing of data classified confidential, secret, and top secret.
    Under this standard, data may be cleared by writing any bit pattern to the entire disk once. Disks are sanitized by writing a different bit pattern to the disk on each of three passes
    . This is how the CBL Data Shredder program implements this standard.
    Drives containing top secret data are not permitted to be sanitized in this manner; they must be physically destroyed, or the disks subjected to degaussing, scrambling completely the magnetic patterns used to store data on the disk, rendering the drive itself inoperable.
  • Germany BSI Verschlusssachen-IT-Richtlinien (VSITR) Standard
    The German Federal Office for IT Security released the VSITR standard, which wipes the drive with seven passes. For the first 6 passes, each wipe reverses the bit pattern of previous wipe. Flipping the bits in this way is designed to destabilize the remnants of data that may exist on the edges of the track of the disk to which the data is written. The final pass amplifies this effect, overwriting the entire disk with “01010101”.
    This is widely considered to be a secure method of erasing data.
  • Bruce Schneier’s Algorithm
    Internationally-renowned security technologist and author Bruce Schneier recommends wiping a drive seven times. The first pass overwrites the drive with the bit pattern “00”, the second with “11”, and the next five with a randomly generated bit pattern.
    This has a similar effect to the VSITR standard, but the random nature of the bit patterns written in the final five passes make it very difficult for an attacker to determine how the overwriting may have affected remnants of data around the edges of the track on the disk, or at bit transitions on the disk.
    Although probably a more secure method of erasing data than VSITR, the time required to create random bit patterns makes this a significantly slower method.
  • Peter Gutmann’s Algorithm
    Peter Gutmann, is an Honorary Researcher at the Department of Computer Science, University of Auckland, specializing in the design and analysis of cryptographic security architectures. His research into secure deletion of data from magnetic media (such as hard disk drives) is the definitive work on the subject.
    The CBL Data Shredder program implements the method he devised based on his findings, erasing data with several series of passes to minimize data remnants on drives using any current techniques of encoding data on the disk.
    His algorithm makes 35 overwrite passes in total, and is considered the state-of-the-art method for data destruction. The cost of this security, of course, is time; wiping a drive using Peter Gutmann’s algorithm will take more than 7 times longer than wiping the same drive with Bruce Schneier’s algorithm, and will likely be more than 15 times longer than suing the US Department of Defense’s standard.
  • Royal Canadian Mounted Police DSX Method
    The Royal Canadian Mounted Police Technical Security Branch makes a tool, DSX, available to departments of the Canadian government intended to prevent information disclosure when serviceable hard disk media is removed from service.
    The CBL Data Shredder program emulates DSX’s method of clearing data, writing the bit pattern “00” on the first pass, “11” on the second, and a text pattern consisting of the software version number, and the data and time the erase took place.
    Wiping a drive with DSX alone however is not an approved method by the Canadian government for sanitizing classified information
    . Current standards require the wiping of the unit with DSX standard, followed by the physical destruction of the media.

CBL Data Shredder è disponibile per Windows XP/Vista/7/8/10 inoltre esistono anche 2 packages DOS uno per creare floppy avviabile e una per creare un CD-ROM ISO avviabile.

Ho avuto modo di testare CBL la versione avviabile da CD di Data Shredder anche su computer molto datati ed ha funzionato senza problemi.

Configurazione dei Tunnel Port Ranges in Forefront TMG

Un tunnel port range definisce una o più porte TCP su cui Forefront TMG può inviare una richiesta Hypertext Transfer Protocol (HTTP) da un Web proxy client verso un Web server, quando la connessione viene stabilita i pacchetti inviati dal client verso il Web Server sulla porta specificata nella richiesta CONNECT vengono inviati direttamente al the Web Server senza che il Web proxy esegua la deep inspection.

Per impostazione predefinita in TMG le porte TCP definite come tunnel port ranges sono la 443 per l’HTTP over SSL e la 563 per il Network News Transfer Protocol over SSL (NNTPS). Dal momento che il traffico inviato in una connessione stabilita su una porta inclusa in un tunnel port range bypassa le Server policy rules di TMG e la Web proxy inspection solo sulle porte TCP per cui è richiesta la funzionalità di tunneling dovrebbe essere configurato un tunnel port range.

Ci sono però casi in cui è necessario configurare porte TCP diverse dalla 443 e 563 per l’utilizzo del tunnelling, un caso ad esempio è l’implementazione della Carta d’Identità Elettronica che prevede i seguenti prerequisti descritti nell’Allegato 2 della Circolare n. 4 del 2017 dei Servizi Demografici del Ministero dell’Interno:

Disponibilità di un collegamento ad Internet che consenta di raggiungere i seguenti indirizzi:

  • http://www.cartaidentita.interno.gov.it (porta 80),
  • https://cieonlíne.interno.gov.it (porta 443),
  • https://agendacie.interno.gov.it (porta 443),
  • https://dvra.cie.interno.gov.it (porte 8442 e 8443)
  • https://dvraweb.cie.interno.gov.it (porte 80 e 443)

Si consiglia di assicurare un throughput di accesso ad internet di almeno 1 Mbps di tipo simmetrico per ogni postazione di lavoro installata. Per Comuni di grandi dimensioni si consiglia l’adozione di un sistema QoS (quality of service) che consenta di servire con priorità le connessioni verso i servizi CIE indicati.

È possibile utilizzare un proxy purché venga garantito l’accesso agli indirizzi di cui sopra. Nel caso in cui si utilizzi un proxy, la raggiungibilità del servizio dvra.cie.interno.gov.it sulle porte 8442 e 8443 deve avvenire senza la necessità di autenticazione dell’utente. Si consiglia, laddove possibile, di creare regole che consentano la raggiungibilità dei servizi di emissione CIE dalle postazioni senza bisogno per l’operatore Comunale di immettere credenziali di accesso al proxy.

In particolare sulle porte 8442 e 8443 dovrà essere configurato un tunnel port range o in caso contrario la connessione verso dvra.cie.interno.gov.it non verrà eseguita e nel log di connessione di TMG verrà registrato il seguente errore:

Stato: 12204 La porta Secure Sockets Layer (SSL) specificata non è consentita. Forefront TMG non è configurato per accettare richieste SSL da questa porta. La maggior parte dei browser Web utilizzano la porta 443 per le richieste SSL.
Richiesta: dvra.cie.interno.gov.it:8442
Informazioni filtro: Req ID: 0ab9dd41; Compression: client=No, server=No, compress rate=0% decompress rate=0%
Protocollo: SSL-tunnel

Per configurare un tunnel port range in TMG occorre utilizzare Visual Basic Scripting Edition (VBScript) per accedere al modello COM esposto da ForeFront TMG, per informazioni si veda Managing Tunnel Port Ranges.

Di seguito alcuni semplici script per la gestione dei tunnel port ranges.

Visualizzazione dei tunnel port ranges definiti:

Dim root
Set root = CreateObject(“FPC.Root”)
Dim array
Set array = root.GetContainingArray()
Dim tpRanges
Set tpRanges = array.ArrayPolicy.WebProxy.TunnelPortRanges

Dim tpRange
For Each tpRange In tpRanges
WScript.Echo tpRange.Name & “: ” & tpRange.TunnelLowPort & “-” & tpRange.TunnelHighPort
Next

Creazione di un tunnel port range per le porte 8442 e 8443

Dim root
Set root = CreateObject(“FPC.Root”)
Dim array
Set array = root.GetContainingArray()
Dim tpRanges
Set tpRanges = array.ArrayPolicy.WebProxy.TunnelPortRanges

Set newRange = tpRanges.AddRange(“CIE”, 8442, 8443)
tpRanges.Save True
WScript.Echo “Done!”

Eliminazione del tunnel port range per le porte 8442 e 8443

Dim root
Set root = CreateObject(“FPC.Root”)
Dim array
Set array = root.GetContainingArray()
Dim tpRanges
Set tpRanges = array.ArrayPolicy.WebProxy.TunnelPortRanges

tpRanges.Remove(“CIE”)
tpRanges.Save True
WScript.Echo “Done!”

 

Si noti che nell’istruzione che salva il tunnel port range (tpRanges.Save) è stato specificato a True il parametro fResetRequiredServices per riavviare il servizio Firewall, in caso contrario la configurazione del tunnel port range non verrà utilizzata.

Per ulteriori informazioni si veda anche la KB283284 Blank page or page cannot be displayed when you view SSL sites through ISA Server or Microsoft Forefront Threat Management Gateway, Medium Business Edition e il post Configuring custom SSL ports on ISA/TMG server for forward prox.

Attivazione client workgroup tramite KMS

Nel caso in cui occorre attivare tramite un server KMS (Key Management Service) le licenze di client in Workgroup è possibile utilizzare i seguenti metodi.

Metodo 1: Configurare sul client KMS il server KMS a cui fare riferimento

Prima di procede all’impostazione del server KMS assicurarsi che l’ora del client KMS sia la stessa del server KMS, in caso contrario intervenire tramite il comando w32tm (a riguardo si veda la KB974998 When trying to activate you get 0xC004F074 with description “The Key Management Server (KMS) is unavailable”), inoltre assicurarsi che il firewall sul client consenta si connettersi al server KMS sulla porta TCP a cui quest’ultimo risponde (per default TCP 1688).

Per impostare il server KMS è possibile eseguire in un prompt dei comandi aperto con privilegi amministrativi uno dei seguenti comandi:

  • Assegnazione del server KMS utilizzando il FQDN:
    cscript slmgr.vbs /skms <KMS_FQDN>:<port>
  • Assegnazione del server utilizzando l’indirizzo IP versione 4:
    cscript slmgr.vbs /skms <IPv4Address><:port>
  • Assegnazione del server utilizzando l’indirizzo IP versione 6:
    cscript slmgr.vbs /skms <IPv6Address><:port>
  • Assegnazione del server utilizzando il nome NETBIOS:
    cscript slmgr.vbs /skms <NetbiosName><:port>

Dopo aver impostato il server KMS è possibile provare ad avviare l’attivazione eseguendo in un prompt dei comandi aperto con privilegi amministrativi il seguente comando:

cscript slmgr.vbs /ato

A riguardo si veda il post KMS in a workgroup environment

Metodo 2: Configurare sul client KMS la risoluzione dell’SRV Resource Record relativo al server KMS

Per la rilevazione del server KMS sulla rete è possibile configurare un record DNS di tipo A per server KMS e quindi un record di tipo SRV con le seguenti impostazioni:

  • Service: _VLMCS
  • Protocol: _TCP
  • Port number: Porta TCP configurata sul serve KMS (defaul 1688)
  • Host offering the service: Fully qualified domain name (FQDN) del server KMS

A riguardo si veda il post Configure KMS in an untrusted forest or workgroup.

Il client KMS dovrà essere in grado di eseguire query sul domino DNS su cui sono stati configurati i record DNS relativi al server DNS. Affinché ciò sia possibile sarà necessario configurare correttamente le impostazioni di rete del client KMS tramite DHCP o mediante impostazione manuale.

Se si configurano le impostazioni di rete del client KMS tramite DHCP occorre verificare che vengano passate le seguenti impostazioni

  • Server DNS (Opzione DHCP 006)
  • Nome di dominio DNS (Opazione DHCP 015)

Analogamente se le impostazioni di rete sono configurate manualmente occorre impostare i server DNS e il suffisso DNS:

SMB v2 Client Cache e ritardo in visualizzazione file nuovi

Quando i clinet utilizzano SMB v2 per accedere alle share può verificarsi il problema che creando un file nuovo questo non sia immediatamente visibile neppure dopo l’esecuzione di un refresh, ma occorrono circa 10 secondi affinché diventi visibile. Il motivo è dovuto al fatto che nell’implementazione dell’SMB (Server Message Block) 2.0 introdotto in Windows Vista e Windows Server 2008 il componente SMB Redirector che implemente la parte client della funzionalità file-and-print sharing utilizza un meccanismo di caching per aumentare l’efficienza come descritto in SMB2 Client Redirector Caches Explained:

“With the release of SMB 2.0 in Windows Vista® and Windows Server 2008, three file metadata caches were implemented to speed up the return of the most recently accessed file and directory information. These caches also reduce the number of interactions a client requires with a SMB server for common file browsing operations. This has value in a scenario such as a client browsing a network file directory while connected via a low bandwidth or high latency connection.”

E’ possibile gestire il comportamento del caching impostando, se necessario, tre time out mediante modifica al registro di sistema, sempre come riportato in SMB2 Client Redirector Caches Explained:

“For common network file browsing scenarios, the default values are sufficient and should not be altered. Changing these cache timeout values can have significant performance implications to many network file scenarios. As each of these caches is designed to reduce the number of SMB server requests, they are important not only in client response time evaluation, but also in overall SMB server scalability and performance.”

“If changes are deemed necessary to these default values, they may be altered by creating these client registry keys and changing to the appropriate setting. Each cache is independent and controls specific information. It is not necessary to change all of the caches if a change to any one of the caches is necessary, as they operate independently and control different redirector optimizations.The default values were selected for the broadest range of SMB file access scenarios. However these default settings may not be appropriate for all network application usage.”

Nel caso si verifichi il problema della mancata visualizzazione dei file appena creati è possibile provare a disabilitare (o ridurre) la cache relativa all’enumerazione delle directory gestita dalla chiave di registro DirectoryCacheLifetime: () per defaulttale cache è inmpostata a10 secondi

“This is a cache of recent directory enumerations performed by the client. Subsequent enumeration requests made by client applications as well as metadata queries for files in the directory can be satisfied from the cache. The client also uses the directory cache to determine the presence or absence of a file in the directory and uses that information to prevent clients from repeatedly attempting to open files which are known not to exist on the server. This cache is likely to affect distributed applications running on multiple computers accessing a set of files on a server – where the applications use an out of band mechanism to signal each other about modification/addition/deletion of files on the server.”

Per disabilitare tale cache creare, se non esistente, il valore DirectoryCacheLifetime di tipo DWORD e impostarlo al valore 0 nella chiave di registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters quindi ravviare il computer.

L’impostazione a 0 del valore DirectoryCacheLifetime può essere necessario per risolvere un’issue in Windows 7 descritto nel post Mount Point Folder May Disappear in Share Folder in Windows 7 pubblicato sul TechNet Forum Windows 7 Support Team:

SYMPTOM
You have a share folder which contains volume mount points in Windows Server 2008 or Windows Server 2008 R2. Sometimes the mount point folders appear as “hidden” when you navigate through the content of the folders and clicks “back” in Windows Explorer in Windows 7.

CAUSE
This is a known issue of SMBv2.

Resolution
As a Workaround, you can create the following Registry key on the client machine:
Navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
Create DWORD DirectoryCacheLifetime and set it to 0

Per ulteriori informazioni si veda anche Performance tuning for file servers in cui a riguardo di tale chiave di registro viene riportato quanto segue:

DirectoryCacheLifetime

HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DirectoryCacheLifetime

Applies to Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Vista, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2, and Windows Server 2008

The default is 10 seconds. This is the directory cache timeout.

Note

This parameter controls caching of directory metadata in the absence of directory leases.

HackedEmailsChecker 1.0

Dal momento che i data leak relativi al furto di credenziali utilizzati per accedere a servizi online sono sempre più frequenti diventa importante controllare periodicamente se il proprio indirizzo mail o gli indirizzi mail della propria azienda non sia presente in un più archivi di indirizzi mail compromesse (al riguardo di veda il mio precedente post Anti Public Data Leak).

Per questo motivo ho deciso di sviluppare il tool HackedEmailsChecker che consente di verificare  se un indirizzo mail o gli indirizzi mail presenti in un file di testo non siano presenti nei seguenti database resi disponibili dai seguenti siti e interrogabili tramite API:

La release 1.0 del tool EmailHackedChecker è disponibile su GitHub nel seguente repository ermannog/HackedEmailsChecker e al momento offre le seguenti funzionalità:

  • Interrogazione degli archivi online di data leak Have i been pwned? e Has my email been hacked? specificando un indirizzo email singolo o un file di testo contenente più indirizzi email uno per riga
  • Memorizzazione in una cache le risposte restituite dagli archivi online di data leak specificando per quante ore ritenere valide tali risposte. La cache permette le seguenti eseguire più volte le interrogazioni evitando di richiedere agli archivi online informazioni su indirizzi email analizzati precedentemente se non sono trascorse almeno un certo numero di ore dall’ultima interrogazione che per default sono 48 ore. Questo permette di rianalizzare velocemente le interrogazioni già eseguite ed evitare di dover rieseguire interrogazioni già eseguite nel caso in cui si verifichino problemi durante le interrogazioni (l’archivio online Has my email been hacked?, ad esempio, consente al momento 300 interrogazioni al giorno dallo stesso IP)
  • Specificare un tempo di delay che deve intercorrere tra due interrogazioni successive verso lo stesso archivio online di data leak che per default è 2000 millisecondi, ciò permette di evitare errori di indisponibilità degli archivi online di data leak durante interrogazioni massive tramite file di testo (l’archivio online Have i been pwned?, ad esempio, dai test che ho eseguito può restituire errori se le interrogazioni sono eseguite con intervalli temporali inferiori ai 2000 millisecondi.

image

HackedEmailsChecker è sviluppato in VB.NET tramite Visual Studio 2017 e richiede il .NET Framework versione 4.5.2.

Se siete interessati alle funzionalità offerte da questo tool tenete d’occhio il repository GitHub ermannog/HackedEmailsChecker in quanto, tempo permettendo, ho intenzione di aggiungere alcune altre funzionalità.

Ovviamente se avete suggerimenti, bug da segnalare o altri archivi online free di data leak interrogabili tramite API e che vi piacerebbe fossero integrati in HackedEmailsChecker contattatemi.