Backup “immutabili” con Veeam e Azure Blob Storage – Parte I

Veeam Backup & Replication è un software dedicato alla protezione di macchine virtuali, fisiche, dati destrutturati e istanze cloud, che offre diverse opzioni di backup, replica, ripristino con vari livelli di granularità, integrandosi con applicazioni business critical come Active Directory, Exchange Server, SharePoint Server, SQL Server, Oracle Database, PostgreSQL. Il software, oltre a poter utilizzare qualsiasi tipo di storage on-premises per ospitare i dati di backup, consente di sfruttare a tale scopo il cloud pubblico, garantendo grande flessibilità nelle scelte che le organizzazioni possono fare rispetto ai propri requisiti di archiviazione dei dati.

Nota: In questa guida daremo per scontato che si abbia una buona conoscenza di Veeam Backup & Replication. Nel caso in cui occorrano maggiori informazioni sul prodotto, si raccomanda di consultare il sito ufficiale Veeam (https://www.veeam.com/). Qui un video introduttivo su architettura e operatività: https://www.veeam.com/it/videos/product-demo-veeam-basics.html.

Rilasciata il 14 febbraio 2023, la versione 12 di Veeam Backup & Replication è arricchita, fra le altre, da due nuove caratteristiche:

  • Backup diretto su Object Storage
  • Supporto alla funzionalità “immutable storage” (archiviazione non modificabile) per i contenitori Blob di Microsoft Azure.

Fra i vantaggi di archiviare i dati di backup gestiti da Veeam direttamente su spazi Object Storage che offrono caratteristiche di immutabilità:

  1. Poter contare su uno spazio di archiviazione a basso costo e scalabile, adatto alle esigenze di archiviazione a lungo termine
  2. Ottenere che una copia dei dati si trovi fuori dal nostro datacenter, rispettando quindi la regola aurea “3-2-1” della protezione dei dati: mantenere 3 copie, di cui 2 su media differenti ed 1 off-site
  3. Avere la garanzia, offerta dallo storage stesso, che i dati siano inalterabili, e quindi rispettino eventuali requisiti di conformità a cui la nostra organizzazione deve attenersi
  4. Fare in modo che almeno una copia dei nostri dati di produzione sia a prova di ransomware e immediatamente disponibile per consentirne il ripristino in caso di emergenza

Le attività che descriviamo in questa serie di articoli hanno come obiettivo integrare le suddette funzionalità Veeam con gli spazi di archiviazione Blob e fare in modo che i backup dei nostri dati aziendali siano protetti dai tentativi di cancellazione o alterazione in caso di un eventuale attacco ransomware.

Questa la suddivisione degli argomenti fra gli articoli:

  • Parte I (questo articolo):
    • Creare e configurare un container Azure Blob Storage come “immutable storage”
    • Aggiungere il container Blob all’infrastruttura Veeam come repository
  • Parte II:
    • Creare job di backup per proteggere macchine virtuali e NAS / share di rete in modo che utilizzino il container Blob come destinazione primaria
    • Effettuare tentativi di cancellazione dei dati di backup per verificare l’efficacia dell’immutabilità

Ransomware: la certezza dell’inevitabile

Il ransomware è una minaccia informatica considerata oggi inevitabile.

Anche se le aziende adottano processi basati sui più consolidati framework in tema di cybersecurity, non esiste alcuna garanzia che si possa prevenire un attacco da parte di criminali informatici, soprattutto quando questi, oltre allo sfruttamento di vulnerabilità di servizi e applicazioni, utilizzano metodi di social engineering avanzati, come e-mail di phishing personalizzate, contatti diretti via SMS, WhatsApp, LinkedIn o addirittura di persona, per eludere le difese informatiche dell’organizzazione target.

Come è noto, l’obiettivo principale di un attacco ransomware è la crittografia dei dati dell’organizzazione e la richiesta di un pagamento in criptovalute in cambio della chiave per la decriptazione. Sempre più spesso, inoltre, gli attaccanti provvedono ad esfiltrare copie dei dati minacciando di diffonderli pubblicamente se il pagamento non viene effettuato o se non viene versata una somma aggiuntiva, a volte richiesta in un secondo momento.

Nel migliore dei casi, comunque, gli attacchi ransomware causano interruzioni nell’operatività dei sistemi informativi, portando a perdite sia economiche che reputazionali, la cui gravità aumenta con il tempo impiegato per tornare in produzione.

Proteggere i dati di backup

I backup sono legittimamente considerati un importante tassello nelle strategie di mitigazione degli attacchi ransomware, poiché consentono di tornare rapidamente ad erogare servizi ripristinando server e dati e possono anche evitare alle aziende di dover cedere all’estorsione.

Tuttavia, i dati di backup stessi sono uno dei bersagli degli attacchi e possono essere resi inutilizzabili in vari modi, a seconda del grado di penetrazione degli attaccanti all’interno dell’organizzazione vittima:

  • Crittografia: i file prodotti dai software di backup, se non debitamente protetti, possono essere crittografati al pari dei dati in produzione
  • Eliminazione / sovrascrittura: alcuni attacchi ransomware cercano di eliminare o sovrascrivere i dati di backup rendendoli inservibili
  • Contaminazione: alcuni tipi di malware sono in grado di infettare anche i dati di backup, compromettendone l’integrità e mettendo nuovamente a rischio l’organizzazione che effettua il ripristino in produzione di tali dati

Poiché gli attacchi ransomware si basano spesso sull’acquisizione fraudolenta di credenziali amministrative, eventualmente conseguita attraverso “movimenti laterali” (particolarmente pericolosi, perché un attaccante può rimanere all’interno del sistema per un lungo periodo di tempo senza essere rilevato, continuando ad accedere alle risorse e alle informazioni dell’organizzazione) e conseguente escalation di privilegi, è fondamentale che i dati di backup siano protetti adeguatamente anche da possibili attività pseudo-legittime eseguite utilizzando l’utenza di un amministratore e volte a cancellare/alterare/crittografare tutti i backup esistenti su qualunque storage connesso alla rete.

Come possiamo, quindi, proteggere anche i nostri preziosi backup?

Una soluzione fra le più efficaci è di renderli “immutabili“, ovvero che non possano essere modificati, eliminati o sovrascritti, per un periodo di tempo prestabilito, nemmeno da parte di un amministratore di sistema o di altri utenti autorizzati.

L’immutabilità dei dati di backup può essere garantita attraverso diverse tecniche di archiviazione, tra le quali:

  • Archiviazione su
    nastro: una volta che il backup è stato creato, il nastro viene archiviato in un luogo sicuro e, soprattutto, offline.
  • Archiviazione su storage che offre immutabilità dei dati via
    file system o con tecnologia proprietaria: NAS, file server, apparati di deduplica, eccetera.
  • Archiviazione su Object Storage, tecnologia tipicamente basata su cloud (ma che può anche essere implementata on-premises) che consente di archiviare grandi quantità di dati in modo affidabile e sicuro. L’immutabilità dei dati di backup può essere garantita, in questo caso, attraverso l’uso di funzioni di lock e di versioning: le funzioni di lock impediscono la modifica o l’eliminazione dei dati di backup, mentre le funzioni di versioning consentono di mantenere diverse versioni dei dati, ognuna delle quali non può essere modificata o cancellata.

Vediamo come utilizzare l’offerta Object Storage di Microsoft Azure e la soluzione Veeam Backup & Replication v12 per archiviare le copie dei nostri dati in modo sicuro su cloud.

Schema logico

Faremo riferimento ad uno scenario semplificato, quasi una proof-of-concept, ma utile per capire come ottenere un backup “immutabile” dei nostri dati, dall’ambiente on-premises direttamente su Microsoft Azure.

L’architettura presa in esame include:

  • Un server Veeam Backup & Replication v12, su piattaforma Windows Server
  • Un hypervisor (VMware o Hyper-V), del quale vogliamo proteggere le macchine virtuali guest in modalità agent-less, ovvero senza l’uso di agent installati sulle VM
  • Una NAS/share di rete, dei cui file vogliamo effettuare il backup
  • Una sottoscrizione Microsoft Azure ed uno o più container Blob Storage per ospitare i dati di backup

Creare e configurare un container Azure Blob Storage

Cosa si intende per Object Storage?

Object Storage è un’architettura di archiviazione progettata per gestire grandi quantità di dati non strutturati, raggruppandoli in unità distinte chiamate oggetti. Ogni oggetto è accompagnato da metadati descrittivi e da un identificativo univoco che ne consentono la localizzazione e l’accesso. Grazie alla scalabilità intrinseca dell’architettura Object Storage, è possibile archiviare grandi volumi di dati a costi inferiori rispetto ad altre soluzioni di archiviazione. Questa tecnologia risulta pertanto particolarmente conveniente per archiviare dati prevalentemente statici e di dimensioni sempre crescenti, come per l’appunto i backup.

Azure Blob Storage è la soluzione Microsoft di archiviazione ad oggetti offerta da Azure: è possibile salvare, modificare, cancellare i dati nei contenitori Blob via HTTP/HTTPS utilizzando API REST, PowerShell e librerie client per .NET, Java, Node.js, Python, PHP, eccetera. Per approfondire: https://learn.microsoft.com/it-it/azure/storage/blobs/

L’architettura di Azure Blob Storage

L’architettura Blob Storage si compone di tre elementi:

  • Lo Storage Account è uno spazio di nomi univoco in Azure che consente di identificare il punto di accesso (endpoint) ad un set di dati archiviati in Azure Blob. Ad esempio, se lo Storage Account si chiama veeamstoragedemo, l’endpoint di accesso alla componente Blob Storage diventa: https://veeamstoragedemo.blob.core.windows.net. L’endpoint sarà poi referenziato come repository per i backup nella configurazione di Veeam Backup & Replication.
  • Il Container è una cartella in cui collocare gli oggetti Blob, come avviene in una directory su file System. Uno Storage Account può contenere un numero illimitato di Container, ognuno dei quali può contenere un numero illimitato di oggetti Blob. Il nome di un Container entra a far parte dell’URI (Uniform Resource Locator) univoco per connettersi ad esso ed ai Blob che contiene. Proseguendo nell’esempio precedente, se il Container si chiama backup01, l’URI completo sarà https://veeamstoragedemo.blob.core.windows.net/backup01.
  • I Blob, infine, possono contenere dati di qualsiasi tipo.

Iniziamo a costruire la nostra infrastruttura Blob Storage su Azure.

Creare uno Storage Account

Accedere al portale di Azure (https://portal.azure.com/) con credenziali amministrative.

Nella sezione di sinistra, fare clic su Create a resource.

Nella pagina Create a resource, nella casella di testo Search services and marketplace, digitare storage account e premere Invio.

Fare clic su Storage account.

Fare clic su Create.

Nella pagina Create a storage account, verificare che nella casella a discesa Subscription sia selezionata la sottoscrizione Azure corretta. Poi, nella casella di testo Resource Group fare clic su Create new.

Digitare un nome univoco per il Resource Group e fare clic su OK. In alternativa, è possibile utilizzare un Resource Group esistente.

Nella sezione Instance details, nella casella di testo Storage account name, digitare un nome univoco. Nella casella a discesa Region selezionare la regione Azure più conveniente.

Se lo si desidera, è possibile modificare il tipo di Redundancy che gestisce il modo in cui i dati sono replicati da Azure per maggior affidabilità del servizio.

Fare clic su Next: Advanced.

Nella sezione successiva (Advanced), verificare che le opzioni siano quelle riportate in figura e fare clic su Next : Networking


Nella sezione successiva (Networking), verificare che le opzioni siano quelle riportate in figura e fare clic su Next : Data Protection.


Nella sezione successiva (Data Protection), verificare che le opzioni siano quelle riportate in figura.

In modo particolare:

  • Disabilitare l’opzione Enable soft delete for blobs
  • Abilitare l’opzione Enable versioning for blobs
  • Disabilitare l’opzione Enable version-level immutability support.

Fare clic su Review.


Fare clic su Create e attendere che si completi il processo.

Creare un Container

Una volta completata la creazione dello Storage Account, nella pagina Overview, fare clic su Go to resource.

Nella pagina di dettaglio dello Storage Account, sezione Data storage, fare clic su Containers.

Nella pagina Containers, fare clic su “+ Container“.

Nella barra laterale a destra, sotto New Container, inserire un nome per il Container, ad esempio backup01; fare clic su Advanced e selezionare l’opzione Enable version-level immutability support. Poi fare clic su Create (in basso).

A fine operazione, il Container appena creato verrà elencato nella schermata, come in figura.

L’accesso al Container sarà reso sicuro attraverso l’uso di Access Keys legate allo Storage Group. Per poter collegare Veeam Backup & Replication al Container, oltre al suo URI, dovremo quindi fornire la relativa chiave di accesso.

Nella sezione Security + Networking, fare clic su Access Keys.

Nella pagina Access Keys, nella sezione key 1, accanto alla serie di asterischi che nascondono la prima Key, fare clic su Show.

Fare clic sull’icona “copia” (i due fogli sovrapposti) per memorizzare nella clipboard la chiave di accesso.

Avviare Notepad e incollare la chiave. Salvare il file per poterlo comodamente recuperare in un secondo tempo.

Aggiungere il Container Blob Storage a Veeam Backup & Replication

Come premesso, diamo per scontato che si disponga di una installazione di Veeam Backup & Replication v12.

Qualora occorra, è possibile scaricare una versione di prova valida 30 giorni da questo link: https://www.veeam.com/it/download-version.html.

Il nostro obiettivo è di aggiungere all’infrastruttura Veeam il Container Blob precedentemente creato configurandolo come repository immutabile, ovvero come target per i nostri backup con la garanzia che questi siano protetti da alterazioni o cancellazioni arbitrarie.

Accedere alla console di Veeam Backup & Replication v12.

Nella sezione Backup Infrastructure, fare clic con il tasto destro su Backup Repositories e selezionare Add backup repository.

Nella finestra Add Backup Repository, fare clic su Object Storage.

Nella pagina Object Storage, selezionare Microsoft Azure Storage.

Nella pagina Microsoft Azure Storage, selezionare Azure Blob Storage.

Nella schermata New Object Storage Repository, dare un nome al repository, ad esempio “Immutable Blob“. Opzionalmente, inserire una descrizione e poi fare clic su Next.

Nella pagina Account, fare clic su Add per aggiungere le informazioni che ci consentiranno di accedere al Container Blob su Azure.

Nella finestra di dialogo Credentials, nella casella di testo Account digitare il nome dello Storage Group e nella casella Shared Key incollare la chiave di accesso precedentemente salvata nel file NotePad. Poi fare clic su OK.

Tornati nella pagina Account, fare clic su Next. Per approfondire le opzioni di Connection Mode (che esulano da questa serie di articoli), si rimanda alla documentazione Veeam: https://helpcenter.veeam.com/docs/backup/vsphere/azure_repository_account.html?ver=120.

Nella pagina Container, verificare che sia stato automaticamente selezionato il Container Blob precedentemente creato. Poi fare clic su Browse.

Ora, dovremo creare una cartella in cui verranno salvati i nostri Backup.

Nella finestra di dialogo Select Folder fare clic su New Folder, dare un nome alla nuova cartella (ad esempio, “VMs“) e poi fare clic su OK.

Di nuovo nella pagina Container, selezionare l’opzione Make recent backups immutable for e specificare il numero di giorni di immutabilità dei backup. Ad esempio, specificando “30” si richiede che i dati di backup più recenti non possano essere cancellati o alterati per almeno 30 giorni.

Poi fare clic su Next.

Nella pagina Mount Server fare clic su Next (per maggiori informazioni sulle varie opzioni: https://helpcenter.veeam.com/docs/backup/vsphere/azure_storage_mount_server.html?ver=120).

Nella pagina Review fare clic su Apply.

Verificare che tutte le operazioni siano andate a buon fine, fare clic su Next e poi su Finish.

Il repository è configurato e pronto per ricevere i nostri backup.

Conclusioni

In questo primo articolo abbiamo visto come creare uno Storage Account e un Container Blob con funzionalità di “immutable storage” in una sottoscrizione Microsoft Azure.

Successivamente, abbiamo collegato la soluzione Veeam Backup & Replication a questo Container per utilizzarlo come repository per i nostri backup.

Nel prossimo articolo vedremo come creare job di backup per macchine virtuali e share di rete, per poi verificare l’efficacia dell’immutabilità del Container Blob contro i tentativi di cancellazione.