giovedì 18 aprile 2024

Steganografia

La steganografia, dal greco "scrittura nascosta", è l'arte di occultare un messaggio segreto all'interno di un oggetto di uso comune, come un'immagine, un file audio o un testo. Il messaggio nascosto non dovrebbe essere rilevabile da un osservatore casuale, rendendo la steganografia un utile strumento per la comunicazione segreta.

Storia della Steganografia

Le tecniche steganografiche esistono da secoli. Un esempio famoso è quello di Demarato di Sparta, che nel 440 a.C. raschiò un messaggio su una tavoletta di legno, la coprì di cera e scrisse un messaggio innocuo sulla superficie.  Nell'antichità le tavolette di cera erano normalmente usate per scrivere testi provvisori, pertanto non destava sospetti. Il messaggio originale poteva essere letto sciogliendo la cera.

Nel corso della storia, la steganografia è stata utilizzata per vari scopi, tra cui:
  • Trasmettere messaggi segreti in tempo di guerra
  • Evadere la censura
  • Proteggere la proprietà intellettuale

Con l'avvento della tecnologia digitale, sono emerse nuove tecniche steganografiche. I messaggi segreti possono essere nascosti all'interno di immagini digitali, file audio, video e persino nella struttura di un sito web.


Come funziona la steganografia

Esistono due metodi principali per nascondere un messaggio segreto utilizzando la steganografia:

Sostituzione LSB. Questo metodo modifica i bit meno significativi (LSB, 
Last Significant Bit) dei pixel di un'immagine digitale. I LSB sono la parte meno visibile di un pixel e possono essere modificati senza che l'immagine risulti alterata in modo significativo.

Steganografia basata su stego. Questo metodo nasconde il messaggio segreto all'interno di un file di copertura che ha già una certa ridondanza, come un file audio o un'immagine compressa. Il messaggio viene nascosto in modo da non influire sulla qualità del file di copertura.


Applicazioni della steganografia

La steganografia ha una vasta gamma di potenziali applicazioni, tra cui:
  • Protezione della proprietà intellettuale. I marcatori digitali steganografici possono essere utilizzati per identificare la proprietà di contenuti digitali come immagini, musica e video.
  • Autenticazione dei dati. La steganografia può essere utilizzata per incorporare firme digitali nei dati, aiutando a verificarne l'autenticità e prevenire la manomissione.
  • Comunicazione segreta. La steganografia può essere utilizzata per trasmettere messaggi segreti online, rendendo più difficile per gli intercettatori il rilevamento e la decodifica del messaggio.

Limiti della steganografia

Nonostante i suoi potenziali benefici, la steganografia presenta anche diversi limiti:
  • Capacità di embedding. La quantità di dati segreti che possono essere nascosti in un file di copertura è limitata.
  • Robustezza. I messaggi steganografici possono essere vulnerabili a tecniche di rilevamento e rimozione.
  • Problemi legali. L'uso della steganografia può essere illegale in alcuni casi, ad esempio se viene utilizzato per trasmettere materiale illegale.

Nascondere dati in un'immagine utilizzando la steganografia basata su LSB

Esistono diversi metodi per nascondere dati in un'immagine, ma uno dei più comuni e semplici è la steganografia basata sui bit meno significativi (LSB).

I passaggi principale nella steganografia LSB sono i seguenti:
  • Selezione dell'immagine di copertura. Selezionare un'immagine digitale come JPEG o PNG come "contenitore" per il messaggio segreto. Le immagini con più colori e dettagli sono generalmente più adatte, in quanto offrono più bit da modificare senza un degradamento visibile dell'immagine. Ad esempio in un'immagine di un paesaggio "monotono" di un deserto e cielo azzurro una piccola modifica potrebbe saltare subito all'occhio.
  • Conversione dei dati in bit. Il messaggio segreto, che può essere un testo, un'immagine o un altro file, deve essere convertito in una sequenza di bit.
  • Sostituzione dei bit LSB. I bit meno significativi (LSB) dei pixel dell'immagine di copertura vengono sostituiti con i bit del messaggio segreto. I LSB hanno un impatto minimo sulla qualità visibile dell'immagine, quindi la modifica dovrebbe essere impercettibile all'occhio umano.
  • Salvataggio dell'immagine steganografata. L'immagine con i bit LSB modificati dovrà essere salvata come nuovo file. Questa immagine conterrà sia il contenuto originale che il messaggio segreto nascosto al suo interno.


Esempio pratico:

Immaginiamo di voler nascondere un messaggio di testo semplice in un'immagine JPEG. Ogni pixel di un'immagine JPEG è codificato con 24 bit, che rappresentano milioni di sfumature di colore. Modificando solo l'LSB di ogni pixel, possiamo nascondere un bit di messaggio segreto in ogni pixel.

Con un'immagine di 1000x1000 pixel, avremmo 1.000.000 pixel, che ci permettono di nascondere un messaggio di testo di circa 100.000 caratteri. L'immagine modificata sembrerà identica all'originale all'occhio nudo, ma conterrà il messaggio segreto codificato nei suoi bit meno significativi.


