domenica 19 febbraio 2023

Windows Server 2022: Introduzione

Windows Server 2022 è un sistema operativo per server rilasciato da Microsoft il 1º settembre 2021. Il sistema operativo fa parte della famiglia Windows NT ed è il successore di Windows Server 2019. Microsoft, nel corso degli anni, continua a migliorare il suo sistema operativo per server. Sebbene Windows Server 2022 non introduca cambiamenti radicali, offre alcune nuove funzionalità, tra cui miglioramenti alla sicurezza, ai servizi e all'amministrazione del sistema. In particolare tra le nuove funzionalità presenti troviamo:

Secured-core server (server protetto)
Questi sistemi richiedono alcune specifiche hardware, come ad esempio un modulo TPM 2.0, per utilizzare funzioni di sicurezza avanzate . Il modulo TPM (Trusted Platform Module) 2.0 può essere utilizzato per vari scopi tra cui l'archiviazione sicura delle chiavi e una migliore protezione all'avvio da parte di BitLocker. Microsoft offre anche maggiori protezioni contro gli attacchi a livello di firmware e la sicurezza basata sulla virtualizzazione (VBS).

Richieste di risoluzione dei nomi DNS crittografate con DoH
Le richieste DNS possono ora essere effettuate tramite Hypertext Transfer Protocol Secure (HTTPS), utilizzando un canale canale crittografato. Questa nuova funzionalità è denominata DNS-over-HTTPS (DoH).

Sicurezza del livello di trasporto (HTTPS e TLS)
In Windows Server 2022, sia HTTPS che TLS 1.3 sono abilitati per impostazione predefinita e consentono una migliore protezione della connessione di rete.

Sicurezza del Server Message Block (SMB)
Windows Server 2022 apporta diversi miglioramenti alla sicurezza del Server Message Block (SMB). SMB può ora essere utilizzato tramite il protocollo QUIC anziché il Transmission Control Protocol (TCP) consentendo, in questo modo, di sfruttare la crittografia TLS 1.3. SMB Direct supporta la crittografia con un impatto minimo sulle prestazioni inoltre il traffico tra cluster di storage in Storage Spaces Direct può ora essere crittografato.

Funzionalità ibride di Azure
Nel nuovo sistema operativo è disponibile Azure Arc, che fornisce una gestione centralizzata dei server, e Azure Automanage Hotpatch, che consente aggiornamenti senza riavvio. 

Windows Admin Center
Tra i miglioramenti apportati a Windows Admin Center troviamo l'aggiunta del supporto alle nuove funzionalità dei server secured-core.

Supporto migliorato per i Windows Container
Le dimensioni delle immagini dei container sono state notevolmente ridotte ed è stato aggiunto un maggiore supporto per Kubernetes (il sistema open-source di orchestrazione e gestione di container).

Prestazioni di rete
Le prestazioni del protocollo TCP e del protocollo UDP (User Datagram Protocol) sono state migliorate.

Microsoft Edge
Microsoft Edge ha sostituito Internet Explorer come browser predefinito in Windows Server 2022.

Miglioramenti nell'archiviazione
Grazie a miglioramenti apportati al Storage Migration Service, la migrazione dei dati è stata semplificata.
Storage Spaces Direct presenta 2 grandi novità:
    1. La velocità di riparazione dello storage regolabile dall'utente che consente agli utenti di specificare quante risorse allocare per la riparazione dei dati o per soddisfare le esigenze di storage attivo.
    2. La disponibilità della cache del bus di archiviazione sui sistemi non clusterizzati che consente di creare uno storage a livelli su un server stand-alone.


Versioni di Windows Server 2022

Windows Server 2022 è disponibile solo come sistema operativo a 64 bit (non esiste una versione a 32 bit) e viene distribuito in 3 versioni: Essentials, Standard, e Datacenter (è presente anche un'ulteriore versione Datacenter: Azure Edition). 

Essentials
La versione Essentials è ideale per le piccole organizzazioni (con un numero di utenti non superiore a 50). Rappresenta una soluzione economica e offre funzionalità di base sufficienti per svolgere la maggior parte dei lavori. Le caratteristiche dell'edizione Essentials sono:
    • Supporta fino a due core di CPU
    • Supporta un massimo di 64 GB di RAM (memoria ad accesso casuale)

Standard
L'edizione Standard è ideale per ambienti fisici o poco virtualizzati. Le caratteristiche dell'edizione Standard includono:
    • Fino a due contenitori Hyper-V e un numero illimitato di container Windows Server
    • Supporto HGS e Nano Server
    • Storage Replica (con alcune limitazioni)

Datacenter
L'edizione Datacenter ha le stesse caratteristiche dell'edizione Standard e alcune caratteristiche aggiuntive che la rendono ideale per le organizzazioni con molte esigenze di virtualizzazione, con la necessità di utilizzare la tecnologia software-defined networking (SDN) o che necessitano di opzioni di storage avanzate. Alcune di queste caratteristiche sono le seguenti: 
    • Container Hyper-V e container Windows illimitati
    • Macchine virtuali Hyper-V illimitate e supporto per macchine virtuali schermate
    • Storage Replica (illimitato) e Storage Spaces Direct
    • Supporto alla tecnologia software-defined networking (SDN)
    • Controller di rete
    • Supporto Host Guardian Hyper-V
Esiste anche una versione specializzata di Windows Server Datacenter denominata Azure Edition. Windows Server 2022 Datacenter: Azure Edition offre maggiore integrazione con il cloud Microsoft Azure. Tale versione è disponibile solo attraverso Microsoft Azure (installandola come macchina virtuale in Azure) e non è possibile installarla sui propri sistemi on-premises né eseguirla sui propri hypervisor.
Le nuove funzionalità includono le seguenti:
    • Azure Extended Network
    • Hotpatching
    • SMB over QUIC
    • Supporto per macchine virtuali schermate


Nelle seguenti tabelle vengono evidenziate le differenze in termini di funzionalità, ruoli e limiti, tra la versione Standard e quella Datacenter.
Funzionalità generali Standard Datacenter Datacenter: Azure Edition
Rete estesa di Azure
No
No
Con patch a caldo
No
No
SMB su QUIC
No
No
Rete software-defined
No
Replica archiviazione

(1 in collaborazione e 1 gruppo di risorse con un volume singolo da 2 TB)
Sì, illimitato
Sì, illimitato
Spazi di archiviazione diretta
No
Attivazione ereditata
Come guest se ospitato in Datacenter Può essere un host o un guest Può essere un host o un guest


Blocchi e limiti, Ruoli e funzionalità Standard Datacenter
Utilizzabile come guest di virtualizzazione

due macchine virtuali,
più un host Hyper-V per licenza

macchine virtuali illimitate,
più un host Hyper-V per licenza
Ruolo di Controller di rete
No
Supporto Sorveglianza host Hyper-V
No


Per maggiori dettagli sulle differenze tra le versioni è possibile consultare l'apposita pagina dal sito Microsoft.


Windows Server 2022 User Experiences

Windows Server 2022 offre due esperienze utente tra cui scegliere: Desktop Experience e Server Core. Quale utilizzare dipenderà dal carico di lavoro che si desidera supportare e dai requisiti organizzativi. La decisione su quale User Experience installare va valutata con attenzione: a partire da Windows Server 2016 non è più possibile passare da Server Core a Server con Desktop Experience (o viceversa) in maniera indolore ma è necessario reinstallare il sistema.

Desktop Experience
Desktop Experience è l'interfaccia grafica standard (GUI) utilizzata nelle versioni precedenti dei sistemi operativi Windows Server. Consente di interagire con il sistema tramite pulsanti e menu piuttosto che tramite la riga di comando. La GUI (Graphical User Interface) dei sistemi operativi server di Microsoft si rifà a quello delle versioni client: Windows Server 2008 R2 si rifà al look di Windows 7 mentre in Windows Server 2012 l'utente ritrova lo stesso feeling presente in Windows 8. Nelle versioni Windows Server 2016, Windows Server 2019 e Windows Server 2022 invece, troviamo lo stesso aspetto di Windows 10. La Desktop Experience facilita l'amministrazione del server anche agli amministratori di sistema principianti.
Desktop Experience
FIG 1 - Desktop Experience

Server Core
Server Core offre un'interfaccia molto più spartana quando ci si collega alla console. Si viene accolti da una finestra di comando dall'aspetto familiare in cui viene richiesto il nome utente e la password. Dopo aver effettuato l'accesso, viene presentata la finestra sconfig. Quando si sceglie di passare alla riga di comando da sconfig, viene visualizzata una finestra PowerShell con cui interagire. La configurazione iniziale viene eseguita con l'utilità sconfig, anche se può essere eseguita tramite uno script PowerShell o una Desired State Configuration (DSC) di PowerShell
Server Core, sconfig
FIG 2 - Server Core, sconfig

Nano
Non è disponibile attraverso il normale programma di installazione sul disco, ma è necessario scaricare l'immagine del contenitore da Microsoft. Nano offre un'interfaccia ancora più semplice e una console molto più limitata, denominata Recovery Console. Ha un ingombro molto più ridotto, sia in termini di disco che di CPU, rispetto a Desktop Experience o Server Core ed è ideale per l'esecuzione di applicazioni .NET Core. Poiché l'ingombro complessivo è minore, anche la superficie di attacco è ridotta. 
Nano è disponibile solo come immagine del sistema operativo di base per container e può essere eseguito solo come container su un host container, non può essere gestito tramite Criteri di gruppo e per la gestione su vasta scala è necessario utilizzare PowerShell DSC. É possibile eseguire il download delle immagini del server Nano dal registro dei container di Microsoft su DockerHub con il seguente comando:
docker pull mcr.microsoft.com/windows/nanoserver
Sul sito https://hub.docker.com/_/microsoft-windows-nanoserver sono presenti ulteriori informazioni sulle immagini del container Nano Server disponibili.


Prerequisiti

Microsoft pubblica i prerequisiti per ciascuno dei suoi sistemi operativi. Una delle cose fondamentali prima di avviare l'installazione è quella di assicurarsi che tutti i prerequisiti di Windows Server 2022 siano soddisfatti. Alcuni dei requisiti hardware sono indipendenti dall'edizione di Windows Server che si intende installare altri requisiti hardware variano a seconda che si installi Server con Desktop Experience o Server Core. Per la maggior parte, non ci sono molte differenze tra i requisiti minimi di Server Core e quelli di Server con Desktop Experience ad eccezione della quantità di memoria ad accesso casuale (RAM). Il requisito minimo per l'installazione di Server Core è 512 MB di RAM, mentre per Server con Desktop Experience sono necessari almeno 2 GB di RAM. I prerequisiti descritti di seguito sono quelli minimi. Per le specifiche hardware più adatte alle proprie esigenze va tenuto conto del carico di lavoro che si andrà ad eseguire.

CPU
I requisiti della CPU per Windows Server 2022 sono facilmente soddisfatti dalla maggior parte dei processori moderni:
  • Processore da 1,4 GHz a 64 bit
    Considerando che il sistema operativo è un sistema x64, è logico che anche il processore debba avere un'architettura a 64 bit. Il requisito dei 1,4 GHz viene soddisfatto anche dai processori più economici e di fascia bassa.
  • Supporto No Execute (NX)
    Quando il bit NX è abilitato su determinate aree di memoria, il processore non esegue nulla in quello spazio di memoria, il che fornisce una protezione contro il malware. Le aree protette dal bit NX contengono solitamente elementi quali istruzioni del processore o dati. Intel si riferisce a questa tecnologia come XD (abbreviazione di Execute Disable) mentre i processori AMD la chiamano Enhanced Virus Protection (EVP).
  • Supporto alla prevenzione dell'esecuzione dei dati (DEP, Data Execution Prevention)
    La tecnologia DEP fornisce una protezione aggiuntiva contro il malware che può prendere di mira le posizioni di memoria.
  • Supporto CMPXCHG16b, LAHF/SAHF e PrefetchW
    Queste impostazioni sono specifiche del processore (sono stati pubblicati diversi whitepaper su tali specifiche). CMPXCHG16b è un set di istruzioni supportato dalla maggior parte dei moderni processori x86_64. Load AH from Flags (LAHF)/Store AH into Flags (SAHF) vengono utilizzati per il supporto alla virtualizzazione. PrefetchW migliora le prestazioni quando si utilizzano processori AMD. 
  • Supporto alla traduzione degli indirizzi di secondo livello (Extended Page Table [EPT] o Nested Page Table [NPT])
    Questa funzione è particolarmente importante se si prevede di eseguire Hyper-V. Migliora le prestazioni delle macchine virtuali sul sistema e toglie un po' di pressione all'hypervisor migliorandone le prestazioni.

RAM (Random Access Memory)
La memoria ad accesso casuale (RAM) viene utilizzata dal server per memorizzare le cose a cui è necessario accedere subito e quelle a cui potrebbe essere necessario accedere nel prossimo futuro. La RAM è molto più veloce della memoria persistente, quindi un server con molta RAM avrà prestazioni migliori. La RAM deve essere di tipo ECC (Error Correcting Code). La memoria di tipo ECC è in grado di correggere gli errori di un singolo bit (ad esempio, se un'interferenza elettrica inverte un bit in errore, l'uso del bit di parità può garantire la correzione dei dati in memoria). Come indicato precedentemente, la quantità minima di RAM consigliata varia a seconda della versione di Windows Server 2022 che si intende installare: Server Core richiede un minimo di 512 MB di RAM, mentre Server con Desktop Experience richiede un minimo di 2 GB di RAM

Disco
Per l'installazione di Windows Server 2022 sono necessari almeno 32 GB di spazio sul disco rigido. Questo è lo spazio minimo indispensabile per l'installazione del sistema operativo. Se si dispone solo di 32 GB, non sarà possibile installare nient'altro. Visto il costo per GB dei moderni Hard Disk, anche questo prerequisito non rappresenta una grossa limitazione tuttavia, se lo spazio di archiviazione a disposizione è limitato, è possibile pensare all'installazione di Windows Server Core che richiede 4 GB in meno rispetto a Windows Server con Desktop Experience.

Adattatore di rete
L'adattatore di rete, detto anche scheda di interfaccia di rete (NIC), consente al server di connettersi alla rete e comunicare. Per Windows Server 2022, la scheda di rete deve supportare almeno una rete Ethernet gigabit.  L'adattatore di rete deve supportare il Pre-boot Execution Environment (PXE), un metodo per eseguire il boot di un computer utilizzando una connessione di rete ethernet ed il supporto di un server, senza bisogno di una unità di memoria di massa. È quello che la maggior parte delle organizzazioni usa oggi per eseguire l'immagine dei sistemi da un server di imaging centrale come Windows Deployment Services o System Center Configuration Manager.

Firmware UEFI
L'interfaccia UEFI (Unified Extensible Firmware Interface) ha ormai sostituito il tradizionale Basic Input-Output System (BIOS). Per l'avvio protetto è richiesto un firmware basato su UEFI 2.3.1c.

TPM (Trusted Platform Module) 2.0
La maggior parte delle schede madri è oggi dotata di un chip TPM (Trusted Platform Module) 2.0. Se si intende eseguire la crittografia del disco con BitLocker, questo è un elemento indispensabile.

Monitor
È ovvio che durante l'installazione del sistema operativo è necessario poter vedere cosa succede sul server. Windows Server 2022 richiede una connessione Super Video Graphics Array (SVGA) con una risoluzione minima di 1024 x 768. È possibile ottenere questo risultato collegando un monitor fisico al server o visualizzando il flusso video attraverso un KVM (Keyboard, Video, Mouse).
Le KVM consentono di utilizzare una tastiera, un monitor (video, nell'acronimo inglese) e un mouse per amministrare più server. Le KVM più vecchie richiedevano la presenza fisica sul posto per utilizzare la tastiera, il monitor e il mouse. Le moderne KVM consentono di amministrare i server in remoto tramite un servizio Web e forniscono funzionalità simili a quelle che si otterrebbero collegando fisicamente una tastiera, un monitor e un mouse al server.

Tastiera e mouse
È possibile collegare una tastiera e un mouse direttamente al server durante l'imaging oppure presentarli al sistema tramite un KVM. In ogni caso, è necessario disporre di una tastiera e di un mouse di qualche tipo per interagire con il sistema.


Preparazione supporto di installazione

Una volta recuperata l'immagine ISO di Windows Server 2022 bisogna procedere alla creazione del supporto per l'installazione su una macchina fisica. Se si dispone di un masterizzatore (e di un lettore DVD sul server) è possibile masterizzare l'immagine su un supporto DVD cliccando sul file ISO con il tasto destro del mouse e selezionando Masterizza immagine disco o utilizzando, in alternativa, uno dei tanti programmi di masterizzazione come ad es. Nero Burning Rom, ImgBurn, CDBurnerXP, ecc. 
Per installare Windows Server 2022 mediante unità di memoria di massa collegata alla porta USB del server è possibile utilizzare appositi tool come Rufus, Balena Etcher o Ventoy per creare una pendrive bootable con l'immagine ISO del sistema operativo. 
Se il server da installare farà parte di un'infrastruttura già esistente, l'installazione probabilmente potrà essere avviata tramite rete utilizzando Windows Deployment Services o System Center Configuration Manager
Se si tratta di un server stand-alone da aggiornare, allora l'immagine ISO può essere montata direttamente all'interno del sistema operativo obsoleto e avviare manualmente il setup di Windows Server 2022. In questo caso, oltre a verificare se la versione di Windows server presente sulla macchina sia aggiornabile a Windows Server 2022, è necessario assicurarsi che eventuali software installati siano compatibili con la nuova versione del sistema operativo server.

Prima di partire con l'installazione assicurarsi di disporre di tutti i driver relativi all'hardware su cui si andrà ad installare il sistema operativo Windows Server.




giovedì 16 febbraio 2023

Linux: Mostrare i colori base supportati nella finestra terminale

Per visualizzare i colori di base del testo del terminale è possibile utilizzare il comando
printf "\e[%dm%d dark\e[0m \e[%d;1m%d bold\e[0m\n" {30..37}{,,,}

Utile nel caso si voglia visualizzare i colori di base prima di andarli a modificare nelle preferenze.
Colori di base Terminale
FIG 1 - Colori di base Terminale





mercoledì 15 febbraio 2023

Linux: Elencare tutti i socket TCP aperti

Il comando lsof (list open files) è un comando dei sistemi operativi Unix e Unix-like che permette di visualizzare informazioni sui file aperti dai processi in esecuzione. Dato che in ambiente *nix anche l'accesso a dispositivi, socket e pipe avviene come se fossero dei normali file, è possibile utilizzare lsof per analizzarli.
Questo rende lsof un utile strumento per i sistemisti nella raccolta di informazioni diagnostiche sul sistema.

Per elencare tutti i socket TCP aperti e da quali processi è possibile utilizzare il comando
sudo lsof -i TCP
lsof, mostra tutti i socket TCP aperti
FIG 1 - lsof, mostra tutti i socket TCP aperti

Per visualizzare quali processi utilizzano la porta 80 in locale o in remoto. 
sudo lsof -i TCP:80
lsof, processi che utilizzano la porta TCP 80
FIG 2 - lsof, processi che utilizzano la porta TCP 80


Per elencare tutti i file aperti da un singolo processo indicando il suo PID 
sudo lsof -p 747
lsof, file aperti da uno specifico processo
FIG 3 - lsof, file aperti da uno specifico processo








martedì 14 febbraio 2023

PowerShell: Creare una nuova attività pianificata

Utilizzando il cmdlet New-ScheduledTask presente in PowerShell è possibile creare una nuova istanza di attività pianificata.
Il cmdlet New-ScheduledTask crea un oggetto che contiene la definizione di un'attività pianificata. New-ScheduledTask non registra automaticamente l'oggetto con il servizio Task Scheduler.

È possibile registrare un'attività per eseguire uno dei seguenti tipi di applicazioni o file: applicazioni Win32, applicazioni Win16, applicazioni OS/2, applicazioni MS-DOS, file batch (.bat), file di comando (.cmd) o qualsiasi altro tipo di file correttamente registrato.

Sintassi

New-ScheduledTask
   [[-Action] <CimInstance[]>]
   [[-Description] <String>]
   [[-Principal] <CimInstance>]
   [[-Settings] <CimInstance>]
   [[-Trigger] <CimInstance[]>]
   [-CimSession <CimSession[]>]
   [-ThrottleLimit <Int32>]
   [-AsJob]
   [<CommonParameters>]
   

Parametri

-Action
Specifica una serie di elementi di lavoro per l'esecuzione di un'attività. Quando si specificano più azioni, queste vengono eseguite in sequenza. Un'attività può avere fino a 32 azioni.

-AsJob
Esegue il cmdlet come job in background. Questo parametro viene utilizzato per l'esecuzione di comandi che richiedono molto tempo per essere completati. 

-CimSession
Esegue il cmdlet in una sessione remota o su un computer remoto. Al parametro va passato il nome di un computer o un oggetto di sessione, ad esempio l'output di un cmdlet New-CimSession o Get-CimSession. L'impostazione predefinita è la sessione corrente sul computer locale.  

-Description
Descrizione breve del task.

-Principal
Specifica il contesto di sicurezza in cui viene eseguito un task.

-Settings
Specifica un oggetto di configurazione che il servizio Task Scheduler utilizza per determinare come eseguire un'attività.

-ThrottleLimit
Specifica il numero massimo di operazioni contemporanee che possono essere stabilite per eseguire il cmdlet. Se questo parametro viene omesso o viene inserito un valore pari a 0, Windows PowerShell calcola un limite di throttle ottimale per il cmdlet in base al numero di cmdlet CIM in esecuzione sul computer. ThrottleLimit si applica solo al cmdlet corrente, non alla sessione o al computer.

-Trigger
Specifica un array di uno o più oggetti trigger che causano l'avvio di un'attività pianificata.
Un trigger è un insieme di criteri che avvia un'attività pianificata quando i criteri sono soddisfatti. Per avviare un'attività si può usare un'attivazione basata sul tempo o un'attivazione basata sugli eventi, e una o più attivazioni possono avviare un'attività. Un'attività può avere fino a 48 inneschi. 


Esempio

 $TaskAction = New-ScheduledTaskAction -Execute "Taskmgr.exe"  
 $TaskTrigger = New-ScheduledTaskTrigger -AtLogon  
 $TaskPrincipal = "Contoso\Administrator"  
 $TaskSettings = New-ScheduledTaskSettingsSet  
 $Task = New-ScheduledTask -Action $TaskAction -Principal $TaskPrincipal -Trigger $TaskTrigger -Settings $TaskSettings  
 Register-ScheduledTask Task1 -InputObject $Task  


$TaskAction = New-ScheduledTaskAction -Execute "Taskmgr.exe"
Il cmdlet New-ScheduledTaskAction crea un oggetto che contiene la definizione di un'azione di attività pianificata. Un'azione pianificata rappresenta un comando (in questo caso taskmgr.exe) che un'attività esegue quando Task Scheduler esegue il task. L'oggetto viene assegnato alla variabile $TaskAction.

$TaskTrigger = New-ScheduledTaskTrigger -AtLogon
Il cmdlet New-ScheduledTaskTrigger crea e restituisce un nuovo oggetto trigger (innesco) di attività pianificata. Nell'esempio, con il parametro -AtLogon, viene indicato che il task dovrà essere eseguito al logon dell'utente. L'oggetto viene memorizzato all'interno della variabile $TaskTrigger.

$TaskPrincipal = "Contoso\Administrator"
Specifica il contesto di sicurezza in cui viene eseguito il Task.

$TaskSettings = New-ScheduledTaskSettingsSet
Il cmdlet New-ScheduledTaskSettingsSet crea un oggetto che contiene le impostazioni delle attività pianificate. Ogni attività pianificata ha un set di impostazioni dell'attività

$Task = New-ScheduledTask -Action $TaskAction -Principal $TaskPrincipal -Trigger $TaskTrigger -Settings $TaskSettings
Crea un oggetto che contiene la definizione dell'attività pianificata. L'oggetto viene assegnato alla variabile $Task.

Register-ScheduledTask Task1 -InputObject $Task
Registra la nuova attività pianificata e la definisce utilizzando la variabile $Task.

Utilità di pianificazione
FIG 1 - Utilità di pianificazione





domenica 12 febbraio 2023

Linux: Data carving

Il data carving è una tecnica utilizzata per recuperare i dati da un supporto di memorizzazione, come un disco rigido o una scheda di memoria, in seguito a una cancellazione accidentale o intenzionale, oppure in caso di danneggiamento del supporto stesso. Il data carving consiste nell'analizzare l'immagine del supporto di memorizzazione per individuare i frammenti di dati ancora presenti e salvarli in una nuova posizione. Questa tecnica può essere utilizzata per recuperare file, immagini, video e altri tipi di dati ed è fondamentale anche nelle investigazioni digitali forensi.

Quando un file viene salvato su un disco rigido, viene suddiviso e scritto in contenitori logici detti cluster. Ogni cluster è composto da un certo numero di settori, che sono le unità di base di memorizzazione su un disco rigido. Il sistema operativo utilizza una File Allocation Table (FAT) o una Master File Table (MFT) per tenere traccia della posizione dei cluster sul supporto di memoria.

Ogni volta che un file viene salvato, il sistema operativo cerca una serie di cluster vuoti contigui che siano sufficienti per contenere tutti i dati del file. Una volta individuati, i cluster vengono marcati come utilizzati e i dati del file vengono scritti su di essi. Se un file è troppo grande e non ci sono cluster vuoti contigui in grado di contenerlo, viene diviso in più parti e memorizzato in cluster diversi e non contigui. Il sistema operativo utilizza la FAT o l'MFT per tenere traccia della posizione di ogni parte del file sulla memoria. In questo modo, quando si apre un file, il sistema operativo può riunire tutte le sue parti.

Quando si cancella un file questo non viene in realtà rimosso dall'hard disk; viene rimosso il suo riferimento nella struttura del file system e lo spazio occupato dal file viene classificato come spazio non allocato. Proprio sullo spazio non allocato in un sistema di storage (hard disk, pendrive, ecc) si applica il data carving per recuperare i file e catalogarli sulla base del loro header e footer (stringhe esadecimali all'inizio e fine del file). Per il riconoscimento del tipo di file si ricorre al database dei magic number (firme esadecimali). Il magic number è costituito da una serie di byte specifici (da 2 a 10 byte) solitamente posizionati all'inizio del file, che vengono utilizzati per identificarne il tipo. Ad esempio, un file JPEG avrà un magic number specifico (FF D8 FF EE) diverso da un file PNG (89 50 4E 47). Quasi tutti i formati di file sono identificati da un magic number

Data carving con Scalpel

Uno degli strumenti più utilizzati e molto apprezzato per il data carving è Scalpel (https://github.com/machn1k/Scalpel-2.0). Tale strumento è già presente in Kali Linux. Per installarlo su distribuzioni Linux derivanti da Debian è possibile utilizzare i seguenti comandi da terminale
sudo apt-get update
sudo apt-get install scalpel

Prima di avviare lo strumento è necessario andare a modificare il file di configurazione /etc/scalpel/scalpel.conf che ha tutte le righe commentate. In base alla tipologia di file che si intende recuperare è necessario andare a rimuovere il commento dalla relativa riga. 

Aprire il file di configurazione con un editor di testo. In Kali Linux è possibile utilizzare l'editor nano con il comando da terminale
sudo nano /etc/scalpel/scalpel.conf

Per recuperare un file PDF eliminato da una pendrive è necessario andare a rimuovere i commenti relativi ai tipi di file PDF (FIG 1) presenti nel file di configurazione. 
File di configurazione scalpel.conf
FIG 1 - File di configurazione scalpel.conf

Premere CTRL + X per uscire dall'editor e confermare la modifica premendo Y seguito da Invio.
Salva modifica del  file di configurazione
FIG 2 - Salva modifica del  file di configurazione


La sintassi di scalpel è la seguente
scalpel -c fileconfig.conf unità -o /percorso/file/output

Il percorso dell'output deve risiedere su un unità diversa da quella da cui si sta tentando di recuperare i dati. Per identificare la pendrive eseguire il comando
lsblk 
lsblk
FIG 3 - lsblk

Dalla FIG 3 si evince che la pendrive è stata montata come sdb1. Eseguire una finestra terminale come root ed avviare il data carving con il comando
scalpel -c /etc/scalpel/scalpel.conf /dev/sdb1 -o /home/kali/Desktop/Recover
Avvio data carving con scalpel
FIG 4 - Avvio data carving con scalpel
Il comando creerà una cartella Recover sul Desktop contenente un file audit.txt (in cui saranno elencati eventuali file recuperati e altre informazioni sul processo) e una cartella contenente i file recuperati.
Risultati del data carving di scalpel
FIG 5 - Risultati del data carving di scalpel

File audit.txt
FIG 6 - File audit.txt

File recuperati da scalpel
FIG 7 - File recuperati da scalpel


Scalpel consente di effettuare il data carving anche su immagini di dischi virtuali (VDI, Virtual Disk Image) di VirtualBox. In questo caso il comando da eseguire sarà del tipo
scalpel -c /etc/scalpel/scalpel.conf /percorso/Immagine/file.vdi -o /home/kali/Desktop/Recover




giovedì 9 febbraio 2023

Linux: Installazione Debian 11 (Graphical Install)

L'installazione di gran parte delle distribuzioni Linux è stata notevolmente semplificata nel corso degli anni e l'installazione è ormai alla portata anche degli utenti meno esperti. In questo articolo verranno mostrati i passi per l'installazione della distribuzione Debian su un nuovo PC.

Il primo passo consiste nel procurarsi l'immagine ISO dal sito ufficiale (www.debian.org). É possibile scegliere tra diverse versioni a seconda del proprio sistema (x86, x64, arm, ecc), versioni complete, versioni base, per installazione tramite rete, ecc. Per questo articolo è stato eseguito il download della versione debian-11.6.0-amd64-DVD-1.iso da https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/.
Una volta scaricata l'immagine ISO è possibile masterizzarla su DVD o creare un supporto USB avviabile utilizzando strumenti di terze parti come RUFUS, Balena Etcher o Ventoy.
Terminata la preparazione, basterà avviare il sistema dal supporto appena creato per avviare l'installazione di Debian

Nella prima schermata apparirà il menu di installazione da cui sarà possibile selezionare diversi tipi di installazione e opzioni. Lasciare selezionata la Graphical Install e premere Invio per proseguire.
Installer menu
FIG 1 - Installer menu

Selezionare la lingua da utilizzare nella fase di installazione del sistema e cliccare su Continue. Per l'installazione è stata selezionata la lingua italiana. 
Seleziona Lingua da utilizzare durante l'installazione
FIG 2 - Seleziona Lingua da utilizzare durante l'installazione

Un messaggio ci avvisa che la traduzione del programma di installazione nella lingua selezionata (italiano) è incompleta e alcuni testi potrebbero essere visualizzati in inglese. Ci viene chiesto se desideriamo proseguire comunque con la lingua selezionata. Rispondere affermativamente selezionando e cliccando su Continua.
Traduzione incompleta
FIG 3 - Traduzione incompleta
Nella schermata Selezionare la posizione, viene chiesto di selezionare il Paese che verrà usato per impostare la lingua e il fuso orario all'interno del sistema. Selezionare Italia e cliccare su Continua.
Seleziona Paese
FIG 4 - Seleziona Paese

Selezionare la tastiera Italiana e proseguire cliccando sul pulsante Continua.
Configurazione tastiera
FIG 5 - Configurazione tastiera
A questo punto il programma di installazione tenta di contattare un server DHCP per la configurazione automatica delle impostazioni di rete. Nel caso in cui il server DHCP non venga rilevato, verrà mostrata la finestra presente in FIG 6. Cliccare su Continua per procedere con la configurazione della rete.
Configurare la rete
FIG 6 - Configurare la rete

Nella schermata successiva vengono proposte diverse opzioni per la configurazione della rete:
  • Riprovare configurazione automatica della rete
    Tenta nuovamente di contattare un server DHCP.
  • Riprovare configurazione automatica della rete con nome host DHCP
    Permette di specificare il nome host di un server DHCP da contattare per la configurazione automatica della rete.
  • Configurare la rete manualmente
    Consente di procedere alla configurazione manuale della rete.
  • Non configurare la rete in questo momento
    Prosegue con l'installazione del sistema operativo senza configurare la rete.
Selezionare Configurare la rete manualmente e cliccare su Continua.
Opzioni per la configurazione della rete
FIG 7 - Opzioni per la configurazione della rete
Nell'apposita casella, digitare l'indirizzo IP da assegnare alla macchina e cliccare su Continua.
Configurazione indirizzo IP
FIG 8 - Configurazione indirizzo IP
Di default verrà proposta la subnet mask (maschera di rete) 255.255.255.0 che fa al caso nostro. Confermare la configurazione cliccando su Continua.
Subnet mask
FIG 9 - Subnet mask
Nel passo successivo ci viene richiesto di specificare l'indirizzo IP del gateway. Il gateway è un router, o un altro dispositivo con funzionalità di routing dei pacchetti dati, che collega la LAN con l'esterno. Specificare, nell'apposita casella, l'indirizzo IP e proseguire con la configurazione della rete cliccando su Continua.
Configurazione Gateway
FIG 10 - Configurazione Gateway
La configurazione della rete continua con l'indicazione dei server DNS da utilizzare per la risoluzione dei nomi. I server DNS vanno indicati specificando il loro indirizzo IP. É possibile specificare fino a 3 server DNS separati da spazi. In figura è stato inserito il DNS di Google con l'IP 8.8.8.8. Se non si intende configurare un server DNS basta lasciare il campo vuoto. Cliccare sempre sul pulsante Continua per proseguire.
Server DNS
FIG 11 - Server DNS
Specificare il nome host che si intende attribuire al sistema. Il nome host è un nome con cui il sistema viene identificato in rete. Cliccare su Continua.
Nome Host
FIG 12 - Nome Host
Il nome del dominio è la parte dell'indirizzo Internet a destra del nome del proprio host e termina con .com, .net, .edu, ecc. In una rete domestica è possibile usare un nome qualsiasi purché sia uguale in tutti i computer della rete. Cliccare su Continua per continuare.
Nome del dominio
FIG 13 - Nome del dominio
Specificare la password da assegnare all'utente root. Trattandosi di un utenza utilizzata per amministrare il sistema, la password va scelta con attenzione. Digitare la password all'interno delle apposite caselle e cliccare su Continua.
Password di root
FIG 14 - Password di root
In questa fase verrà creato un nuovo account da utilizzare per le normali attività (a differenza dell'account di root). Ci viene chiesto di inserire il nome completo del nuovo utente (ad es. Nome e Cognome). Digitare il nome desiderato e cliccare su Continua.
Impostazione utenti e password
FIG 15 - Impostazione utenti e password
Nella fase successiva viene richiesto il nome da assegnare all'account. Digitare il nome all'interno della casella e cliccare su Continua.
Nome utente per l'account
FIG 16 - Nome utente per l'account
Specificare la password da assegnare al nuovo account utente quindi cliccare su Continua.
Password account utente
FIG 17 - Password account utente
In questa fase il programma di installazione di guida per il partizionamento dei dischi. Trattandosi di un PC nuovo in cui non vi sono installati altri sistemi operativi, selezioniamo l'opzione Guidato - usa l'intero disco e clicchiamo su Continua.
Partizionamento dei dischi
FIG 18 - Partizionamento dei dischi
Selezionare il disco da partizionare e cliccare su Continua. La procedura ci avvisa che i dati presenti sul disco selezionato saranno eliminati una volta confermata l'applicazione delle modifiche.
Selezione disco da partizionare
FIG 19 - Selezione disco da partizionare
Il disco può essere partizionato usando diversi schemi. Lasciare selezionato lo schema proposto Tutti i file in una partizione (per nuovi utenti) e cliccare su Continua.
Schema di partizionamento
FIG 20 - Schema di partizionamento
Viene visualizzata l'anteprima delle partizioni. Selezionare Terminare il partizionamento e scrivere le modifiche sul disco quindi proseguire cliccando su Continua.
Anteprima partizioni
FIG 21 - Anteprima partizioni
Viene presentato un resoconto delle modifiche che verranno applicate ai dischi e ci viene chiesto se intendiamo scrivere tali modifiche sui dischi e renderle effettive. Selezionare e cliccare su Continua per avviare l'installazione del sistema di base.
Conferma scrittura modifiche su disco
FIG 22 - Conferma scrittura modifiche su disco

Installazione sistema di base
FIG 23 - Installazione sistema di base
Se abbiamo scaricato un'insieme di supporti per l'installazione è possibile analizzarli prima di utilizzarli. Avendo scaricato l'immagine ISO di un singolo supporto, lasciare selezionato No e cliccare su Continua.
Configurazione gestore pacchetti
FIG 24 - Configurazione gestore pacchetti
É possibile indicare un mirror di rete come supplemento al software incluso nel supporto di installazione. In questo modo è possibile installare, se disponibili, versioni più aggiornate del software. Lasciare selezionato No e cliccare su Continua.
Mirror di rete
FIG 25 - Mirror di rete
nn
Raccolta dati sull'uso dei pacchetti
FIG 26 - Raccolta dati sull'uso dei pacchetti
Lasciare selezionati i software proposti e cliccare su Continua per avviare la loro installazione..
Selezione del software
FIG 27 - Selezione del software

Installazione del software
FIG 28 - Installazione del software
Installare il boot loader GRUB. Nel caso in cui Debian sia l'unico sistema operativo installato nel sistema, è buona norma installare il boot loader GRUB sul disco primario. Selezionare Si e cliccare su Continua.
Installazione GRUB
FIG 29 - Installazione GRUB
Selezionare il device su cui installare il boot loader GRUB per rendere avviabile il nuovo sistema installato e cliccare su Continua.
Device per l'installazione di GRUB
FIG 30 - Device per l'installazione di GRUB

L'installazione è completata, rimuovere il supporto utilizzato per l'installazione e cliccare su Continua per riavviare il sistema e avviare Debian.
Installazione completata
FIG 31 - Installazione completata