Rsync è un tool open source che consente di effettuare in maniera semplice ed efficiente il backup dei dati sincronizzando i file e le cartelle tra la directory sorgente e la directory di destinazione, sia in locale che in remoto.
In un precedente articolo abbiamo visto come usarlo per creare backup dati sincronizzati in cartelle locali e remote, che rappresenta la prima “politica informatica” per salvaguardare il patrimonio informativo aziendale. Tra le varie caratteristiche avanzate, però, Rsync consente anche di “integrare la crittografia” espletando in modo sequenziale i comandi da eseguire attraverso il sottosistema di Windows per Linux WSL (presente nei nuovi sistemi operativi Microsoft) per protegge i nostri dati.
Una delle soluzioni software che ci consente di eseguire il criptaggio dei dati in modo professionale e nello stesso tempo gratuito è lo strumento GnuPG. Vedremo, quindi, come mettere in sicurezza le nostre copie di backup utilizzando questo strumento open source prima salvando il file criptato generato su un sistema remoto caratterizzato dalla piattaforma Linux; successivamente, attraverso una nuova attività da “Utilità di pianificazione” del nostro sistema Windows, invieremo in modo periodico il file da salvare su un altro disco locale della macchina.
Backup dei dati: cos’è, a cosa serve e le soluzioni per farlo, anche sul cloud
Indice degli argomenti
Prerequisiti per creare un sistema di backup criptato da WSL
La realizzazione del nostro progetto richiede un minimo di competenze ICT e un sistema hardware e software adeguato. In particolare, i prerequisiti per creare un sistema di backup criptato da WSL sono:
- competenze ICT (utilizzate negli esempi successivi):
- conoscenze basilari di amministrazione della piattaforma Linux Debian, nello specifico del sottosistema Windows per Linux WSL;
- conoscenze basilari sulle reti (locali e remote) e sull’utilizzo SSH;
- conoscenze basilari sull’utilizzo dei sistemi operativi Microsoft;
- conoscenze basilari sull’utilizzo dei software di virtualizzazione;
- conoscenze basilari sull’utilizzo della shell di comandi multipiattaforma PowerShell.
- hardware e software:
- almeno due macchine (è preferibile usare macchine virtuali per effettuare tutte le prove possibili prima di passare alle macchine reali) dove sono presenti in una (per la versione WSL 2) Windows 10 (versione 1903 o successive, con build 18362 o successive, per sistemi x64), Windows 11 o Windows Server 2019 e nell’altra un sistema operativo Linux Debian (per il test di invio file criptati con rsync) o distribuzioni Linux da esso derivate (ottimale se al posto di questo sistema si usi un NAS che usualmente è gestito da piattaforma Linux). L’architettura di sistema per le macchine virtuali consigliato è il seguente: AMD64 con 1 CPU (se possibile meglio 2), RAM almeno 4 GB e 50 GB di hard disk, mentre per il computer che ospita le macchine virtuali suggeriamo almeno 16 GB di RAM e un disco SSD da almeno 240 GB;
- essere in grado di accedere come amministratore nel sistema operativo della macchina sorgente e di quella destinazione (che siano virtuali o reali);
- possibilità di accedere attraverso SSH sui computer di destinazione.
Backup con Rsync: perché usare la crittografia
Nel nostro mondo digitale, siamo costantemente connessi ad internet e ne utilizziamo gli infiniti servizi sia per lavoro che per uso privato. L’essere sempre attivi “in rete” ci espone ad alcuni rischi dovuti sia alle vulnerabilità presenti nei software che utilizziamo quotidianamente (che man mano sono rilevate e risolte), che alle persone (o gruppi di persone) malintenzionate che attraverso le loro competenze informatiche tentano di accedere ai nostri sistemi e di conseguenza ai nostri dati.
È essenziale quanto necessario un sistema che ci consenta di proteggere i nostri dati evitando le intrusioni e, nel caso in cui se ne verifichi una, di garantire che i dati prelevati non possano essere letti (o meglio compresi).
La crittografia trasforma i nostri dati secondo una codifica e li rende leggibili solo agli utenti che sono abilitati a comprenderla (attraverso il processo di decrittazione).
Come installare lo strumento per la crittografia GnuPG
GnuPG o GPG (GNU Privacy Guard) è un tool gratuito dedicato alla crittografia rilasciato sotto licenza GPL e sviluppato dalla FSF (Free Software Foundation) che consente, attraverso la programmazione da riga di comando (e per la massima ottimizzazione, inserendolo nel codice di uno script), di effettuare in modo snello (anche in termini di manutenzione, nel caso sia necessaria la modifica della configurazione dei device e/o delle persone che devono usare i dati) la crittografia e decrittografia dei file integrando il processo di backup sia in locale che in remoto.
Per installare questo strumento, lanciamo il comando:
sudo apt install gnupg
Terminata l’installazione, andremo a generare una coppia di chiavi da utilizzare per applicare la crittografia ai nostri backup.
Inseriamo il comando:
gpg –gen-key
Nel momento in cui è richiesto inseriamo un nome per l’utente a cui assegnare le chiavi. In questo esempio utilizzeremo il nome utente “backup”. Se vogliamo, indichiamo un indirizzo e-mail (per il nostro uso non sarà comunque necessario) e confermiamo con “o”.
Immettiamo la password per proteggere la nostra chiave. Questa sarà necessaria in fase di restore del backup: scegliamone una sicura e impegniamoci a non dimenticarla. Successivamente è necessaria la conferma in modo da garantire che quella inserita sia la password corretta scelta.
Verrà avviata la generazione delle chiavi e al termine di questa procedura, ci verrà notificato su display la posizione di archiviazione delle chiavi create e un riepilogo delle configurazioni applicate.
Testiamo la nostra chiave. Con GPG è possibile criptare esclusivamente file e non cartelle. Andremo quindi a creare un archivio delle cartelle di cui effettuare un backup con tar. Creiamo il file di archivio “origine.tar.gz” della cartella “origine”:
tar -czf origine.tar.gz origine
Procediamo ora al criptaggio del file appena generato utilizzando GnuPG. La sintassi del comando prevede che venga indicata la chiave da utilizzare (nel nostro esempio “backup”) e il file da criptare (origine.tar.gz). Utilizzeremo le opzioni -e (per criptare i dati) e -r (per specificare l’utente di cui utilizzeremo la chiave):
gpg -er backup origine.tar.gz
Abbiamo creato il file criptato origine.tar.gz.gpg.
Per effettuare il restore in modo da verificare il corretto funzionamento del processo e allo stesso tempo della chiave, lanciamo il comando:
gpg origine.tar.gz.gpg
Inseriamo la password della chiave quando richiesta.
Per poter decriptare i nostri file di backup su un host remoto, dovremo importare la secret key. Esportiamola con il comando:
gpg –export-secret-keys backup >chiave.key
Trasferiamo la secret key sull’host remoto utilizzando rsync:
rsync -a chiave.key server@172.20.154.165:~
Importiamo, nell’host remoto, la chiave trasferita:
gpg –import chiave.key
Trasferendo il nostro file criptato sull’host remoto, saremo ora in grado di decriptarlo:
client@computer:~$ rsync -a origine.tar.gz.gpg server@172.20.154.165:~
Sull’host remoto lanciamo il comando:
gpg origine.tar.gz.gpg
Inseriamo la password di criptaggio e avremo così decriptato il nostro file.
Backup con Rsync: perché utilizzare WSL
Grazie al sottosistema Linux integrato nelle nuove piattaforme Microsoft utilizzeremo rsync per creare procedure di backup.
Potremo quindi sfruttare l’enorme potenzialità dei tool presenti negli ambienti Linux anche se il nostro personal computer utilizza Windows e allo stesso tempo, interagire tra i due sistemi realizzando operazioni pianificate per raggiungere i nostri obiettivi.
Pianificare un backup criptato con rsync dall’ambiente WSL
Il primo passo sarà installare il sottosistema Linux utilizzando la PowerShell. Più nello specifico, procederemo all’abilitazione di WSL 1, per poi aggiornarlo a WSL 2. Per la fase di installazione dovremo essere in possesso dei i privilegi di amministrazione.
Avviamo PowerShell come amministratore.
Eseguiamo il comando:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Questo comando, quando inviato, ci consentirà di attivare la funzionalità WSL 1 sulla nostra macchina. Al termine della procedura di attivazione, il prompt mostrerà il messaggio “Operazione Completata”.
Procediamo ora all’aggiornamento a WSL 2. Questa funzionalità in Windows 10 è disponibile solo dalla versione 1903 con Build 18362 o successiva. È possibile verificare la versione di Windows 10 dalla schermata “Sistema”, raggiungibile seguendo il percorso “Start > Sistema Windows > Pannello di controllo > Sistemi e sicurezza > Sistema”, nella sezione “Specifiche Windows”. In alternativa, lanciamo “Esegui” (Tasto Windows + R) e digitiamo “winver” dando, infine, l’invio.
Dopo aver verificato la versione di Windows, abilitiamo la funzionalità Virtual Machine Platform, lanciando da PowerShell il comando:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Anche in questo caso, il messaggio “Operazione Completata” ci notificherà che l’attivazione della funzionalità è avvenuta con successo.
Per ultimare l’attivazione di WSL 2, riavviamo la macchina.
Scarichiamo il pacchetto di aggiornamento del kernel Linux e avviamone l’installazione con privilegi di amministratore.
Impostiamo WSL 2 come versione predefinita delle installazioni delle distribuzioni Linux, lanciando da PowerShell, il comando:
wsl –set-default-version 2
Installiamo infine la distribuzione Linux sulla nostra macchina. In questo esempio utilizzeremo una distribuzione Debian anche se sono disponibili diverse distribuzioni (Ubuntu, openSUSE, Kali, Fedora).
Avviamo il Microsoft Store e, utilizzando la barra di ricerca, scriviamo “Debian” e diamo l’invio.
Clicchiamo su “Ottieni” e poi su “Installa” per avviare il download e l’installazione della distribuzione.
Cliccando sul tasto “Start” vedremo che la distribuzione risulta installata. Al primo avvio verranno avviate le procedure preliminari post installazione (queste potrebbero durare anche alcuni minuti). Al termine di questa fase preliminare. Ci verrà chiesto di inserire l’username e la password del nostro nuovo utente Linux (in questo esempio, creeremo l’utente “wsl”).
Avremo così ultimato l’installazione di WSL 2 su Windows 10.
Utilizziamo Rsync
Installiamo rsync come visto nell’articolo precedente.
In questo esempio effettueremo una copia specchiata su un disco installato su Windows.
Da WSL è possibile raggiungere i dischi installati attraverso il percorso /mnt/LETTERA_DISCO. Ad esempio, per accedere alla partizione G:, lanceremo il comando:
cd /mnt/g
Supponiamo ora di voler creare un backup della cartella Documenti (/mnt/c/Users/NOMEUTENTE/Documents/) nella partizione G:.
Lanciamo il comando per creare la copia specchiata:
sudo rsync -av /mnt/c/Users/NOMEUTENTE/Documents /mnt/g/copia_di_backup
Pianifichiamo il processo di backup
Per pianificare il backup non potremo avvalerci di crontab, in quanto WSL non viene eseguito all’avvio di Windows. Utilizzeremo quindi dell’utilità di pianificazione.
Richiamiamo “Esegui” (Windows + R) e avviamo “taskschd.msc”.
Selezioniamo nel pannello “Azioni” la voce “Crea attività”.
Nella scheda “Generale” inseriamo il nome della nostra pianificazione (in questo esempio “Backup”).
Passiamo alla scheda “Attivazione”. Da qui potremo indicare quando avviare la procedura di backup. Clicchiamo su “Nuovo” e impostiamo la schedulazione. In questo esempio avvieremo il backup ogni giorno alle 15.
Clicchiamo su OK e spostiamoci alla scheda “Azioni” che ci consentirà di impostare il programma da avviare e il comando da eseguire.
Inseriamo quindi nella casella “Programmi o script” wsl.exe e in “Argomenti” il comando rsync da avviare “sudo rsync -aq /mnt/c/Users/NOMEUTENTE/Documents /mnt/g/copia_di_backup”.
Confermiamo la configurazione cliccando su “Ok”.
Cliccando nuovamente su “Ok” confermeremo la creazione della pianificazione e termineremo la configurazione della nostra procedura di backup.
Per evitare che la richiesta di inserimento di una password possa bloccare la procedura di backup, andremo a creare, in Debian, un file all’interno della cartella /etc/sudoers.d, impostando una nuova regola di autorizzazione.
sudo nano /etc/sudoers.d/NOMEFILE
In questo file indicheremo il nome utente (nel nostro caso “wsl”) e gli assoceremo la regola ALL=(ALL) NOPASSWD:ALL.
Abbiamo così terminato la configurazione della nostra procedura di backup con il sottosistema Linux.
Conclusione
Consigliamo di utilizzare le tecniche sopra citate per proteggere in modo sicuro i vostri dati ed eseguire backup programmati in modo automatico.
Sarebbe ottimale per ridurre il numero di vulnerabilità presenti sui sistemi operativi e sugli applicativi da noi utilizzati, la verifica costante di possibili aggiornamenti disponibili, ed eseguire gli upgrade fino all’ultima release.