Strumenti per la steganografia LSB:

Esistono diversi software gratuiti e a pagamento che possono essere utilizzati per implementare la steganografia LSB. Alcuni strumenti popolari includono:
  • StegHide: Un programma open-source multipiattaforma per nascondere dati in immagini, audio e file video.
  • OutGuess: Un altro strumento open-source per la steganografia LSB, con supporto per immagini, audio e testo.
  • HideMyPic: Un programma Windows facile da usare per nascondere immagini, testo e file all'interno di immagini di copertura.
  • OpenStego: un programma open-source dotato di GUI e molto semplice da utilizzare. 


Vantaggi e svantaggi della steganografia LSB:

Vantaggi:
  • Semplice da implementare
  • Funziona con vari tipi di immagini
  • Può nascondere una discreta quantità di dati
Svantaggi:
  • Fragile alle tecniche di rilevamento steganografico
  • Non offre una forte sicurezza
  • La modifica dei bit LSB può ridurre leggermente la qualità dell'immagine

La steganografia LSB è un metodo semplice ed efficace per nascondere dati in immagini digitali. Tuttavia, è importante tenere conto dei suoi limiti quando si utilizza per la comunicazione sensibile. Per una maggiore sicurezza, è consigliabile combinare la steganografia con altre tecniche di crittografia.

Oltre alla steganografia LSB, esistono altri metodi più sofisticati per nascondere dati in immagini, come la steganografia basata su stego e la steganografia basata sui domini di trasformazione. Questi metodi offrono livelli di sicurezza più elevati, ma possono essere più complessi da implementare e richiedono maggiori risorse computazionali.

La scelta del metodo steganografico più adatto dipende dalle specifiche esigenze e dai requisiti di sicurezza.


StegHide. Nascondere del testo in un'immagine

La versione più recente si StegHide può essere scaricata da https://steghide.sourceforge.net/download.php.
Steghide - Download
FIG 1 - Steghide - Download

StegHide va utilizzato da riga di comando.

Comandi
Il primo argomento da passare a StegHide deve sempre essere uno di questi comandi
  • embed - Incorpora i dati segreti in un file di copertura, creando così un file stego.
  • extract - Estrae i dati segreti da un file stego.
  • info - Visualizza informazioni su un file di copertura o stego.
  • encinfo - Visualizza un elenco di algoritmi e modalità di crittografia utilizzabili. Non sono richiesti argomenti.
  • version - Visualizza informazioni brevi sulla versione. Non sono richiesti argomenti.
  • license - Visualizza la licenza di steghide. Non sono richiesti argomenti.
  • help - Visualizza una schermata di aiuto. Non sono richiesti argomenti.

 

EMBED
È necessario utilizzare il comando embed se si desidera incorporare dati segreti in un cover file. I seguenti argomenti possono essere utilizzati con il comando embed:
  • -ef nome_file_da_incorporare - Specifica il file che verrà incorporato (il file che contiene il messaggio segreto). Si noti che steghide incorpora il nome del file originale nel file stego. Quando si estraggono i dati il comportamento predefinito è quello di salvare il file incorporato nella directory corrente con il suo nome originale. Se questo argomento viene omesso o il nome del file è -, steghide leggerà i dati segreti da input standard.
  • -cf nome_cover_file - Specifica il cover file che verrà utilizzato per incorporare i dati. Il file deve essere in uno dei seguenti formati: AU, BMP, JPEG o WAV. Il formato del file viene rilevato automaticamente in base alle informazioni di intestazione (l'estensione non è rilevante). Se questo argomento viene omesso o il nome del file è -, steghide leggerà il cover file dallo standard input.
  • -sf nome_stegofile - Specifica il nome del file stego che verrà creato. Se questo argomento viene omesso le modifiche per incorporare i dati segreti verranno apportate direttamente al cover file specificato (senza salvarlo con un nuovo nome).
  • -e  algo [ mode ] | mode [ algo ] - Specifica i parametri di crittografia. Questa opzione deve essere seguita da una o due stringhe che che identificano un algoritmo e/o una modalità di crittografia. È possibile ottenere i nomi di tutti gli algoritmi disponibili e delle modalità  supportate con il comando encinfo. La crittografia predefinita è rijndael-128 (AES) in modalità cbc. Se non si desidera utilizzare alcuna crittografia, utilizzare -e none.
  • -z livello_compressione - Specifica il livello di compressione. Il livello di compressione può essere un numero qualsiasi compreso tra 1...9, dove 1 significa migliore velocità e 9 significa migliore compressione.
  • -Z - Non comprime i dati segreti prima di incorporarli.
  • -K - Non incorpora un checksum CRC32. È possibile utilizzare questa opzione se i dati segreti contengono già un qualche tipo di checksum o se non si vogliono incorporare i 32 bit extra necessari per il checksum.
  • -N - Non incorpora il nome del file segreto. Se si usa questa opzione, l'estrattore dovrà specificare un nome di file per indicare a a steghide dove scrivere i dati incorporati.

EXTRACT
Il comando extract va utilizzato per estrarre il messaggio incorporato all'interno del cover file. Con questo comando si possono usare i seguenti argomenti:
  • -sf nome_filename - Specificare il file stego (il file che contiene i dati incorporati). Se questo argomento viene omesso o il nome del file è -, steghide leggerà un file stego dall'input standard.
  • -xf nome_file - Crea un file con il nome nome_file e vi scrive i dati incorporati nel file stego. Questa opzione sostituisce il nome del file incorporato nel file stego. Se questo argomento viene omesso, i dati incorporati verranno salvati nella directory corrente con il nome originale.

ALTRE OPZIONI
Le seguenti opzioni possono essere utilizzate con tutti i comandi 
  • -p - Usa la stringa che segue questo argomento come passphrase. Se la passphrase contiene spazi bianchi, è necessario racchiuderla tra virgolette, ad esempio: -p "una passphrase molto lunga".
  • -v - Visualizza informazioni dettagliate sullo stato del processo di incorporazione o estrazione.
  • -q - Sopprime i messaggi informativi.
  • -f - Sovrascrive sempre i file esistenti.


Esempi
steghide embed -cf immagine.jpg -ef testo.txt
Eseguendo questo comando verrà richiesto di inserire (e confermare) una passphrase che sarà necessaria per recuperare il testo segreto. Il comando incorpora il file testo.txt all'interno del file immagine.jpg. Dato che non viene specificato un nuovo file per l'output, viene modificato direttamente il file immagine.jpg.

Per estrarre il contenuto nascosto dal file, il comando sarà
steghide extract -sf immagine.jpg
Anche in questo caso verrà richiesto di digitare la passphrase (la stessa utilizzata nel comando embed).
Steghide
FIG 2 - Steghide







martedì 16 aprile 2024

Windows: Modificare la password dal terminale

Utilizzando il comando di Windows net user, è possibile modificare le password degli account utente del pc dalla finestra del terminale (o prompt dei comandi) senza dover navigare attraverso i menu di impostazione.
Prima di procedere con la modifica della password è necessario tener presente alcuni dettagli:
  • Per utilizzare il comando net user, è necessario accedere con un account amministratore;
  • Il comando può essere utilizzato per modificare la password del proprio account e/o di quella degli altri utenti;
  • Non è necessario conoscere la vecchia password dell'account;
  • Il comando net user consente solo di modificare la password dell'account locale.

L'utilizzo del comando è molto semplice: dalla finestra terminale avviata come amministratore (o dal prompt dei comandi sempre eseguito come amministratore) basta digitare il comando
net user USERNAME PASSWORD
seguito da invio, ovviamente sostituendo USERNAME con il nome dell’utente e PASSWORD con la nuova password da utilizzare. Se il nome utente contiene uno spazio è necessario racchiuderlo tra virgolette.
Ad esempio, per cambiare la password dell'utente "Giovanni Lubrano" (con uno spazio nel nome) con la nuova password "password456" il comando da eseguire sarà
net user "Giovanni Lubrano" password456

Cambio password con net user
FIG 1 - Cambio password con net user

Per evitare di visualizzare la password in chiaro all'interno del terminale è possibile utilizzare il comando
net user USERNAME *
In questo modo, il sistema richiederà di inserire e confermare (reinserire) la nuova password senza visualizzare sullo schermo i caratteri digitati. Utile nel caso in cui ci si trova in un luogo pubblico affollato o con persone alle nostre spalle.

Per visualizzare l'elenco di tutti gli account locali configurati nel sistema è possibile eseguire il comando
net user

Net user
FIG 2 - Net user





mercoledì 10 aprile 2024

Windows Server 2022: Impostare la complessità della password tramite Password Settings Object

All'interno di un dominio è sempre consigliabile stabilire una policy aziendale per forzare l'utilizzo di password complesse al fine di prevenire (o quantomeno rendere difficili) accessi non autorizzati.
Già a partire da Windows Server 2012 è possibile controllare la complessità delle password attraverso l'utilizzo dei criteri granulari per le password (FINE-GRAINED password policy) e la creazione di Password Settings Object (PSO). I requisiti minimi per procedere sono i seguenti:
  • Sia presente almeno un Domain Controller con Windows Server 2012 o superiore;
  • Il livello di funzionalità della foresta sia impostata almeno su Windows Server 2008.
In questi articoli stiamo utilizzando Windows Server 2022 con il livello di funzionalità della foresta di Windows Server 2016 pertanto i requisiti sono ampiamente rispettati. Solo i membri del gruppo Domain Admin possono creare PSO.


Creazione di Password Settings Object (PSO) tramite il Centro di amministrazione di Active Directory

Da Server Manager cliccare sul menu Strumenti e selezionare Centro di amministrazione di Active Directory. In alternativa premere la combinazione di tasti WIN+R, digitare dsac.exe e premere invio.
Server Manager
FIG 1 - Server Manager

Selezionare il proprio dominio (nel nostro caso mycompany.local) quindi aprire il container System con un doppio click.
Centro di amministrazione di Active Directory, container System
FIG 2 - Centro di amministrazione di Active Directory, container System

Cliccare due volte su Password Settings container.
Centro di amministrazione di Active Directory, Password Settings Container
FIG 3 - Centro di amministrazione di Active Directory, Password Settings Container

Sul pannello Attività (sul lato destro della finestra) cliccare su Nuovo quindi Impostazioni password.
Impostazioni password
FIG 4 - Impostazioni password

Nella finestra Crea Impostazioni password ci sono diverse opzioni da settare per la creazione del PSO.
  • All'interno della casella Nome specificare il nome da assegnare all'oggetto. E' consigliabile utilizzare un nome significativo che consenta di capire il suo scopo. Ad es. dovendo creare un PSO per gli amministratori di dominio un nome significativo potrebbe essere PSO_Domain_Admin.
  • All'interno del campo Precedenza inserire il valore 1. Il valore di tale campo ci permette di specificare la precedenza dell'oggetto: nel caso in cui su un account utente o su un gruppo siano definite più PSO, quello con il valore più basso avrà la precedenza.
  • Il campo Lunghezza minima password consente di specificare il numero minimo di caratteri da utilizzare per la password. Impostare tale campo a 12 caratteri.
  • Imponi cronologia delle password. Tale campo, se selezionato, permette di impedire che l'utente riutilizzi una password già utilizzata in precedenza. Il valore di default di tale campo è 24 il che comporta che l'utente può reinserire una password già utilizzata in passato solo dopo 24 cambi password. Lasciare l'opzione attiva con il valore di default.
  • Imponi validità minima password. Permette di specificare dopo quanto tempo dal cambio password l'utente potrà nuovamente modificarla. Il valore di default è 1 quindi quando l'utente cambia la password dovrà aspettare il giorno successivo (24h) per poterla cambiare nuovamente.
  • Imponi validità massima password. Il valore di default è 42. Modificare tale valore in 30. Il campo permette di specificare dopo quanti giorni l'utente è obbligato a cambiare password.
  • Attivare l'opzione Applica criteri di blocco account. Nel campo Numero di tentativi di accesso non riusciti consentiti inserire 5. Nel campo Ripristina conteggio tentativi di accesso non riusciti lasciare il valore 30. Lasciare attiva l'opzione Per un periodo di tempo pari a (minuti) valorizzata a 30. Con tali opzioni, dopo 5 tentativi di accesso non riusciti, l'account verrà bloccato per 30 minuti. Il contatore degli accessi non riusciti verrà resettato dopo 30 accessi riusciti consecutivi.
Cliccare su OK per completare la creazione del PSO con le impostazioni settate.
Creazione PSO
FIG 5 - Creazione PSO


Creazione di Password Settings Object (PSO) tramite PowerShell

Per eseguire la stessa operazione tramite PowerShell è necessario utilizzare il cmdlet New-ADFineGrainedPasswordPolicy.

Sintassi
New-ADFineGrainedPasswordPolicy
   [-WhatIf]
   [-Confirm]
   [-AuthType <ADAuthType>]
   [-ComplexityEnabled <Boolean>]
   [-Credential <PSCredential>]
   [-Description <String>]
   [-DisplayName <String>]
   [-Instance <ADFineGrainedPasswordPolicy>]
   [-LockoutDuration <TimeSpan>]
   [-LockoutObservationWindow <TimeSpan>]
   [-LockoutThreshold <Int32>]
   [-MaxPasswordAge <TimeSpan>]
   [-MinPasswordAge <TimeSpan>]
   [-MinPasswordLength <Int32>]
   [-Name] <String>
   [-OtherAttributes <Hashtable>]
   [-PassThru]
   [-PasswordHistoryCount <Int32>]
   [-Precedence] <Int32>
   [-ProtectedFromAccidentalDeletion <Boolean>]
   [-ReversibleEncryptionEnabled <Boolean>]
   [-Server <String>]
   [<CommonParameters>]
   
Parametri
-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1

-ComplexityEnabled
Specifica se la complessità della password è abilitata per il criterio della password. Se abilitata, la password deve contenere tre dei seguenti quattro tipi di caratteri:
  • Caratteri maiuscoli (A, B, C, D, E, ...)
  • Caratteri minuscoli (a, b, c, d, e, ...)
  • Numeri (0, 1, 2, 3, ...)
  • Caratteri speciali (#, $, *, %, ...)
I valori accettati per questo parametro sono:
  • $False o 0. Disabilita la complessità della password.
  • $True o 1. Abilita la complessità della password.


-Confirm
Se specificato, tale parametro mostra la richiesta di conferma prima di eseguire il cmdlet.


-Credential
Specifica un'account utente che ha i permessi necessari per eseguire l'operazione. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.


-Description
Specifica una descrizione dell'oggetto. Tale parametro imposta il valore della proprietà Description dell'oggetto.


-DisplayName
Specifica il display name dell'oggetto: imposta la proprietà DisplayName dell'oggetto.


-Instance
Specifica un'istanza di un oggetto fine-grained password policy da usare come modello per un nuovo oggetto fine-grained password policy.

È possibile utilizzare un'istanza di un oggetto fine-grained password policy esistente come modello o costruire un nuovo oggetto fine-grained password policy utilizzando la riga di comando di Windows PowerShell o uno script.

Metodo 1: utilizzare un oggetto fine-grained password policy esistente come modello per un nuovo oggetto. Per recuperare un'istanza di un oggetto fine-grained password policy esistente, utilizzare un cmdlet come Get-ADFineGrainedPasswordPolicy. Quindi fornire questo oggetto al parametro Instance del cmdlet New-ADFineGrainedPasswordPolicy. È possibile sovrascrivere i valori delle proprietà del nuovo oggetto impostando i parametri appropriati.

Metodo 2: creare un nuovo oggetto ADFineGrainedPasswordPolicy e impostare i valori delle proprietà utilizzando l'interfaccia della riga di comando di Windows PowerShell. Passare quindi questo oggetto al parametro Instance del cmdlet New-ADFineGrainedPasswordPolicy per creare il nuovo oggetto Active Directory fine-grained password policy.


-LockoutDuration
Specifica il periodo di tempo in cui un account viene bloccato dopo che il numero di tentativi di accesso falliti supera la soglia di blocco. Non è possibile accedere a un account bloccato finché il periodo di tempo di durata del blocco non è scaduto. Se si imposta il valore a 0, l'account deve essere sbloccato manualmente dall'amministratore. Questo parametro imposta la proprietà lockoutDuration di un oggetto criterio password. Il nome di visualizzazione LDAP (ldapDisplayName) di questa proprietà è msDS-LockoutDuration.

La durata del blocco deve essere maggiore o uguale al tempo di osservazione del blocco per un criterio di password. Utilizzare il parametro LockOutObservationWindow per impostare il tempo di osservazione del blocco.

Specificare l'intervallo di tempo della durata del blocco nel formato seguente:
D.H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti  (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo (da 0 a 9999999)


-LockoutObservationWindow
Specifica l'intervallo di tempo massimo tra due tentativi di accesso non riusciti prima che il numero di tentativi di accesso non riusciti venga riportato a 0. Un account viene bloccato quando il numero di tentativi di accesso non riusciti supera la soglia di blocco del criterio della password. Questo parametro imposta la proprietà lockoutObservationWindow di un oggetto criterio password. Il nome di visualizzazione LDAP (ldapDisplayName) di questa proprietà è msDS-lockoutObservationWindow.

La finestra di osservazione del blocco deve essere minore o uguale alla durata del blocco di un criterio di password. Utilizzare il parametro LockoutDuration per impostare la durata del blocco.

Specificare l'intervallo di tempo nel formato seguente:
D:H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo (da 0 a 9999999)

Nota: I valori possono essere compresi tra 0:0:0:0.0 e 10675199:02:48:05.4775807.


-LockoutThreshold
Specifica il numero di tentativi di accesso non riusciti consentiti prima che un account venga bloccato. Questo numero aumenta quando l'intervallo tra i tentativi di accesso non riusciti è inferiore al tempo specificato da LockoutObservationWindow. Questo parametro imposta la proprietà LockoutThreshold di un criterio di password.

-MaxPasswordAge
Specifica il periodo di tempo massimo in cui è possibile mantenere la stessa password. Dopo questo periodo di tempo, la password scade e bisogna crearne una nuova.
Questo parametro imposta la proprietà maxPasswordAge di un criterio di password. Il nome di visualizzazione LDAP (ldapDisplayName) per questa proprietà è maxPwdAge.

Specificare l'intervallo di tempo nel formato seguente:
D.H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo  (da 0 a 9999999)

Nota: I valori di tempo devono essere compresi tra  0 e 10675199:02:48:05.4775807.


-MinPasswordAge
Specifica il periodo di tempo minimo prima di poter modificare una password.
Questo parametro imposta la proprietà minPasswordAge di un criterio di password. Il nome di visualizzazione LDAP (ldapDisplayName) per questa proprietà è minPwdAge.
Specificare l'intervallo di tempo nel seguente formato:
D.H:M:S.F

dove:
D = Giorni (da 0 a 10675199)
H = Ore (da 0 a 23)
M = Minuti (da 0 a 59)
S = Secondi (da 0 a 59)
F = Frazioni di secondo (da 0 a 9999999)

Nota: I valori dell'ora devono essere compresi tra i seguenti 0 e 10675199:02:48:05.


-MinPasswordLength
Specifica il numero minimo di caratteri che una password deve contenere. Questo parametro imposta la proprietà MinPasswordLength del criterio della password.


-Name
Specifica il nome dell'oggetto. Questo parametro imposta la proprietà Name dell'oggetto Active Directory. Il nome di visualizzazione LDAP (ldapDisplayName) di questa proprietà è name.


-OtherAttributes
Specifica i valori degli attributi dell'oggetto per gli attributi non rappresentati dai parametri del cmdlet. Con questo parametro è possibile impostare uno o più parametri contemporaneamente. Se un attributo ha più di un valore, è possibile assegnare più valori. Per identificare un attributo, specificare il nome LDAPDisplayName (ldapDisplayName) definito per esso nello schema di Active Directory.
Sintassi:
Per specificare un singolo valore per un attributo:
OtherAttributes @{'AttributeLDAPDisplayName'=value}
Per specificare più valori per un attributo
OtherAttributes @{'AttributeLDAPDisplayName'=value1,value2,...}
È possibile specificare i valori per più di un attributo usando il punto e virgola per separare gli attributi. La sintassi seguente mostra come impostare i valori di più attributi:
OtherAttributes @{'Attribute1LDAPDisplayName'=value; 'Attribute2LDAPDisplayName'=value1,value2;...}


-PassThru
Restituisce un oggetto che rappresenta l'elemento con cui si sta lavorando. Per impostazione predefinita, questo cmdlet non genera alcun output.


-PasswordHistoryCount
Specifica il numero di password precedenti da salvare. Un utente non può riutilizzare una password nell'elenco delle password salvate. Questo parametro imposta la proprietà PasswordHistoryCount per un criterio di password.


-Precedence
Specifica un valore che definisce la precedenza di un criterio fine-grained password rispetto agli altri criteri. Questo parametro imposta la proprietà Precedence per una fine-grained password policy.Il nome di visualizzazione LDAP (ldapDisplayName) per questa proprietà è msDS-PasswordSettingsPrecedence.

Questo valore determina quale criterio di password utilizzare quando a un utente o a un gruppo si applicano più criteri di password. In caso di conflitto, il criterio di password che ha il valore più basso della proprietà Precedence ha la priorità più alta. Ad esempio, se PasswordPolicy1 ha un valore di Precedenza pari a 200 e PasswordPolicy2 ha un valore di Precedenza pari a 100, viene utilizzato PasswordPolicy2.

In genere, i valori di precedenza dei criteri di password sono assegnati in multipli di 10 o 100, per facilitare l'aggiunta di criteri in un secondo momento. Ad esempio, se si impostano i valori di precedenza iniziali per i criteri a 100 e 200, è possibile aggiungere un altro criterio con valore di precedenza pari a 150.

Se il parametro Precedence specificato è già assegnato a un altro oggetto criterio password, il cmdlet restituisce un errore di terminazione.


-ProtectedFromAccidentalDeletion
Specifica se impedire l'eliminazione dell'oggetto. Quando questa proprietà è impostata su true, non è possibile eliminare l'oggetto corrispondente senza modificare il valore della proprietà. I valori accettabili per questo parametro sono:
  • $False o 0
  • $True o 1


-ReversibleEncryptionEnabled
Specifica se la directory deve memorizzare le password utilizzando la crittografia reversibile. Questo parametro imposta la proprietà ReversibleEncryption per un criterio di password. I valori possibili sono:
  • $False o 0
  • $True o 1


-Server
Specifica l'istanza di Active Directory Domain Services a cui connettersi, fornendo uno dei seguenti valori per un nome di dominio o un server di directory corrispondente. Il servizio può essere uno dei seguenti: Active Directory Lightweight Domain Services, Active Directory Domain Services o Active Directory snapshot instance.


-WhatIf
Mostra cosa accadrebbe se il cmdlet venisse eseguito. Il cmdlet non viene eseguito.


Avviare Windows PowerShell (amministratore) ed eseguire il seguente comando per creare e impostare il Password Settings Object (PSO) allo stesso modo di come fatto tramite GUI
New-ADFineGrainedPasswordPolicy -ComplexityEnabled:$true -LockoutDuration:"00:30:00" -LockoutObservationWindow:"00:30:00" -LockoutThreshold:"5" -MaxPasswordAge:"30.00:00:00" -MinPasswordAge:"1.00:00:00" -MinPasswordLength:"12" -Name:"PSO_Domain_Admin" -PasswordHistoryCount:"24" -Precedence:"1" -ReversibleEncryptionEnabled:$false -Server:"Server1DC.mycompany.local"

domenica 31 marzo 2024

Windows: Visualizzare la versione del runtime Java da riga di comando

In ambiente Windows, Windows 11 o antecedenti, esistono diversi metodi per identificare la versione di Java installata sul sistema. Tuttavia, se sono installate più versioni di Java, potrebbe non essere così immediato individuare quale versione venga utilizzata dal sistema per l'esecuzione di un file Jar. 

Il modo più affidabile per determinare la versione di Java in uso è tramite il Terminale (in Windows 10 e antecedenti, il Prompt dei comandi o Windows PowerShell ):
  • Premere la combinazione di tasti Win+X per accedere al menu Power User e selezionare Terminale dall'elenco (Prompt dei comandi o Windows PowerShell in Windows 10).
  • Nella finestra Terminale digitare il comando java -version e premere Invio.  La versione di Java verrà mostrata direttamente sotto il comando inserito.
    Versione Java
    FIG 1 - Versione Java

martedì 26 marzo 2024

Windows Server 2022: Installare software tramite i Criteri di gruppo (GPO)

L'area delle impostazioni del software nei Criteri di gruppo consente di installare il software sui sistemi a cui è applicata la GPO. Si può utilizzare per distribuire il software a un particolare gruppo di sistemi o a tutti i sistemi nel loro complesso.

Per l'installazione di un software tramite GPO bisogna predisporre il file di installazione in formato MSI (Microsoft Installer). Non tutti i software sono disponibili in tale formato e non tutti gli MSI supportano l'installazione tramite GPO. Il software che si desidera distribuire, inoltre, deve trovarsi in una cartella condivisa accessibile ai sistemi a cui si desidera distribuirlo. I sistemi devono avere il permesso di accedere alla cartella condivisa e al suo contenuto.

Di seguito verrà mostrato come installare, tramite i criteri di gruppo, il browser Google Chrome su tutti i computer appartenenti al dominio.


Predisposizione file di installazione del software

Come cartella condivisa utilizzeremo la cartella \\SERVERDC2\Cartella condivisa creata nell'articolo Windows Server 2022: Mappare automaticamente una cartella condivisa.
Prima di proseguire, dobbiamo rendere la cartella accessibile dai computer del dominio. Cliccare, con il tasto destro del mouse, sulla cartella condivisa e selezionare Proprietà dal menu contestuale. Selezionare la scheda Condivisione quindi cliccare sul pulsante Condivisione avanzata.
Cartella condivisa, Condivisione avanzata
FIG 1 - Cartella condivisa, Condivisione avanzata

Cliccare sul pulsante Autorizzazioni.
Cartella condivisa, Autorizzazioni
FIG 2 - Cartella condivisa, Autorizzazioni

Selezionare il gruppo Domain Users e assicurarsi che sia impostato il controllo completo quindi cliccare sul pulsante Aggiungi.
Aggiungi autorizzazioni per cartella condivisa
FIG 3 - Aggiungi autorizzazioni per cartella condivisa

Nella casella Immettere i nomi degli oggetti da selezionare, digitare Computer del dominio quindi cliccare su Controlla nomi per verificare che il nome immesso sia corretto e successivamente su OK.
Seleziona Utenti, Computer, Account servizio o Gruppi
FIG 4 - Seleziona Utenti, Computer, Account servizio o Gruppi

Selezionare il gruppo Computer del dominio e fornire anche a tale gruppo il controllo completo ponendo il flag sulla relativa casella. Cliccare su OK quindi nuovamente su OK nelle finestra Condivisione avanzata e in fine su Chiudi.
Computer del dominio, controllo completo su cartella condivisa
FIG 5 - Computer del dominio, controllo completo su cartella condivisa


Scaricare la versione di Chrome per le aziende dal link https://cloud.google.com/chrome-enterprise/browser/download. Tale versione supporta l'installazione tramite Criteri di gruppo. Disponendo di computer con sistema operativo a 64 bit scaricare Chrome per Windows a 64 bit.
Google Chrome per le aziende
FIG 6 - Google Chrome per le aziende

Copiare il file zip scaricato precedentemente nella cartella \\SERVERDC2\Cartella condivisaScompattare il file contenente i file di installazione di Chrome all'interno della cartella (cliccarci su con il tasto destro del mouse e selezionare estrai tutto e successivamente sul pulsante Estrai). 
Estrai file ZIP
FIG 7 - Estrai file ZIP

Creazione Filtri WMI

In un ambiente operativo reale è improbabile trovare uniformità assoluta tra le macchine appartenenti al dominio poiché possono essere presenti diversi modelli di computer, versioni di sistema operativo e architetture hardware. Le configurazioni hardware e software dei computer possono variare notevolmente pertanto risulta essenziale condurre una verifica accurata della compatibilità del software prima di procedere con l'installazione tramite le GPO (Group Policy Objects). Inoltre, è fondamentale adattare le procedure di distribuzione del software in base alle specifiche di ciascun sistema e questo può essere eseguito tramite i filtri WMI (Windows Management Instrumentation).  

I filtri WMI consentono di rilevare dinamicamente l'ambito degli oggetti Group Policy (GPO) in base agli attributi del computer target. In questo modo è possibile garantire che un criterio di gruppo venga applicato solo ai dispositivi che rispettino le condizioni specificate (ad es. una particolare versione del sistema operativo, o una determinata configurazione hardware). In teoria sarebbe possibile creare un gruppo di appartenenza separato per ogni GPO contenente computer con le medesime caratteristiche ma ciò comporterebbe un maggior lavoro di gestione dei gruppi. Meglio lasciare che i filtri WMI assicurino automaticamente l'applicazione del criterio di gruppo corretto ad ogni dispositivo. I filtri WMI vengono creati tramite l'utilizzo del linguaggio SQL (Structured Query Language): un linguaggio standardizzato per database basati sul modello relazionale (RDBMS).
Ad esempio per filtrare i computer con sistema operativo Windows 11 il filtro sarà il seguente
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.0.2%" AND ProductType="1"

I valori di ProductType possono essere i seguenti
1 = Windows per PC/Workstation
2 = Windows Server (Domain Controller)
3 = Windows Server (Non Domain Controller)

I valori di Version possono essere
5.1    = Windows XP
5.2    = Windows Server 2003
5.2.3 = Windows Server 2003 R2
6.0    = Windows Vista e Windows Server 2008
6.1    = Windows 7 e Windows Server 2008 R2
6.2    = Windows 8 e Windows Server 2012
6.3    = Windows 8.1 e Windows Server 2012 R2
10.0.1  = Windows 10 e Windows Server 2016 E 2019
10.0.2  = Windows 11 e Windows Server 2022

Dal seguente link è possibile scaricare esempi di filtri WMI

Nei seguenti passaggi verrà mostrato come creare il filtro per installare il software solo su workstation con sistema operativo Windows 11.

Da Server Manager, cliccare su Strumenti quindi su Gestione Criteri di gruppo.
Server Manager
FIG 8 - Server Manager

Cliccare, con il tasto destro del mouse, su Filtri WMI e selezionare Nuovo.
Nuovo filtro WMI
FIG 9 - Nuovo filtro WMI

Nel campo Nome inserire il nome da assegnare al filtro (ad es. Windows 11). Nel campo Descrizione è possibile inserire una breve descrizione del filtro. Cliccare sul pulsante Aggiungi.
Nuovo filtro WMI, Nome
FIG 10 - Nuovo filtro WMI, Nome

Nella casella Query digitare 
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.0.2%" AND ProductType="1"
quindi cliccare su OK.
Query WMI
FIG 11 - Query WMI

Cliccare su Salva.
Nuovo filtro WMI, Salva
FIG 12 -  Nuovo filtro WMI, Salva

Adesso possiamo procedere alla creazione del criterio di gruppo.

Creazione Criterio di gruppo per l'installazione di Google Chrome

Da Server Manager, cliccare su Strumenti quindi su Gestione Criteri di gruppo.
Server Manager
FIG 13 - Server Manager

Cliccare, con il tasto destro del mouse, sul dominio mycompany.local e selezionare Crea un oggetto Criteri di gruppo in questo domino e crea qui un collegamento
Crea un oggetto Criteri di gruppo
FIG 14 - Crea un oggetto Criteri di gruppo


Assegnare il nome al nuovo criterio di gruppo (ad es. GPO_ChromeSetup) e cliccare su OK.
Nome nuovo oggetto di Criteri di gruppo
FIG 15 - Nome nuovo oggetto di Criteri di gruppo

Cliccare con il tasto destro del mouse sul criterio di gruppo appena creato e selezionare Modifica. Nella finestra Editor Gestione Criteri di gruppo posizionarsi su Configurazione computer->Criteri->Impostazioni del software->Installazione software. Sul lato destro della finestra cliccare con il tasto destro in uno spazio vuoto. Dal menu contestuale selezionare Nuovo quindi Pacchetto.
GPO Installazione software, Nuovo Pacchetto
FIG 16  - GPO Installazione software, Nuovo Pacchetto

Digitare il percorso della cartella condivisa \\ServerDC2\Cartella condivisa\GoogleChromeEnterpriseBundle64\Installers quindi il selezionare il file MSI da installare GoogleChromeStandaloneEnterprise64 e cliccare su Apri.
Selezione file MSI
FIG 17 - Selezione file MSI

Nella schermata successiva selezionare l'opzione Assegnata per distribuire l'applicazione senza alcuna modifica e cliccare su OK.
Distribuisci applicazione
FIG 18 - Distribuisci applicazione

Chiudere la finestra Editor Gestione Criteri di gruppo. Selezionare nuovamente il criterio di gruppo appena creato. Nella sezione Filtri di sicurezza cliccare sul pulsante Aggiungi.
GPO Filtri di sicurezza
FIG 19 - GPO Filtri di sicurezza

Nella casella Immettere i nomi degli oggetti da selezionare, digitare Computer del dominio quindi cliccare su Controlla nomi per verificare che il nome immesso sia corretto e successivamente su OK.
Filtri di sicurezza, Computer del dominio
FIG 20 - Filtri di sicurezza, Computer del dominio

Nella sezione Filtri WMI selezionare il filtro creato in precedenza (chiamato Windows 11).
Selezione Filtro WMI
FIG 21 - Selezione Filtro WMI

Nella finestra di dialogo successiva, confermare la modifica cliccando su Si.
Conferma applicazione filtro WMI
FIG 22 - Conferma applicazione filtro WMI


Eseguiamo il logon su una postazione del dominio con sistema operativo Windows 11 e noteremo che Google Chrome è stato installato.
Chrome installato tramite GPO su Windows 11
FIG 23 - Chrome installato tramite GPO su Windows 11