Menu Chiudi

Come installare e configurare un Rsync Server

Rsync server

Avere un servizio rsync sempre a disposizione nella propria LAN può essere molto utile per semplificare non poco i backup quotidiani dei dati dei PC e Workstation di lavoro. Soprattutto per i più pigri; ossia, per quelli che non fanno mai il backup perché la ritengono una cosa complicata, oppure noiosa o peggio ancora inutile; tra l’altro, questi sono poi i primi a lamentarsi quando qualcosa va storto e qualche file va perso.

Senza contare che fa bene anche al GDPR, il nuovo Regolamento sulla privacy, in quanto può essere facilmente adottato come sistema di backup dei dati nell’ambito della mitigazione del rischio.

Con un server rsync centralizzato tutto diventa ancora più semplice per gli utilizzatori, ma anche per l’amministratore, poiché tutti i backup sono in un unico contenitore e che quindi il tutto è più semplice da dimensionare e manutenere.

In questo sintetico tutorial ho cercato di descrivere come creare un server rsync con una distribuzione GNU Linux. In realtà sappiamo bene che non si può parlare di generica distribuzione Linux; è per questo che ho pensato di incentrare la discussione almeno su due diversi distribuzioni GNU Linux: CentOS 7 e Debian 9.

Non ultimo, la disponibilità di servizio rsync in contesti aziendali e/o professionali, si rivela di grande aiuto alla implementazione di criteri sulla sicurezza dei dati, tanto a cuore alle nuove normative sulla privacy, introdotte tramite l’ormai arcinoto GDPR.

Nota su questo Tutorial

Questo tutorial fa parte di un insieme di articoli che mirano a descrivere la preparazione di un server di Disaster Recovery per tutti i sistemi informatici presenti in azienda, così come richiesto dal RGPD, ossia il Regolamento Generale sulla Protezione dei Dati, forse meglio noto nella sua dicitura inglese: GDPR, ossia: General Data Protection Regulation.

Che cosa è Rsync ?

Rsync è un software Open Source per Unix/Linux che sincronizza file e cartelle da una elaboratore a un altro, minimizzando il trasferimento di dati utilizzando quando possibile la cosiddetta codifica delta, proprio per minimizzare e velocizzare i trasferimenti.

A dire il vero, Rsync è uno strumento talmente flessibile che relegarlo ad un semplice tool di sincronizzatore di file e cartelle sarebbe alquanto limitato. Ma proprio perché il suo “motore” fa proprio questo (sincronizzare dati) può assumere l’importante ruolo di Backup Server.

Rsync da il meglio di se lo quando lo si rende disponibile in una LAN, in modo che possa essere utilizzato per mantenere costantemente aggiornate le copie dei dati di tutti i computer dell’azienda, mantenendoli al sicuro in un filesystem centralizzato, che può essere anche (preferibilmente) criptato e messo al sicuro da eventuali malaugurati furti.

Perchè CentOS e Debian ?

Semplice. Perché sono le distribuzioni GNU Linux più utilizzate! Quale cosa migliore quindi che provare ad installarlo e configurarlo in questi due importanti ambienti?

In realtà moltissime delle distribuzioni GNU Linux sono derivare da Red Hat Enterprise© o da Debian, nonostante la distribuzione Suse in realtà sia una derivata di Slackware, ma questa è un’altra storia.

Tutto ciò, anche se, a dire il vero, per i nostri scopi, non ci sono poi così profonde differenze tra una distribuzione e l’altra. In fin dei conti si installano in modo molto simile e dal punto di vista dei client la differenza è del tutto irrilevante.

Comunque sia, poco importa con quale distribuzione GNU Linux viene realizzato un servizio rsync, l’essenziale è che questo prezioso strumento sia presente sempre e dovunque vi siano dati da tenere al sicuro da spiacevoli incidenti tecnici.

Leggi anche:   Come Sincronizzare l'orario di un Server CentOS 7 con ntp

Tuffiamoci finalmente nell’installazione e nella configurazione del servizio rsync.

Preliminari

Prima di proseguire con l’installazione e la configurazione del servizio rsync è utile dare qualche indicazione sull’ambiente.

Tanto per cominciare, Ho dato per scontato che la distribuzione Linux (CentOS o Debian, non ha importanza) sia comunque già installata, perfettamente funzionante e disponibile (raggiungibile) in rete.

In secondo luogo, è utile accennare che per la stesura di questo tutorial ho preventivamente installato 2 VM (Macchine Virtuali) eseguendo le configurazioni preliminari in un server CentOS 7 e di un server Debian 9, proprio come se fossero due server fisici.

Infine, anche se superfluo, visto che dovremo modificare alcuni file di configurazione dei servizi, sarà necessario utilizzare le credenziali dell’utente root.

Quindi è opportuno verificare ora se si dispone della password di root, oppure (ancora meglio) se lo user che stiamo utilizzando può utilizzare i comandi sudo.

L’utilizzo dell’account root è sempre da sconsigliare per una lunghissima serie di motivi. D di contro l’utilizzo di sudo è altamente più sicuro e flessibile.

Installazione il pacchetto Rsync ed attivazione del servizio

Qui di seguito faremo costantemente una distinzione nell’installazione sulle seguenti principali distribuzioni GNU Linux:

  • Debian (e sue derivate)
  • Red Hat (e sue derivate), in questo caso: CentOS

Con Debian e derivate

Prima di qualsiasi altra cosa, è bene partire con un sistema aggiornato, quindi sarà il caso di fare l’aggiornamento (update) di tutti i pacchetti già installati:

$ sudo apt-get update 
$ sudo apt-get install rsync --yes

Con CentOS

Prima di qualsiasi altra cosa, è bene partire con un sistema aggiornato, quindi sarà il caso di fare l’aggiornamento (update) di tutti i pacchetti già installati:

$ sudo yum update -y

ed eventualmente fare un reboot, se necessario.

Utilizzando yum, procedi con l’installazione del pacchetto rsync, ovviamente, se questo non è già stato preventivamente installato

$ sudo yum install rsync -y

Configurazione de servizio rsync

Da qui in poi, le cose da fare sono pressappoco uguali per tutte le distribuzioni Linux, solo con qualche minima differenza.

Configurazione dei valori di base di rsync

Prima di proseguire, è necessario sistemare il file dell’ambiente di base del demone di rsync.

Quindi:

con Debian:

$ sudo vi /etc/default/rsync

Con CentOS:

$ sudo vi /etc/sysconfig/rsyncd

In questo file, per entrambe le distribuzioni, verificare che siano impostate le seguenti variabili ed aggiungerle, se mancanti.

RSYNC_ENABLE=true
RSYNC_CONFIG_FILE=/etc/rsyncd.conf
RSYNC_OPTS='--port=873 --address=0.0.0.0'
RSYNC_NICE=’10’
RSYNC_IONICE=’-c3′

Salvare e chiudere il file.

Creazione delle directory contenitore

Dobbiamo ora creare le directory che conterranno i file dei Client, ogni qual volta che questi eseguiranno il backup dei dati su questo server centrale.

Per il nostro esempio, ho preventivamente creato tante cartelle quanti saranno i client che saranno autorizzati ad utilizzare questo server per le proprie sessioni di backup di salvataggio dati con rsync.

In questo modo, ogni client avrà una sua propria cartella privata contenente esclusivamente i file di backup di cui è effettivamente proprietario; così da evitare confusione.

Nella fattispecie e per facilità di utilizzo, le cartelle create avranno un nome riconducibile al nome del client proprietario dei file.

I nomi delle cartelle creati in questo tutorial di esempio saranno quindi: client_01, client_02 e client_03, utilizzando il seguente comando:

$ sudo mkdir -p \
/store_bck/rsync/client_01 \
/store_bck/rsync/client_02 \
/store_bck/rsync/client_03

Ovviamente, queste cartelle potranno anche chiamarsi Laptop_Dario, Computer_Maria e via discorrendo, così da essere più facilmente riconoscibili.

Leggi anche:   Come fare Cross Compile per Raspberry Pi con Ubuntu X86

