Ricerca nel sito web

Come proteggere Rsync


Utility nell'azienda

I moderni data center aziendali sono un complesso mix di tecnologie diverse orientate al raggiungimento degli obiettivi aziendali. Alcune di queste tecnologie sono soluzioni aziendali costose e di grandi nomi, ma altre sono semplici strumenti e utilità che facilitano i processi. Gli amministratori di sistema Linux utilizzano rsync (sincronizzazione remota) per spostare e rispecchiare i file da due decenni, anche se le versioni di esso ora funzionano su quasi tutte le piattaforme. La sua struttura leggera, l'ingombro ridotto e l'usabilità lo rendono una buona scelta per semplici operazioni di copia dei file. Ma questo stesso asset è anche una passività per molte utility: progettate esclusivamente per la funzionalità, potrebbero non tenere automaticamente conto dei potenziali rischi per i dati aziendali. Utilizzare con successo rsync in azienda significa proteggere i dati che vengono trasferiti attraverso di esso dall'esposizione accidentale.

Informazioni su Rsync

Uno dei grandi vantaggi di rsync rispetto ad altre utility simili è che è in grado di trasferire facilmente solo il delta tra i sistemi. Ad esempio, se si configura rsync su un file server e si connette un server di backup come mirror, la sincronizzazione iniziale sposterà ogni file nel percorso specificato. Dopo la prima sincronizzazione, rsync sposterà solo le modifiche, mantenendo il mirror identico al server primario e riducendo al minimo il traffico di rete. Questo tipo di procedura di copia dei file è estremamente comune per la maggior parte delle organizzazioni e, senza linee guida per il processo, le tecniche e le utilità variano notevolmente tra i singoli amministratori.

Nonostante la sua struttura compatta, rsync dispone di opzioni di sicurezza in grado di proteggere i dati che trasferisce. Ma come molti strumenti ridotti, non li invoca per impostazione predefinita e l'onere quindi spetta alla persona che lo configura per configurarlo in modo sicuro.

Perché è importante

Esposizione dei dati

Le utility sono indipendenti dai dati. Non distinguono il sensibile dal non sensibile, e non separano il pericoloso dall'innocuo. Fanno solo quello che gli dici e, nel caso della maggior parte delle utility basate su Linux, solo esattamente quello che dici loro. Quando rsync viene utilizzato da aziende, governi e altre grandi organizzazioni, i file trasferiti possono contenere informazioni estremamente sensibili. Sebbene rsync possa spostare questi file come se contenessero parole senza senso, il rischio per l'azienda può essere grave se tali informazioni trapelano.

L'esposizione dei dati è diventata un importante rischio aziendale e le organizzazioni che hanno subito una tale perdita hanno dovuto sopportare i danni finanziari e reputazionali associati. Rsync può essere una potente utility per il mirroring o il trasferimento di file semplici, ma il livello di cura prestato per configurarlo dovrebbe essere commisurato alla sensibilità dei dati trasmessi.

Configurazioni importanti

Rsync contro Rsyncd

Prima di addentrarci nelle configurazioni stesse, è importante notare che ci sono due modi diversi per utilizzare rsync. Uno è un'utilità della riga di comando in cui tutti i dettagli vengono passati come variabili di argomento, questo è rsync. La versione demonizzata di rsync è nota come rsyncd e ascolta su una porta designata come servizio. Rsyncd si basa su rsyncd.conf per le sue configurazioni, dove ogni percorso di sincronizzazione ha il proprio blocco di opzioni. Rsyncd è il vettore per l'esposizione dei dati che coinvolgono rsync, in quanto può essere aperto da una terza parte anonima senza la protezione adeguata. Per i nostri scopi, ci concentreremo su rsyncd, che è il modo più comune in cui rsync viene utilizzato su larga scala.

Rsyncd.conf

