Πώς να διαγράψετε με ασφάλεια αρχεία στο Linux

Τεμαχίστε παλιά αρχεία δεδομένων για τον ίδιο λόγο που τεμαχίζετε παλιά έγγραφα σε χαρτί. Σας λέμε τι πρέπει να γνωρίζετε για την ασφαλή διαγραφή αρχείων Linux. Αυτό το σεμινάριο καλύπτει την εντολή shred και τη σουίτα βοηθητικών προγραμμάτων ασφαλούς διαγραφής.

Τα διαγραμμένα αρχεία είναι κανονικά ανακτήσιμα

Η διαγραφή ενός αρχείου στην πραγματικότητα δεν το αφαιρεί από τον σκληρό σας δίσκο. Όλα εξαρτώνται από τον τρόπο με τον οποίο το σύστημα αρχείων σας χρησιμοποιεί τα inodes. Αυτές είναι οι δομές δεδομένων μέσα στο σύστημα αρχείων που συγκρατούν τα μεταδεδομένα σχετικά με τα αρχεία. Το όνομα του αρχείου, η θέση του στον σκληρό δίσκο, τα χαρακτηριστικά και τα δικαιώματα που έχει και ούτω καθεξής αποθηκεύονται όλα σε ένα inode. Ένας κατάλογος δεν είναι άλλο από ένα αρχείο. Αυτό που περιέχει τα ονόματα και τους αριθμούς inode των αρχείων που περιέχει ο κατάλογος.

Όταν διαγράφετε ένα αρχείο με το rm, το σύστημα αρχείων ελευθερώνει το κατάλληλο inode και προσαρμόζει το αρχείο καταλόγου. Αυτό επισημαίνει τον χώρο στον σκληρό δίσκο που καταλάμβανε το αρχείο ως αχρησιμοποίητο. Φανταστείτε ότι μπαίνεις σε μια βιβλιοθήκη και περνάς από το ευρετήριο καρτών, βρίσκεις την κάρτα καταλόγου ενός βιβλίου και την σχίζεις. Το βιβλίο είναι ακόμα στο ράφι. Απλώς είναι πιο δύσκολο να το βρεις.

Με άλλα λόγια, ο χώρος που χρησιμοποιήθηκε από το αρχείο είναι πλέον ελεύθερος να χρησιμοποιηθεί από άλλα αρχεία. Αλλά τα περιεχόμενα του παλιού αρχείου εξακολουθούν να βρίσκονται σε αυτό το χώρο. Μέχρι να αντικατασταθεί αυτό το διάστημα, υπάρχει μεγάλη πιθανότητα να ανακτηθεί το αρχείο.

Αλλά η πλήρης απαλλαγή από ένα αρχείο δεν είναι τόσο απλή όσο η απλή αντικατάστασή τους. Οπως θα δούμε.

Μην το κάνετε αυτό με SSD

Αυτές οι τεχνικές προορίζονται για παραδοσιακούς ηλεκτρομηχανικούς σκληρούς δίσκους (HDD) και δεν πρέπει να χρησιμοποιούνται με μονάδες στερεάς κατάστασης (SSD). Δεν θα λειτουργήσει και θα προκαλέσει επιπλέον εγγραφές και περιττή φθορά στον SSD σας. Για να διαγράψετε με ασφάλεια δεδομένα από έναν SSD, θα πρέπει να χρησιμοποιήσετε το βοηθητικό πρόγραμμα που παρέχεται από τον κατασκευαστή του SSD σας.

Η εντολή τεμαχισμού

τεμαχισμός έχει σχεδιαστεί για να εκτελέστε την αντικατάσταση για εσάς έτσι ένα διαγραμμένο αρχείο δεν μπορεί να ανακτηθεί. Περιλαμβάνεται σε όλες τις διανομές Linux που δοκιμάστηκαν κατά τη διάρκεια της έρευνας για αυτό το άρθρο, συμπεριλαμβανομένων των Ubuntu, Fedora και Manjaro.

Σε αυτό το παράδειγμα, θα εργαζόμαστε σε έναν κατάλογο που ονομάζεται ~/research, ο οποίος περιέχει πολλά αρχεία κειμένου. Περιέχει επίσης κάποιους άλλους καταλόγους που με τη σειρά τους περιέχουν άλλα αρχεία. Θα υποθέσουμε ότι αυτά τα αρχεία είναι ευαίσθητα και πρέπει να διαγραφούν εξ ολοκλήρου από τον σκληρό δίσκο.

Μπορούμε να δούμε τη δομή του δέντρου καταλόγου χρησιμοποιώντας την εντολή δέντρου ως εξής. Η επιλογή -d (κατάλογος) κάνει το δέντρο να παραθέτει μόνο τους καταλόγους και όχι όλα τα αρχεία. Η δομή του δέντρου καταλόγου μοιάζει με αυτό:

tree -d

Τεμαχισμός ενός μεμονωμένου αρχείου

Για να τεμαχίσουμε ένα μεμονωμένο αρχείο, μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή. Οι επιλογές που χρησιμοποιούμε είναι:

  Πώς να εγκαταστήσετε το πρόγραμμα περιήγησης Otter σε Linux

u: Αναθέστε και αφαιρέστε το αρχείο μετά την αντικατάσταση.
v: Verbose επιλογή, έτσι ώστε το τεμάχιο να μας λέει τι κάνει.
z: Εκτελεί μια τελική αντικατάσταση με μηδενικά.

shred -uvz Preliminary_Notes.txt_01.txt

Το shred αντικαθιστά το αρχείο τέσσερις φορές από προεπιλογή. Τα πρώτα τρία περάσματα χρησιμοποιούν τυχαία δεδομένα και το τελικό πέρασμα χρησιμοποιεί μηδενικά, όπως ζητήσαμε. Στη συνέχεια, αφαιρεί το αρχείο και αντικαθιστά ορισμένα από τα μεταδεδομένα στο inode

Ρύθμιση του αριθμού περασμάτων αντικατάστασης

Μπορούμε να ζητήσουμε από το shred να χρησιμοποιήσει περισσότερα ή λιγότερα περάσματα αντικατάστασης χρησιμοποιώντας την επιλογή -n (αριθμός). Το shred θα χρησιμοποιεί πάντα τουλάχιστον ένα πέρασμα. Ο αριθμός που παρέχουμε εδώ είναι ο αριθμός των επιπλέον περασμάτων που χρειαζόμαστε τεμαχισμό για να εκτελέσουμε. Έτσι το shred θα κάνει πάντα ένα πέρασμα παραπάνω από τον αριθμό που ζητάμε. Για να λάβουμε τρία περάσματα συνολικά, ζητάμε δύο επιπλέον πάσο:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

Όπως ήταν αναμενόμενο, το shred κάνει τρία περάσματα.

Λιγότερα περάσματα – λιγότερα τεμαχίσματα αν θέλετε – είναι προφανώς πιο γρήγορα. Είναι όμως λιγότερο ασφαλές; Τρεις πάσες, ενδιαφέροντα, είναι μάλλον υπεραρκετές.

Τεμαχισμός πολλών αρχείων

Οι χαρακτήρες μπαλαντέρ μπορούν να χρησιμοποιηθούν με τεμαχισμό για να επιλέξετε ομάδες αρχείων που πρόκειται να διαγραφούν. Το * αντιπροσωπεύει πολλούς χαρακτήρες και το ? αντιπροσωπεύει έναν μόνο χαρακτήρα. Αυτή η εντολή θα διαγράψει όλα τα υπόλοιπα αρχεία “Preliminary_Notes” στον τρέχοντα κατάλογο εργασίας.

shred -uvz -n 2 Preliminary_Notes_*.*

Τα υπόλοιπα αρχεία υποβάλλονται σε επεξεργασία με τεμαχισμό με τη σειρά τους.

Το shred δεν έχει αναδρομική επιλογή, επομένως δεν μπορεί να χρησιμοποιηθεί για τη διαγραφή δέντρων καταλόγου ένθετων καταλόγων.

Το πρόβλημα με την ασφαλή διαγραφή αρχείων

Όσο καλό κι αν είναι το τεμάχιο, υπάρχει ένα θέμα. Τα σύγχρονα συστήματα αρχείων ημερολογίου όπως τα ext3 και ext4 καταβάλλουν τεράστιες προσπάθειες για να διασφαλίσουν ότι δεν θα σπάσουν, δεν θα καταστραφούν ή θα χάσουν δεδομένα. Και με τα συστήματα αρχείων ημερολογίου, δεν υπάρχει καμία εγγύηση ότι η αντικατάσταση πραγματοποιείται πραγματικά στον χώρο του σκληρού δίσκου που χρησιμοποιείται από το διαγραμμένο αρχείο.

Αν είστε ήσυχοι ότι τα αρχεία έχουν διαγραφεί λίγο πιο προσεκτικά από ό,τι θα το έκανε η rm, τότε το Shred είναι μάλλον εντάξει. Αλλά μην κάνετε το λάθος να πιστεύετε ότι τα δεδομένα σίγουρα έχουν φύγει και είναι εντελώς μη ανακτήσιμα. Αυτό είναι πολύ πιθανό να μην ισχύει.

Η σουίτα διαγραφής με ασφάλεια

Οι εντολές ασφαλούς διαγραφής προσπαθούν να ξεπεράσουν τις βέλτιστες προσπάθειες των συστημάτων αρχείων ημερολογίου και να επιτύχουν την ασφαλή αντικατάσταση του αρχείου. Αλλά ισχύουν ακριβώς οι ίδιες επιφυλάξεις. Δεν υπάρχει ακόμα καμία εγγύηση ότι η αντικατάσταση πραγματοποιείται στην περιοχή του σκληρού δίσκου που τη χρειάζεστε για να διαγράψετε το αρχείο που σας ενδιαφέρει. Υπάρχουν περισσότερες πιθανότητες, αλλά καμία εγγύηση.

Οι εντολές ασφαλούς διαγραφής χρησιμοποιούν την ακόλουθη σειρά αντικαταστάσεων και ενεργειών:

1 αντικατάσταση με byte αξίας 0xFF.
5 αντικαταστάσεις με τυχαία δεδομένα.
27 αντικαθιστά με ειδικές τιμές που ορίζονται από τον Peter Gutmann.
5 ακόμη αντικαταστάσεις με τυχαία δεδομένα.
Μετονομάστε το αρχείο σε τυχαία τιμή.
Περικόψτε το αρχείο.

Αν όλα αυτά σου φαίνονται υπερβολικά, είσαι σε καλή παρέα. Φαίνεται υπερβολικό και στον Peter Gutmann, καθηγητή στο Πανεπιστήμιο του Aukland. Δημοσίευσε μια εργασία το 1996 συζητώντας αυτές τις τεχνικές, από το οποίο προέκυψε ο αστικός μύθος ότι πρέπει να χρησιμοποιήσετε όλες τις τεχνικές που αναφέρονται σε αυτήν την εργασία ταυτόχρονα.

Ο Peter Gutmann προσπάθησε έκτοτε να επαναφέρει το τζίνι στο μπουκάλι λέγοντας: «Ένα καλό τρίψιμο με τυχαία δεδομένα θα κάνει όσο καλά αναμένεται».

  Πώς να εγκαταστήσετε το ZFS σε Linux

Αλλά βρισκόμαστε εκεί που είμαστε, και αυτές είναι η σειρά τεχνικών που χρησιμοποιούνται από τις εντολές ασφαλούς διαγραφής. Αλλά πρώτα, πρέπει να τα εγκαταστήσουμε.

Εγκατάσταση ασφαλούς διαγραφής