Impostazione della configurazione di rsyncd.

Posto che alcune distribuzioni Linux potrebbero non predisporre un file di configurazione di base per il servizio rsync, va creato (nel caso non ci fosse, come nel caso di Debian) o modificato quello esistente (come nel caso di CentOS e derivate Red Hat©).

Per via di quello detto fin’ora, quelli che seguono sono i passi da seguire per l’attivazione del servizio rsync che mi sono riproposto di attivare.

1 – File di configurazione di rsync

Creazione e/o modifica del file di configurazione Quello mostrato qui sotto è un buon candidato ad essere file di configurazione rsync per gli obbiettivi che ci siamo proposti di raggiungere.

Apri il file con il tuo editor preferito:

$ sudo vi /etc/rsyncd.conf

e verifica che il suo contenuto corrisponda più o meno quello riportato qui sotto:

# File: /etc/rsyncd: configuration file for rsync daemon mode
#  See rsyncd.conf man page for more options.
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
use chroot = yes
uid = root
gid = root
secrets file = /etc/rsyncd.strict
strict modes = yes
[client_01]
         path = /store_bck/rsync/client_01
         comment = rsync storage for client name client_01
         read only = no
         list = yes
         auth users = client01
         hosts allow = 192.168.0.0/24
         transfer logging = no
[client_02]
         path = /store_bck/rsync/client_02
         comment = rsync storage for client name client_02
         read only = no
         list = yes
         auth users = client02
         hosts allow = 192.168.0.0/24
         transfer logging = no

Per maggiori informazioni, suggerisco di leggere le man pages:

$ man rsyncd.conf

2 – file /etc/rsyncd.strict di rsync

Aggiungi, nel file /etc/rsyncd.strict, tutti gli username e le relative password (uno per riga), nel formato username:password, come descritto nelle man pages: rsyncd.conf(5).

Nell’esempio qui sotto, una semplice definizione degli username e delle password per i moduli degli utenti definiti più sopra.

Apri quindi il file /etc/rsyncd.strict con il tuo editor preferito:

$ sudo vi /etc/rsyncd.strict

e verifica che il suo contenuto sia più o meno questo:

# Rsync secret file: /etc/rsyncd.strict
# This file must contains username and password for the rsync modules defined in /etc/  rsyncd.conf.
# Please remember that is 'strict modes' is on, then it must be chown to root and chmod 600
#
client01:pwdclient01
client02:pwdclient02

Permessi del file /etc/rsyncd.strict

Attenzione. questo file deve avere permessi 600 e deve essere proprietario l’utente root, altrimenti verrà completamente ignorato, con ovvi problemi di autenticazione.

Quindi….

$ sudo chmod 600 /etc/rsyncd.strict

Servizio rsync

Verica che il servizio rsync sia abilitato ed attivo.

Qui un altro “distinguo” tra CentOS e Debian, in quanto per CentOS il servizio si chiama rsyncd, mentre per Debian si chiama semplicemente rsync.

Con Debian
$ sudo systemctl is-enabled rsync.service
$ sudo systemctl is-active rsync.service
Con CentOS
$ sudo systemctl is-enabled rsyncd.service
$ sudo systemctl is-active rsyncd.service

Abilitazione ed avvio del servizio rsync

Nel caso non sia abilitato all’avvio del sistema e/o non attivo, attivare il servizio per l’avvio allo startup dl sistema ed avviarlo subito.

Anche in questo caso i comendi sarnno leggermente differenti tra Debian e CntOS:

Con Debian
$ sudo systemctl enable rsync.service
$ sudo systemctl start rsync.service
Con CentOS
$ sudo systemctl enable rsyncd.service
$ sudo systemctl start rsyncd.service

Fin qui tutto ciò che riguarda il servizio Rync, ma potresti ancora non poter accedere al servizio per una serie di motivi, non ultimo il firewall.

Continua a seguirmi.

Abilitazione firewall interno

Per copersi successivamente connettere con un qualsiasi client al servizio rsyncd, è indispensabile abilitare la porta rsync (TCP/873) del firewall interno del sistema.

