Przejdź do głównej zawartości

Linux RHCSA cz.20 - System plików - Szyfrowanie LUKS

LUKS ( Linux Unified Key Setup) jest szyfrowaniem dysku w środowisku Linux. Ma szczególne znaczenie w momencie gdy dysk jest wyłączony poza systemem np.: został skradziony. Podczas instalacji RHEL6 pojawia się miedzy innymi ekran, na którym możemy wybrać czy partycja ma być szyfrowana. Jeżeli zdecydujemy się na szyfrowanie potrzebne będzie ustanowienie hasła, o które będziemy proszeni przy każdym uruchomieniu systemu, w celu odszyfrowywania partycji. Jeżeli już zdecydujemy się na szyfrowanie należy dobrze zapamiętać hasło! Samo zastosowanie szyfrowania LUKS nie gwarantuje bezpieczeństwa partycji w momencie gdy są uruchomione zabezpieczenie to stanowi ochronę przed uruchomieniem partycji. Co zrobić aby chronić dane również podczas działania partycji? Dalej przedstawione zostaną narzędzia takie jak GnuPG

TWORZENIE ZASZYFROWANEJ PARTYCJI

Nawet po zainstalowaniu systemu RedHat nadal możesz tworzyć partycje zaszyfrowane. Domyślnie w RHEL6 stosowany jest algorytm 128 bitowy AES z 256SHA (haszowanie). Istnieją również inne szyfrowania: 
  • AES
  • Twofish
  • Serpent
  • Cast5
  • Cast6
Tutaj pokazane zostanie, w jaki sposób zaszyfrować partycje jeżeli system został już zainstalowany i uruchomiony. Dla ćwiczenia utwórzmy dodatkowy dysk virtualny o rozmiarze 4GB ( na maszynie RHEL02) /dev/hdb1. 

UWAGA
Tworząc zaszyfrowaną partycje usuwane są wszystkie zawarte na niej dane. Zanim zaczniemy używać tego rodzaju partycji należy wykonać kopię zapasową danych jakie mają się na niej znaleźć. 

Krok 1 - Musimy uruchomić system w pierwszym poziomie uruchamiania (runlevel1) w celu stworzenia szyfrowanej partycji. 

# telinit 1

Krok 2 - Po uruchomieniu systemu upewniamy się , że partycja nie jest zamontowana

# umount /dev/hdb1

Krok 3 - Sprawdźmy  że partycja naprawdę jest odmontowana

# mount | grep /dev/hdb1

Krok 4 - Wypełnij partycje losowymi danymi . To może troszkę potrwać 

# dd if=/dev/urandom of=/dev/hdb1 

Krok 5 - Gdy wypełnianie losowymi danymi zostanie zakończone inicjujemy partycje 

# cryptsetup - verbose -verify-passphrase loksFormat /dev/hdb1 

WARNING!
========
This will overwrite data on /dev/hdb1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Krok 6 - Otwórz nową zaszyfrowaną partycję i nadaj jej etykietę. 

# cryptsetup luksOpen /dev/hdb1 opt_data
Enter passphrase for /dev/hdb1:

Krok 7 - Sprawdźmy czy zaszyfrowana partycja istnieje 

# ls –l /dev/mapper | grep opt_data
lrwxrwxrwx. 1 root root 7 Jan 27 18:36 opt_data -> ../dm-2

Krok 8 - Tworzymy nowy system plików. 

# mkfs.ext4 /dev/mapper/opt_data
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
524288 inodes, 2095962 blocks
104798 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736,
1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Krok 9 - Po utworzeniu systemu plików można go zamontować ponownie

# mkdir /opt/opt_data
# mount /dev/mapper/opt_data /opt/opt_data

Krok 10 - Należy również dodać zaszyfrowaną partycję do pliku /etc/crypttab 

# vi /etc/crypttab
opt_data /dev/hdb1 none

Krok 11 - Aktualizacja /etc/fstab dla zatwierdzenia zmian 

# vi /etc/fstab
/dev/mapper/opt_data /opt_data ext4 defaults 1 2

Krok 12 - W tym punkcie powinno się odtworzyć domyślny kontekst bezpieczeństwa SELinux. 

# /sbin/restorecon –v –R /opt_data

Krok 13 - Wszystko skończone, restart systemu

# shutdown –r now

Musisz wykonać sporo poleceń by utworzyć i skonfigurować partycje szyfrowaną. Mam nadzieje, że nie czujesz się przytłoczony ich ilością po stworzeniu 2 czy 3 partycji wszystko będzie szło zdecydowanie szybciej. Należy mieć pewność że wszystko zostało zrobione poprawnie, przed wykonaniem restartu, ponieważ od momentu dodania wpisu do /etc/crypttab podczas uruchomienia trzeba będzie podawać hasło dla zaszyfrowanej partycji. 

Można również wykonać sprawdzenie czy dana partycja jest zaszyfrowana: 

# cryptsetup isLuks /dev/hdb1 && echo Success
# cryptsetup luksDump /dev/hdb1

Jeżeli chcesz używać UUID do montowania systemu plików w /etc/fstab możesz znaleźć UUID dla zaszyfrowanej partycji w ten sposób : 

# cryptsetup luksUUID /dev/hdb1

Jak już wiemy /etc/fstab jest odpowiedzialny, za to które partycje zostają zamontowane podczas startu systemu. Podczas pracy z zaszyfrowaną partycją nie widać żadnej różnicy. Dopiero po dodaniu wpisu do pliku /etc/crypttab w postaci : 

<mount point>     <partition>         none

Podczas uruchamiania systemu pojawi się pytanie o hasło w celu odszyfrowania partycji do startu systemu. 

Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości