Soluzione 1:
Se stai eseguendo un backup ingenuo (copia singola, sovrascrittura di tutti i dati), non c'è modo di ottenere ciò che desideri:un utente malintenzionato può sempre "eseguire il backup" di una pila di file vuoti (o di un set di file vuoto) che si tradurrà in tutti i tuoi dati che vanno ciao ciao. Quindi, presumo qui che tu stia eseguendo backup di archivio corretti e che tu stia monitorando i tuoi backup abbastanza bene da rilevare qualsiasi tentativo di eliminare il backup inviando un set di backup vuoto prima che venga fatto qualsiasi danno permanente.
Se il tuo rsync-over-(presumibilmente)-SSH utilizza un comando forzato per eseguire rsync
sulla destinazione, allora sei il più sicuro possibile dall'eliminazione. Dal momento che vuoi eseguire solo uno specifico rsync
comando, puoi codificare tutti gli argomenti e quindi l'unica cosa che può fare è scrivere nuovi dati. L'archiviazione è abbastanza semplice eseguendo ogni volta il backup su un nuovo albero e associando i file non modificati al backup precedente utilizzando i collegamenti fisici, risparmiando spazio e tempo di trasferimento.
L'altro modo è utilizzare i pull backup, in cui il server di backup avvia e gestisce il rsync
operazione -- questo significa che la macchina client non ha nemmeno la capacità di eseguire un comando rsync limitato, il che significa che l'attaccante non ha il potere di eliminare i file.
Tutto ciò presuppone che il tuo server di backup sia sicuro. Se l'aggressore riesce ad accedervi tramite un altro mezzo, sei fregato indipendentemente da ciò che fai.
Soluzione 2:
La cosa più semplice sarebbe probabilmente andare dall'altra parte con i backup, ad es. estrarre dal server di backup. È così che eseguo i miei backup con rdiff-backup.
Soluzione 3:
Questa è una delle caratteristiche che mi piacciono del servizio di backup Tarsnap. Mi permette di creare sottochiavi con capacità di lettura, scrittura e/o cancellazione.
Sui miei server generalmente mantengo sottochiavi con capacità di lettura e scrittura. A volte, quando ho bisogno/voglio eliminare i vecchi archivi di backup, lo faccio utilizzando le chiavi principali del mio computer desktop locale.
Si noti che Tarsnap è di per sé un servizio di archiviazione. Non puoi utilizzare il software Tarsnap per creare backup sui tuoi server di archiviazione.
Soluzione 4:
Tenta di utilizzare un livello di filesystem di sola scrittura che mascheri la tua destinazione effettiva.
Ho trovato un esempio qui, usando FUSE.
Puoi anche utilizzare un file system crittografato in cui chiunque può scrivere, ma richiede che il tuo certificato chiave venga modificato (sembra l'opzione più sicura, anche se probabilmente richiede più pianificazione durante l'implementazione). Se procedi in questo modo, controlla WOCFS (Write Only filesystem crittografato) e TrueCrypt
Quindi, mentre la prima soluzione "maschererà" il tuo filesystem, che in realtà è memorizzato altrove all'interno della macchina e può essere modificato dagli utenti del sistema con i permessi, nella seconda soluzione può essere modificato solo con le chiavi appropriate.
Soluzione 5:
ftp:ad esempio vsftp ha un'opzione per disabilitare le eliminazioni in modo da poter solo caricare. Quindi, dall'altra parte, crei uno script che elimina i backup più vecchi di x giorni. Uso questa opzione, sul server principale i backup sono semplici backup che utilizzano tar+gz, vengono caricati su un server nas tramite sftp e quindi il server nas elimina backup più vecchi di 7 giorni.
rsync:il server rsync ha un'opzione per disabilitare le eliminazioni in modo che possa funzionare anche per te, ma devi usare rsync protocol/server.refuse options =delete
Ma poi dovresti eliminare manualmente i file 'cancella' una volta ogni tanto.