Χρησιμοποιήστε το apt-get για να εγκαταστήσετε αυτό το πακέτο στο σύστημά σας εάν χρησιμοποιείτε Ubuntu ή άλλη διανομή που βασίζεται στο Debian. Σε άλλες διανομές Linux, χρησιμοποιήστε αντί αυτού το εργαλείο διαχείρισης πακέτων της διανομής σας Linux.

sudo apt-get install secure-delete

Υπάρχουν τέσσερις εντολές που περιλαμβάνονται στο πακέτο ασφαλούς διαγραφής.

Το srm είναι ένα ασφαλές rm, που χρησιμοποιείται για τη διαγραφή αρχείων διαγράφοντας τα και αντικαθιστώντας το χώρο του σκληρού δίσκου.
Το sfill είναι ένα εργαλείο για την αντικατάσταση όλου του ελεύθερου χώρου στον σκληρό σας δίσκο.
Το sswap χρησιμοποιείται για την αντικατάσταση και τον καθαρισμό του χώρου ανταλλαγής.
Το sdmem χρησιμοποιείται για τον καθαρισμό της μνήμης RAM σας.

Η εντολή srm

Χρησιμοποιείτε την εντολή srm όπως θα χρησιμοποιούσατε την εντολή rm. Για να αφαιρέσετε ένα μεμονωμένο αρχείο, χρησιμοποιήστε την ακόλουθη εντολή. Η επιλογή -z (μηδενικά) κάνει το smr να χρησιμοποιεί μηδενικά για την τελική διαγραφή αντί για τυχαία δεδομένα. Η επιλογή -v (verbose) κάνει το srm να μας ενημερώνει για την πρόοδό του.

srm -vz Chapter_One_01.txt

Το πρώτο πράγμα που θα παρατηρήσετε είναι ότι το srm είναι αργό. Παρέχει κάποια οπτική ανατροφοδότηση καθώς λειτουργεί, αλλά είναι ανακούφιση όταν βλέπετε ξανά τη γραμμή εντολών.

Μπορείτε να χρησιμοποιήσετε την επιλογή -l (μείωση ασφάλειας) για να μειώσετε τον αριθμό των περασμάτων σε δύο, γεγονός που επιταχύνει δραματικά τα πράγματα.

srm -lvz Chapter_One_02.txt

Η srm μας ενημερώνει ότι αυτό —κατά τη γνώμη της— είναι λιγότερο ασφαλές, αλλά εξακολουθεί να διαγράφει και να αντικαθιστά το αρχείο για εμάς.

Μπορείτε να χρησιμοποιήσετε την επιλογή -l (μείωση ασφάλειας) δύο φορές, για να μειώσετε τον αριθμό των περασμάτων σε ένα.

srm -llvz Chapter_One_03.txt

Χρήση srm με πολλά αρχεία

Μπορούμε επίσης να χρησιμοποιήσουμε χαρακτήρες μπαλαντέρ με το srm. Αυτή η εντολή θα διαγράψει και θα σκουπίσει τα υπόλοιπα μέρη του πρώτου κεφαλαίου:

srm -vc Chapter_One_0?.txt

Τα αρχεία επεξεργάζονται με τη σειρά τους η srm.

Διαγραφή καταλόγων και του περιεχομένου τους με srm

Η επιλογή -r (αναδρομική) θα κάνει το srm να διαγράψει όλους τους υποκαταλόγους και τα περιεχόμενά τους. Μπορείτε να περάσετε τη διαδρομή προς τον πρώτο κατάλογο στο srm.

Σε αυτό το παράδειγμα, διαγράφουμε τα πάντα στον τρέχοντα κατάλογο, ~/research. Αυτό σημαίνει ότι όλα τα αρχεία στο ~/research και όλοι οι υποκατάλογοι έχουν αφαιρεθεί με ασφάλεια.

srm -vz *

Το srm ξεκινά την επεξεργασία των καταλόγων και των αρχείων.

Τελικά σας επιστρέφει στη γραμμή εντολών. Στο μηχάνημα δοκιμής για το οποίο έγινε έρευνα αυτού του άρθρου, χρειάστηκε περίπου μία ώρα για να αφαιρεθούν περίπου 200 αρχεία που κατανεμήθηκαν μεταξύ του τρέχοντος καταλόγου και τριών ένθετων καταλόγων.

Όλα τα αρχεία και οι υποκατάλογοι αφαιρέθηκαν όπως αναμενόταν.

Η εντολή sfill

Τι γίνεται αν ανησυχείτε για ένα αρχείο που έχετε διαγράψει χρησιμοποιώντας το rm, πώς μπορείτε να μεταβείτε σε αυτό το παλιό έδαφος και να βεβαιωθείτε ότι έχει αντικατασταθεί; Η εντολή sfill θα αντικαταστήσει όλο τον ελεύθερο χώρο στον σκληρό σας δίσκο.

Καθώς το κάνει αυτό, θα παρατηρήσετε ότι έχετε όλο και λιγότερο ελεύθερο χώρο στον σκληρό σας δίσκο, μέχρι το σημείο όπου δεν υπάρχει καθόλου ελεύθερος χώρος. Όταν ολοκληρωθεί η συμπλήρωση, απελευθερώνει όλο τον ελεύθερο χώρο πίσω σε εσάς. Εάν διαχειρίζεστε ένα σύστημα πολλών χρηστών, αυτό θα ήταν πολύ ενοχλητικό, επομένως πρόκειται για μια εργασία συντήρησης που θα πρέπει να εκτελείται εκτός ωραρίου.

Ακόμη και σε έναν υπολογιστή χρήστη, η απώλεια χώρου στον σκληρό δίσκο σημαίνει ότι δεν μπορεί να χρησιμοποιηθεί όταν το sfill έχει χρησιμοποιήσει το μεγαλύτερο μέρος του χώρου. Αυτό είναι κάτι από το οποίο θα ξεκινούσατε και μετά θα αποχωρίζατε.

  Πώς να επανεκκινήσετε ή να τερματίσετε τη λειτουργία του Linux χρησιμοποιώντας τη γραμμή εντολών

Για να προσπαθήσετε να επιταχύνετε λίγο τα πράγματα, μπορείτε να χρησιμοποιήσετε την επιλογή -l (μείωση ασφάλειας). Οι άλλες επιλογές είναι οι επιλογές -v (verbose) και -z (μηδενικά) που έχουμε δει προηγουμένως. Εδώ, ζητάμε από το sfill να αντικαταστήσει με ασφάλεια όλο τον ελεύθερο χώρο στον κατάλογο /home.

sudo sfill -lvz /home

Βολέψου. Στον δοκιμαστικό υπολογιστή —ο οποίος έχει μόνο σκληρό δίσκο 10 GB— αυτό ξεκίνησε το απόγευμα και ολοκληρώθηκε κάποια στιγμή μέσα στη νύχτα.

Θα εξαφανιστεί για ώρες. Και αυτό με την επιλογή -l (μείωση ασφάλειας). Αλλά, τελικά, θα επιστρέψετε στη γραμμή εντολών.

Η εντολή sswap

Η εντολή sswap αντικαθιστά τον χώρο αποθήκευσης στο διαμέρισμα ανταλλαγής. Το πρώτο πράγμα που πρέπει να κάνουμε είναι να αναγνωρίσουμε το διαμέρισμα ανταλλαγής. Μπορούμε να το κάνουμε αυτό με την εντολή blkid, η οποία παραθέτει τις συσκευές μπλοκ.

sudo blkid

Πρέπει να εντοπίσετε τη λέξη “swap” και να σημειώσετε τη συσκευή μπλοκ στην οποία είναι συνδεδεμένη.

Μπορούμε να δούμε ότι το διαμέρισμα swap είναι συνδεδεμένο στο /dev/sda5.

Πρέπει να απενεργοποιήσουμε τις εγγραφές δίσκου στο διαμέρισμα swap για τη διάρκεια της αντικατάστασης. Θα χρησιμοποιήσουμε την εντολή swapoff:

sudo swapoff /dev/sda5

Μπορούμε τώρα να χρησιμοποιήσουμε την εντολή sswap.

Θα χρησιμοποιήσουμε το /dev/sda5 ως μέρος της γραμμής εντολών για την εντολή sswap. Θα χρησιμοποιήσουμε επίσης την επιλογή -v (verbose) και -ll (μείωση ασφάλειας), που χρησιμοποιήσαμε νωρίτερα.

sudo sswap -llv /dev/sda5

Το sswap αρχίζει να λειτουργεί μέσω του διαμερίσματος swap, αντικαθιστώντας ό,τι υπάρχει σε αυτό. Δεν παίρνει τόσο χρόνο όσο γέμισμα. Απλά νιώθει έτσι.

Μόλις ολοκληρωθεί, πρέπει να επαναφέρουμε το διαμέρισμα swap ως ενεργό χώρο ανταλλαγής. Αυτό το κάνουμε με την εντολή swapon:

sudo swapon /dev/sda5

Η εντολή sdmem

Το πακέτο ασφαλούς διαγραφής περιέχει ακόμη και ένα εργαλείο για να σκουπίσετε τα τσιπ της μνήμης τυχαίας πρόσβασης (RAM) στον υπολογιστή σας.

ΕΝΑ επίθεση με κρύα μπότα απαιτεί φυσική πρόσβαση στον υπολογιστή σας πολύ λίγο μετά την απενεργοποίησή του. Αυτός ο τύπος επίθεσης μπορεί, ενδεχομένως, να επιτρέψει την ανάκτηση δεδομένων από τα τσιπ RAM σας.

Εάν πιστεύετε ότι πρέπει να προστατεύσετε τον εαυτό σας από αυτό το είδος επίθεσης —και θα ήταν δύσκολο για τους περισσότερους να πιστέψουν ότι έπρεπε— μπορείτε να σκουπίσετε τη μνήμη RAM πριν απενεργοποιήσετε τον υπολογιστή σας. Θα χρησιμοποιήσουμε για άλλη μια φορά τις επιλογές -v (verbose) και -ll (μείωση ασφάλειας).

sudo sdmem -vll

Το παράθυρο του τερματικού θα γεμίσει με αστερίσκους ως ένδειξη ότι το sdmem λειτουργεί μέσω της μνήμης RAM σας.

Η εύκολη επιλογή: Απλώς κρυπτογραφήστε τη μονάδα δίσκου σας

Αντί να διαγράφετε αρχεία με ασφάλεια, γιατί να μην προστατεύσετε τον σκληρό σας δίσκο ή τον οικιακό σας φάκελο χρησιμοποιώντας κρυπτογράφηση;

Εάν το κάνετε αυτό, κανείς δεν μπορεί να έχει πρόσβαση σε οτιδήποτε, είτε πρόκειται για ζωντανό αρχείο είτε για ένα διαγραμμένο αρχείο. Και δεν χρειάζεται να είστε σε επιφυλακή και να θυμάστε να διαγράφετε με ασφάλεια ευαίσθητα αρχεία, επειδή όλα τα αρχεία σας είναι ήδη προστατευμένα.

Οι περισσότερες διανομές Linux ρωτούν εάν θέλετε να χρησιμοποιήσετε κρυπτογράφηση κατά την εγκατάσταση. Το να πείτε «ναι» θα σώσει πολύ μελλοντική επιδείνωση. Δεν μπορείτε να ασχοληθείτε με μυστικές ή ευαίσθητες πληροφορίες. Αλλά αν πιστεύετε ότι μπορείτε να δώσετε ή να πουλήσετε τον υπολογιστή σε κάποιον άλλο όταν τελειώσετε με αυτόν, η κρυπτογράφηση θα το απλοποιήσει επίσης.