Il demone rsync dipende da rsyncd.conf per la sua autenticazione, accesso, registrazione e moduli disponibili. In modalità servizio, rsync può fornire dettagli per molti percorsi di sincronizzazione diversi. Le organizzazioni che si affidano a rsync possono scoprire che questi percorsi si accumulano nel tempo. Poiché ogni percorso richiede una configurazione separata, è facile che uno cada nelle fessure e ometta una direttiva importante.

Esempio rsyncd.conf

file pid=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
file di log=/var/log/rsync.log
porta=12000

[file]
path=/var/storage/
comment=Timeout del file server
primario=300

Nella sua forma più semplice, il file rsync.conf dichiara i seguenti parametri globali:

  • Percorso del file ID processo: necessario per l'esecuzione del daemon
  • Blocca il percorso del file: necessario per l'esecuzione del demone
  • Percorso del file di registro: importante per la gestione degli errori, il monitoraggio del servizio e la risoluzione dei problemi
  • Porta per l'ascolto - La porta rsync predefinita è 873, ma può essere sovrascritta qui

Esistono altre opzioni globali, come specificare l'indirizzo IP su cui ascoltare, opzioni avanzate di socket e la possibilità di inviare un messaggio del giorno (MOTD), essenzialmente un banner di servizio, agli utenti del servizio rsync.

Inoltre, può includere un numero qualsiasi di "moduli" o percorsi di file da sincronizzare. Nell'esempio precedente, il nostro blocco [files] denota l'unico modulo per questo sistema. In questo modulo è possibile impostare molte direttive. I più importanti tra questi sono:

  • Percorso: questo è il percorso che verrà sincronizzato. Notare la barra finale in avanti nel percorso /var/storage/. Ciò indica che il contenuto di questa cartella, e non la cartella stessa, verrà sincronizzato. Senza la barra finale, rsync posizionerà una copia della cartella all'interno della destinazione, invece di copiare semplicemente il contenuto.
  • Timeout - La cifra qui viene calcolata con i secondi come unità. Aiuta a prevenire che le connessioni embrionali inondino il server.
  • Sola lettura/Solo scrittura: questi parametri limitano l'accesso in base alla funzione. La sola lettura consente solo i download, mentre la sola scrittura consente solo i caricamenti.
  • Numero massimo di connessioni: per impostazione predefinita questa opzione è impostata su 0, il che significa connessioni illimitate, ma occasionalmente è necessario limitare le connessioni per le prestazioni o la protezione da attacchi di tipo Denial of Service.
  • Include/Exclude - Questi parametri consentono a rsync di agire in modo più granulare all'interno del percorso specificato, escludendo file e directory e consentendo l'inclusione di file specifici da tali esclusioni.
  • chmod in entrata/uscita - I parametri chmod consentono a rsync di impostare ACL sui file durante il processo di trasferimento. Questo può essere fondamentale quando l'origine e la destinazione devono avere set di autorizzazioni diversi.

Tuttavia, le direttive che stabiliscono la sicurezza sono ancora più importanti. Poiché rsync è un'utilità snella, nessuna di esse è attivata per impostazione predefinita. Ciò richiede agli amministratori di comprendere e convalidare le configurazioni del modulo rsync al fine di limitare correttamente l'accesso alle informazioni che gestiscono. Diamo un'occhiata a ciascuno di essi in dettaglio.

Lista

L'opzione list permette a rsync di "nascondere" un modulo a chiunque non sappia cosa sta cercando. Quando viene interrogato il demone rsync per i moduli disponibili, quelli impostati su list=false verranno omessi dai risultati. Sebbene questo tipo di sicurezza attraverso l'oscurità non sia sufficiente da solo, è un livello aggiuntivo che puoi aggiungere per proteggere i percorsi dei file particolarmente sensibili. Per impostazione predefinita, i moduli possono essere elencati, pertanto questo parametro deve essere impostato in modo esplicito su false per i moduli nascosti.

List=false
Il modulo non è visibile nell'elenco del demone ed è necessario accedervi direttamente.

Impostazione predefinita: True. Il modulo sarà visibile.

Consenti/Nega host

Il modo più semplice per proteggere i moduli rsync dall'esposizione accidentale è quello di limitare le macchine esterne che possono comunicare con essi. Utilizzando le direttive hosts allow e hosts deny, rsync può creare una policy di privilegio minimo consentendo solo quei client necessari per gli obiettivi aziendali. Con gli host consentiti, tutti gli IP di origine non specificati verranno disabilitati automaticamente. Questo restringe drasticamente la superficie di attacco del server rsync e dovrebbe essere sempre stabilito anche per le informazioni un po' sensibili. Gli host negano possono bloccare indirizzi IP specifici, offrendo un'ulteriore granularità di accesso a un intervallo di IP consentito.

Gli host negano [indirizzo IP, intervallo IP, nome host]
I client specificati verranno bloccati. Tutti gli altri saranno consentiti, a meno che la direttiva hosts allow non sia in uso, nel qual caso devono essere specificati anche lì.

Impostazione predefinita: tutti gli host sono consentiti.

Se utilizzata in combinazione, la direttiva hosts allow viene letta per prima. Se il client è consentito, viene letta la direttiva hosts deny. Se un client corrisponde a tale posizione, gli viene negato l'accesso, anche se specificato nell'elenco Consenti.

Utenti di autenticazione e file dei segreti

Le restrizioni IP e del nome host restringono la superficie di attacco in base al dispositivo, ma qualsiasi utente su tali dispositivi autorizzati sarà in grado di accedere al modulo rsync. La direttiva auth users restringe la superficie di attacco in base all'utente, limitando l'accesso solo agli account specificati, indipendentemente dal dispositivo. Quando l'autenticazione degli utenti è abilitata e viene fornito un elenco di nomi utente, solo quegli utenti possono connettersi al demone rsync.

La direttiva auth users si basa su un file "secrets", ad esempio /etc/rsyncd/rsyncd.secrets. Questo file contiene le combinazioni di nome utente e password per gli account rsync. È fondamentale notare che il file dei segreti è memorizzato in testo normale, comprese le password. Ciò significa che il file deve essere fortemente limitato.

Se la direttiva auth users è assente, l'impostazione predefinita è quella di consentire tutti gli utenti. E proprio così, se il tuo server rsync è disponibile da Internet, hai una perdita di dati. Il punto più importante da ricordare quando si crea una configurazione rsync sicura è che, per impostazione predefinita, chiunque può accedere al percorso. La mancata configurazione corretta delle impostazioni di autorizzazione/negazione degli utenti e degli host di autenticazione trasforma tutti i dati sincronizzati in una pagina Web pubblica. Chiunque trovi il server rsync può estrarre il contenuto in modo anonimo, senza bisogno di una password. Per inciso, trovare host rsync esposti a Internet è banale quando viene utilizzata la porta predefinita. Si consiglia sempre di limitare l'accesso a rsync da parte dell'utente e del dispositivo. Ogni livello riduce il rischio di esposizione dei dati.

File dei segreti /etc/rsyncd/rsyncd.secrets
Specifica la posizione delle combinazioni di nome utente e password utilizzate dalla direttiva auth users.

Impostazione predefinita: Nessuno. Deve essere utilizzato insieme agli utenti di autenticazione.

Modalità rigorose

>

Avere un file di testo semplice con nomi utente e password, come quello del file "secrets" di rsync, non è una grande idea. Questo illustra i rischi dell'utilizzo di rsync in azienda, che le aziende devono essere disposte a correre per utilizzare le sue funzionalità. Tuttavia, esiste un'altra direttiva, chiamata modalità rigorose, che può compensare il rischio che il file dei segreti venga compromesso in una certa misura. Le modalità rigorose verificano che il file dei segreti sia accessibile solo dall'account con cui è in esecuzione il demone rsync. Ad esempio, se rsyncd è in esecuzione sotto il nostro utente rsync dedicato (come dovrebbe, con privilegi minimi), allora solo l'utente rsync dovrebbe avere accesso per leggere il file dei segreti. Il demone controlla i permessi del file e non verrà eseguito a meno che non siano corretti. Questa è una bella conferma aggiuntiva che le password in testo normale nel file dei segreti non saranno accessibili da utenti non autorizzati.

Detto questo, la maggior parte della tecnologia di classe enterprise non memorizzerebbe mai le password non crittografate in un file di testo. Si tratta di una differenza qualitativa tra strumenti orientati alla massima funzionalità e piattaforme progettate pensando ai rischi aziendali. Tuttavia, con la cura adeguata, anche rsync può essere protetto abbastanza bene contro l'accesso accidentale e dannoso.

Modalità rigorose=false (impostazione predefinita)
Il file dei segreti non verrà controllato per le autorizzazioni appropriate.

Impostazione predefinita: False. Il file dei segreti non verrà controllato a meno che gli utenti di autenticazione, il file dei segreti e le modalità rigorose non siano abilitati.

Codifica

La crittografia è un'area in cui rsync e rsyncd differiscono notevolmente. Quando rsync viene utilizzato sulla riga di comando, è necessario specificare un protocollo separato, solitamente SSH, per il trasferimento. Tuttavia, il daemon rsync non crittografa il traffico. Ciò significa che un processo rsync può potenzialmente essere sniffato in transito da una terza parte, garantendo loro l'accesso a qualsiasi informazione venga trasferita. Pertanto, le operazioni rsync che avvengono apertamente su Internet sono estremamente vulnerabili all'esposizione dei dati.

Tutto il traffico rsyncd deve avvenire all'interno di una rete Intranet protetta o all'interno di un tunnel crittografato o VPN. A livello aziendale, non ci sono scuse per il passaggio di dati non crittografati attraverso la rete. Anche le soluzioni alternative per la copia semplice dei file, come SCP e SFTP, supportano la crittografia integrata.

Impostazione predefinita: non crittografato su rsyncd.

Porta aperta

Se rsync è aperto alla rete, chiunque esegua la scansione del server troverà una porta aperta. Cambiare la porta da 873 nel file rsyncd.conf può aiutare a offuscare questo, ma alla fine se la porta rsync è esposta, qualcuno alla fine la troverà e vedrà cosa può fare. Come qualsiasi servizio aziendale, l'accesso alla porta rsync dovrebbe essere limitato. Gli ACL del firewall possono bloccare gli IP di origine non autorizzati, in modo molto simile alle direttive di autorizzazione e negazione degli host in rsync stesso.

Considera le operazioni eseguite da rsync. I dati copiati sono importanti? Se è così, internet che si affaccia su rsync è un enorme vettore di rischio, e anche con un'attenta configurazione può rivelarsi pericoloso nel tempo.

Impostazione predefinita: Porta 837.

Conclusione

La creazione di una configurazione rsync sicura per le operazioni aziendali richiede l'applicazione di più livelli di protezione, ognuno dei quali aiuta a ridurre al minimo la superficie del demone e a limitare le connessioni remote a cui sarà consentito l'accesso.

  • Consenti solo gli host remoti e gli account utente necessari
  • Applicare modalità rigorose per convalidare l'accesso ai file segreti
  • Crittografa tutte le trasmissioni rsync attraverso un tunnel o limitale a una intranet

Seguendo queste tre regole su ogni modulo rsync, è possibile ridurre significativamente le possibilità di esposizione dei dati basati su rsync, consentendo di sfruttare le funzionalità di rsync senza soccombere ai suoi rischi. Ma che si tratti di una piattaforma aziendale o di una semplice utility, le configurazioni errate saranno il rischio numero uno. Le persone commettono errori in continuazione e, senza i giusti controlli dei processi, questi errori possono ripresentarsi come una violazione dei dati o un'interruzione grave. È divertente parlare di exploit 0-day e metodi di hacking fantasiosi, ma un server rsync non protetto è molto più probabile e altrettanto pericoloso.

Articoli correlati