Αντίγραφα ασφαλείας server: ο κανόνας 3-2-1 και πώς γίνεται η επαναφορά
Ο κανόνας 3-2-1 λέει: κρατήστε τρία αντίγραφα των σημαντικών δεδομένων σας (το πρωτότυπο και δύο αντίγραφα ασφαλείας), σε δύο διαφορετικά είδη αποθήκευσης, με τουλάχιστον ένα αντίγραφο να φυλάσσεται αλλού. Σε ένα VPS αυτό σημαίνει ότι έχετε τουλάχιστον ένα αντίγραφο εκτός του server, επιπλέον των δεδομένων στον ίδιο τον server.
Τον ίδιο κανόνα συνιστά το έγγραφο Data Backup Options, που ετοιμάστηκε για το US-CERT και δημοσιεύτηκε στον ιστότοπο της CISA. Σκοπός του είναι να μην μπορεί μία αστοχία, ένα λάθος ή μια επίθεση να καταστρέψει όλα τα αντίγραφα ταυτόχρονα.
Αντίγραφο ασφαλείας, snapshot και πλεονασμός δίσκων δεν είναι το ίδιο πράγμα
- Αντίγραφο ασφαλείας: ένα ξεχωριστό αντίγραφο των δεδομένων σας, συνήθως με προηγούμενες εκδόσεις. Επαναφέρει ένα αρχείο που διαγράφηκε ή χαλάστηκε κατά λάθος.
- Snapshot: καταγράφει την κατάσταση του server εκείνη τη στιγμή. Είναι καλό για γρήγορη επιστροφή πριν από μια μεγάλη ενημέρωση. Εξαρτάται όμως από τον αρχικό δίσκο, οπότε δεν αντικαθιστά το αντίγραφο ασφαλείας.
- Πλεονασμός δίσκων: τα ίδια δεδομένα γράφονται ταυτόχρονα σε δύο δίσκους. Σας προστατεύει όταν χαλάσει ένας δίσκος. Ένα αρχείο που διαγράφετε διαγράφεται και από τους δύο δίσκους, και τα δεδομένα που κρυπτογραφεί ένα ransomware κρυπτογραφούνται και στους δύο. Άρα δεν είναι αντίγραφο ασφαλείας.
Πώς εφαρμόζετε το 3-2-1 σε VPS
| Αντίγραφο | Πού | Πώς |
|---|---|---|
| Τα αρχικά δεδομένα | Ο δίσκος του server | Το σύστημά σας εν λειτουργία |
| Αντίγραφο του πάνελ | Καρτέλα Διαχείριση, Αντίγραφα ασφαλείας | Λαμβάνεται αυτόματα κάθε βράδυ και κρατούνται οι τελευταίες 7 ημέρες. Περιλαμβάνεται στην τιμή. |
| Αντίγραφο εκτός server | Ο δικός σας υπολογιστής, άλλος server ή object storage | Το ρυθμίζετε εσείς. Το παράδειγμα με restic βρίσκεται παρακάτω. |
Μπορείτε να μετρήσετε το καθημερινό αντίγραφο του πάνελ ως ένα από τα αντίγραφά σας. Το αντίγραφο όμως που πληροί τη συνθήκη «αλλού» είναι αυτό που στήνετε και ελέγχετε εσείς. Οι όροι χρήσης του Seturack ζητούν επίσης να κρατάτε ξεχωριστά αντίγραφο των σημαντικών δεδομένων σας.
Τι να αντιγράφετε
Η αντιγραφή των αρχείων μιας βάσης δεδομένων που τρέχει μπορεί να δώσει ασυνεπές αντίγραφο. Πάρτε πρώτα ένα dump. Αυτές οι εντολές εκτελούνται ως root, όπως θα έτρεχαν σε ένα script cron:
mysqldump --single-transaction --all-databases | gzip > /var/backups/mysql-$(date +%F).sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg-$(date +%F).sql.gz
Για τα αρχεία αρκούν: /etc, τα αρχεία του ιστότοπού σας, ο φάκελος δεδομένων της εφαρμογής σας, τα volumes του Docker αν χρησιμοποιείτε Docker, και τα αρχεία .env. Μην αντιγράφετε ό,τι μπορείτε να κατεβάσετε ξανά, όπως πακέτα και εικόνες Docker. Αν η εφαρμογή σας έχει κλειδί κρυπτογράφησης, αποθηκεύστε το κι αυτό ξεχωριστά. Σε ορισμένες εφαρμογές, ένα αντίγραφο χωρίς το κλειδί είναι άχρηστο.
Το πόσο συχνά παίρνετε αντίγραφο εξαρτάται από το πόσα δεδομένα μπορείτε να αντέξετε να χάσετε. Ένα αντίγραφο την ημέρα σημαίνει απώλεια έως και μίας ημέρας δεδομένων στη χειρότερη περίπτωση. Για μια εφαρμογή που καταγράφει παραγγελίες ή πληρωμές, είναι ασφαλέστερο να παίρνετε dump της βάσης κάθε ώρα και να το στέλνετε εκτός του server.
Αντίγραφο εκτός server με restic
Το restic είναι εργαλείο αντιγράφων ασφαλείας ανοιχτού κώδικα που κρυπτογραφεί τα αντίγραφά σας και αποθηκεύει μία φορά τα δεδομένα που επαναλαμβάνονται. Το παρακάτω παράδειγμα γράφει το αντίγραφο σε άλλον server στον οποίο φτάνετε μέσω SFTP. Ο προορισμός χρειάζεται σύνδεση SSH χωρίς κωδικό (με κλειδί), επειδή ένα αυτοματοποιημένο αντίγραφο δεν μπορεί να απαντήσει σε αίτημα κωδικού. Δημιουργήστε το αρχείο κωδικού (/root/.restic-password) σε έναν επεξεργαστή κειμένου και εκτελέστε chmod 600 σε αυτό.
sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:[email protected]:/backups/vps
export RESTIC_PASSWORD_FILE=/root/.restic-password
restic init
restic backup /etc /var/www /var/backups
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
Η τεκμηρίωση του restic προειδοποιεί ότι αν χάσετε τον κωδικό, τα δεδομένα σας χάνονται για πάντα. Κρατήστε τον κωδικό και σε διαχειριστή κωδικών. Βάλτε τις δύο γραμμές export, τα dumps των βάσεων, το restic backup και το restic forget σε ένα script όπως το /usr/local/bin/backup.sh, με αυτή τη σειρά, και κάντε το εκτελέσιμο με chmod +x. Μην ξεχάσετε να προσθέσετε στο τέλος μια γραμμή που διαγράφει τα παλιά dumps, find /var/backups -name '*.sql.gz' -mtime +2 -delete, αλλιώς τα αρχεία dump θα γεμίσουν τον δίσκο. Μετά εκτελείτε το script κάθε βράδυ, για παράδειγμα από το /etc/cron.d/backup με αυτή τη γραμμή:
30 3 * * * root /usr/local/bin/backup.sh
Το borg είναι παρόμοιο εργαλείο. Για απλά αντίγραφα αρχείων μπορείτε να χρησιμοποιήσετε το rsync και για αποστολή δεδομένων σε object storage το rclone.
Η πραγματική δοκιμασία: η επαναφορά
Ένα αντίγραφο που δεν μπορείτε να επαναφέρετε δεν αξίζει τίποτα. Δοκιμάστε το αμέσως μετά τη ρύθμιση και ύστερα σε τακτά διαστήματα:
- Με το restic, εξάγετε το τελευταίο αντίγραφο σε έναν κενό φάκελο και ελέγξτε τα αρχεία:
restic restore latest --target /tmp/restore-test - Φορτώστε ένα dump βάσης σε μια προσωρινή βάση και δείτε τους πίνακες.
- Στο πάνελ, κάντε κλικ στο εικονίδιο Ανάκτηση αρχείων από αυτό δίπλα σε ένα αντίγραφο, περιηγηθείτε μέσα και κατεβάστε ένα αρχείο. Η πλήρης επαναφορά αντικαθιστά ολόκληρο τον τρέχοντα δίσκο, οπότε η ανάκτηση ενός μεμονωμένου αρχείου είναι ο ασφαλέστερος τρόπος δοκιμής.
Διαλέξτε για πόσο θα κρατάτε τα αντίγραφα ανάλογα με το πόσο αργά μπορεί να καταλάβετε ένα πρόβλημα. Το αντίγραφο του πάνελ κρατά τις τελευταίες 7 ημέρες και δεν μπορείτε να γυρίσετε πιο πίσω. Αν μπορεί να χρειαστείτε παλαιότερες εκδόσεις, κρατήστε εβδομαδιαίες και μηνιαίες εκδόσεις στο δικό σας αντίγραφο. Για τις λεπτομέρειες του αντιγράφου του πάνελ, δείτε το άρθρο για τα καθημερινά αντίγραφα ασφαλείας.
Συνηθισμένα λάθη
- Εγγραφή του αντιγράφου στον δίσκο του ίδιου server. Αν γεμίσει ο δίσκος ή χαθεί ο server, χάνεται μαζί και το αντίγραφο.
- Φύλαξη του κωδικού ή του κλειδιού του αντιγράφου στο ίδιο μέρος με το αντίγραφο.
- Να μην καταλαβαίνετε ότι το script αποτυγχάνει. Προσθέστε ειδοποίηση στο script ή ελέγχετε πού και πού την ημερομηνία του τελευταίου αντιγράφου με
restic snapshots. - Να μην παρακολουθείτε πόσο γεμίζει ο προορισμός των αντιγράφων. Ένας γεμάτος προορισμός σημαίνει αντίγραφα που αποτυγχάνουν σιωπηλά.
Σχόλια0
Δεν υπάρχουν ακόμη σχόλια
Μοιραστείτε πρώτοι τις σκέψεις σας.
Συνδεθείτε ή εγγραφείτε για να αφήσετε σχόλιο.