Hits : 2018

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)


top


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 ή για τον υπολογιστή στο σπίτι.


top


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


top


TMP Partition


Ο κατάλογος /tmp έχει μερικές ιδιαιτερότητες. Καταρχήν είναι προσβάσιμος από όλους! Άρα θεωρείτε ως αδυναμία συχνά σε διάφορες διανομές.
Προσωπικά σκέφτηκα ότι ο καλύτερος τρόπος θα είναι να το "περνάω" στην μνήμη RAM, οπότε και θα σταματήσω να αγχώνομαι.
Κάθε φορά που κλείνει το ρεύμα θα αδειάζει και ο κατάλογος /tmp. Επίσης δεν θα φοβάμαι μην κάποιος κακόβουλος που γεμίσει το root partition επειδή κατάφερε στο /tmp να δημιουργήσει ένα υπερβολικά πολύ μεγάλο αρχείο κ.α.


Με την εξής δήλωση στο αρχείο: /etc/fstab, είμαστε αρκετά ασφαλής κατά την γνώμη μου:


tmpfs                   /tmp            tmpfs   defaults        0       0


top