Se nel sistema è in esecuzione il servizio firewalld, o qualsiasi altro servizio di firewall, è sicuramente il caso aprire la porta TCP/873 per consentire l’accesso al servizio.

Leggi anche:   Come installare MySQL in Windows 10

Per aprire la porta TCP/873 per l’accesso dall’esterno al nostro servizio rsyncd, utilizzare i comandi del firewall del sistema come segue:

Su Debian (con UFW)

Partendo da una condizione nella quale il firewall UFW viene attivato ora per la prima volta, i seguenti comandi son tutto quanto è necessario per abilitare il traffico IP in entrata ed in uscita sulle porte comunemente utilizzate.

1 – Abilito le policy di base

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

2 – Apri in modo permanente la porta TCP 873 del firewall ed alte porte utili

$ sudo ufw allow ssh       # Permetti ssh in ingresso
$ sudo ufw allow www # Permetti www in ingresso
$ sudo ufw allow 873/tcp # Permetti rsync in ingresso

3 – Abilito il firewall

$ sudo ufw enable

Su CentOS (con firewalld)

1 – Mostra la zona attiva del firewall, con il seguente comando

# firewall-cmd --get-active-zones

2 – Apri in modo permanente la porta TCP 873 del firewall

# firewall-cmd --zone=public --add-port=873/tcp --permanent

3 – Ricarica le regole del firewall

# firewall-cmd --reload

Su Debian e CentOS senza Firewall

Se invece il sistema è protetto semplicemente da iptables, allora è necessario aggiungere le istruzioni opportune per l’apertura della porta 873/tcp direttamente da linea di comando, come questa:

# iptables -I INPUT -p tcp -m multiport --dports 873 -j ACCEPT

Infine, se non è presente alcun firewall, non è necessaria nessuna azione. Anche se una macchina senza firewall è assolutamente la cosa più insicura che si può immaginare per lo scopo di questo tutorial tutto dovrebbe funzionare comunque.

Pronti? Via!

Siamo finalmente pronti per avviare il nostro primo trasferimento di prova con rsync.

Da un nostro client Linux esterno possiamo finalmente provare a lanciare il nostro backup di file e cartelle con un comando simile a questo:

$ rsync -avz --numeric-ids --delete --stats  [source_dir] client01@192.168.0.92::client_01

Ovvio che al comando suggerito dovrai sostituire [source_dir] con il percorso della cartella che che desideri salvare.

Logicamente, dovrai tener presente che la prima volta lancerai questo comando ci metterà un sacco di tempo per completare il trasferimento; il che dipende da quanti file, cartelle e dalle dimensioni totali (in termini di Mega/Giga/Tera bytes) dei tuoi files.

Al contrario, tutte le volte successive che lancerai questo comando, il tempo di esecuzione per il trasferimento sarà più breve, poiché verranno effettivamente trasferite solo le differenze dei file che nel frattempo avranno subito un qualche tipo di modifica.

In Conclusione

Installare e configurare un server Rsync è un task relativamente semplice ed alla portata di chiunque abbia un minimo di dimestichezza con i sistemi GNU Linux.

Con il tuo Server Rsync disponibile tua rete aziendale o del tuo ufficio mantenere una copia consistente dei dati delle postazioni di lavoro di tutti i dipendenti è davvero un gioco da ragazzi. Senza contare che i backup dei dati di ogni singolo PC può essere totalmente trasparente per l’utente, in quanto può essere attivato a tempo con l’aiuto dello scheduler cron di Linux o della Utilità di pianificazione di Windows.

Il presupposto iniziale di questo sintetico tutorial fa riferimento, per semplicità ad un Server Rsync da mettere nella LAN, che sia aziendale o dell’ufficio; ma nulla vieta di implementarlo, con i dovuti accorgimenti, anche come Cloud Backup Server.

Condividi

Disclaimer

Questa pagina potrebbe contenere link di affiliazione. Gli acquisti o gli ordini che effettuerai tramite tali link possono generare commissioni che ci aiutano a sostenere questo sito web.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente.