Encrypted Home & Swap Partition :: mini howto
Αντί προλόγου: Η ασφάλεια δεν είναι ένα μόνο πράγμα, αποτελείται από πάρα πολλά επίπεδα που σχετίζονται μεταξύ τους. Πάντα όμως θα πρέπει να αξιολογούμε τα δεδομένα μας και να επιλέγουμε το σχήμα ή τα επίπεδα εκείνα που ο λόγος απόδοσης δεδομένα/διαχειριστικό κόστος είναι ο μικρότερος. Δεν χρειάζεται να γίνουμε παρανοϊκοί μα ούτε κι αφελής.
cryptsetup
Από το manual:
dm-crypt website
LUKS website
dm-crypt TWiki
Πριν συνεχίσουμε αυτό το mini howto, χρειάζεται να κάνουμε τρία (3) πράγματα:
- Να εγκαταστήσουμε το cryptsetup
- Να ενεργοποιήσουμε το module: dm_mod
- Να ορίζουμε στον πυρήνα μας να φορτώνει κατά την εκκίνηση το παραπάνω module.
Μπορούμε είτε να χρησιμοποιήσουμε τον διαχειριστή προγραμμάτων της διανομής μας – είτε να εγκαταστήσουμε το cryptsetup από τον πηγαίο κώδικα. Εάν επιλέξετε τον πηγαίο κώδικα, τότε χρειάζεστε την τελευταία σταθερή έκδοση από εδώ: http://code.google.com/p/cryptsetup
ΣΗΜΕΙΩΣΗ: Για αυτό το tutorial χρησιμοποίησα archlinux, τυχόν να υπάρχουν διαφορές στην δική σας αντίστοιχη διανομή!
Στο δικό μου σύστημα αυτό γίνεται εύκολα κι απλά σε 3 βήματα:
α. Εγκατάσταση: pacman -S cryptsetup
β. Ενεργοποίηση του module: modprobe dm_mod
γ. Επεξεργασία του αρχείου: /etc/rc.conf ώστε να περιέχει το εξής: MODULES=(dm_mod)
HOME Partition
Η διαδικασία κρυπτογράφησης του home partition είναι εξαιρετικά απλή κι εύκολη.
Για το παράδειγμα μας, θα χρησιμοποιήσουμε ως home partition την κατάτμηση: /dev/sda4
Ο ευκολότερος τρόπος όλων είναι η χρήση της επέκτασης του cryptsetup: Luks
Για αρχή χρειάζεται να διαμορφώσουμε κατάλληλα την κατάτμησή μας ώστε να υποστηρίζει την επέκταση του cryptsetup: luks
cryptsetup luksFormat /dev/sda4
Σε αυτό το σημείο θα πρέπει να ορίσουμε το passphrase που θέλουμε να έχουμε (επί δύο).
Στην χρειάζεται να αντιστοιχήσουμε την κρυπτογραφημένη κατάτμηση μας με την αντίστοιχη λογική αποκρυπτογραφημένη κατάτμησή μας:
Προσθήκη κλειδιού στα slots του cryptsetup
cryptsetup luksAddKey /dev/sda4> /tmp/lukskey
cryptsetup luksOpen /dev/sda4 home
Έπειτα επιλέγουμε τον τύπο του αρχείου συστήματος μας στην λογική μας κατάτμηση και την διαμορφώνουμε κατάλληλα:
mkfs.ext4 /dev/mapper/home -L home
Για να δούμε την κατάσταση της λογικής κατάτμησή μας:
cryptsetup status home
Ένα τυπικό παράδειγμα:
# cryptsetup status home /dev/mapper/home is active: cipher: aes-cbc-essiv:sha256 keysize: 128 bits device: /dev/sda4 offset: 1032 sectors size: 625136250 sectors mode: read/write
Εάν θέλουμε να κλείσουμε την λογική κατάτμηση μας:
cryptsetup luksClose home
Εάν θέλουμε η κρυπτογραφημένη κατάτμησή μας να αντιστοιχίζετε αυτόματα με την λογική μας κατάτμηση, τότε χρειάζεται να επεξεργαστούμε κατάλληλα το εξής αρχείο: /etc/crypttab. Προσθέτοντας την παρακάτω γραμμή, δεσμεύουμε την κρυπτογραφημένη κατάτμησή μας με την λογική αποκρυπτογραφημένη κατάτμησή μας.
home /dev/sda4 ASK
Με την επιλογή ASK, ρυθμίζουμε το λειτουργικό μας να μας ρωτάει για το pass phrase. Εάν το σύστημά σας ΔΕΝ είναι τοπικό σε εσάς ή δεν είναι το laptop σας, τότε δεν σας το προτείνω.
Για να φορτώνεται αυτόματα η λογική μας κατάτμηση χρειάζεται να τροποποιήσουμε το αρχείο: /etc/fstab, ώστε να γνωρίζει το λειτουργικό μας που θα το προσαρτηθεί:
/dev/mapper/home /home ext4 defaults 0 1
ΠΡΟΣΟΧΗ: με την τιμή 1 στο τέλος της γραμμής, δηλώνουμε ότι θα περιμένει το λειτουργικό μας την προσάρτηση του συγκεκριμένου mount point. Έτσι με την παραπάνω δήλωση στο αρχείο: /etc/crypttab θα περιμένει κατά την εκκίνηση να δοθεί το pass phrase. Ιδανικό για ένα laptop ή για τον υπολογιστή στο σπίτι.
SWAP Partition
Το swap partition είναι η εκτεταμένη μνήμη του συστήματός μας. Όταν κάποια διεργασία καταναλώσει το σύνολο της μνήμης RAM, τότε ο πυρήνας θα μεταβεί στο swap partition για να συνεχίσει την λειτουργία του με την τεχνική της σελιδοποίησης (paging). Ώς εκ τούτου, τα δεδομένα που υπάρχουν στην κατάτμηση swap είναι προσωρινά και την επόμενη φορά που θα εκκινήσουμε το σύστημα μας δεν θα τα χρειαζόμαστε (εκτός εάν έχουμε ενεργοποιημένη την λειτουργία αναστολής/αδρανοποίησης!). Ως κατάτμηση, δηλαδή ως μέρος του σκληρού μας δίσκου, αποθηκεύει τα δεδομένα – ακόμα κι εάν ο υπολογιστής μας είναι κλειστός. Για αυτό το λόγο προτείνεται η κρυπτογράφηση της κατάτμησης swap. Η διαδικασία κρυπτογράφησης της κατάτμησης swap διαφέρει (όχι σε πάρα πολλά) με την διαδικασία κρυπτογράφησης του home directory μας.
Τα βήματα που θα ακολουθήσουμε είναι τα εξής:
- Δημιουργία ενός μίας κρυπτογραφημένης κατάτμησης με όνομα swap
- Έλεγχος της κρυπτογραφημένης κατάτμηση
- Δημιουργία του αντίστοιχου swap filesystem
- Καταγραφή στο αρχείο ρυθμίσεων του cryptsetup
- Δήλωση στο αρχείο προσάρτησης των κατατμήσεών μας, ώστε να προσαρτηθείτε αυτόματα κατά την εκκίνηση.
Για την ανάγκες του παραδείγματός μας θα κάνουμε χρήση της διακήρυξης: Έστω ότι η κατάτμηση swap είναι στο μηχάνημά μας: /dev/sda2
Ξεκινάμε λοιπόν με την δημιουργία μίας νέας κρυπτογραφημένης κατάτμησης με όνομα swap και τυχαία δεδομένα που θα αντιστοιχεί στην κατάτμηση /dev/sda2:
cryptsetup -d /dev/random create swap /dev/sda2
Ανά πάσα στιγμή μπορούμε να δούμε μερικές πληροφορίες για την κρυπτογραφημένη κατάτμησή μας:
cryptsetup status swap
Σε αυτό το σημείο διαμορφώνουμε την κρυπτογραφημένη κατάτμησή μας σε swap:
mkswap -c -f -L swap /dev/mapper/swap
Πρακτικά δεν χρειάζεται κάτι άλλο, πλέον μπορούμε να χρησιμοποιήσουμε την κρυπτογραφημένη μας κατάτμηση ως encrypted swap patrition:
swapon /dev/mapper/swap
Για να αποθηκεύσουμε τις παραπάνω επιλογές μας για την κρυπτογραφημένη κατάτμηση μας, τότε πρέπει να επεξεργαστούμε το εξής αρχείο: /etc/crypttab
Με αυτό τον τρόπο κατά την εκκίνηση ο πυρήνας μας θα προσπαθεί μέσω του cryptsetup να δημιουργήσει την κρυπτογραφημένη κατάτμησή μας:
swap /dev/sda2 SWAP -c aes-cbc-essiv:sha256 -s 256
Εάν θέλουμε να είναι προσαρτηθείτε αυτόνομα κατά την εκκίνηση του συστήματός μας, χρειάζεται να επεξεργαστούμε το εξής αρχείο: vim /etc/fstab
/dev/mapper/swap none swap sw 0 0
TMP Partition
Ο κατάλογος /tmp έχει μερικές ιδιαιτερότητες. Καταρχήν είναι προσβάσιμος από όλους! Άρα θεωρείτε ως αδυναμία συχνά σε διάφορες διανομές.
Προσωπικά σκέφτηκα ότι ο καλύτερος τρόπος θα είναι να το "περνάω" στην μνήμη RAM, οπότε και θα σταματήσω να αγχώνομαι.
Κάθε φορά που κλείνει το ρεύμα θα αδειάζει και ο κατάλογος /tmp. Επίσης δεν θα φοβάμαι μην κάποιος κακόβουλος που γεμίσει το root partition επειδή κατάφερε στο /tmp να δημιουργήσει ένα υπερβολικά πολύ μεγάλο αρχείο κ.α.
Με την εξής δήλωση στο αρχείο: /etc/fstab, είμαστε αρκετά ασφαλής κατά την γνώμη μου:
tmpfs /tmp tmpfs defaults 0 0