Pełne szyfrowanie dysku LUKS: Przewodnik konfiguracji serwera Linux

15 min czytania - 5 czerwca 2026

hero section cover
Spis treści
  • Przewodnik po serwerach z pełnym szyfrowaniem dysków LUKS
  • Dlaczego LUKS2 i co sprawdzić w pierwszej kolejności
  • Układ dysku
  • Konfiguracja LUKS z LVM
  • Zarządzanie kluczami i zdalne odblokowywanie
  • Zabezpieczanie i unikanie blokad
Udostępnij

Pełne szyfrowanie dysków LUKS dla serwerów Linux, obejmujące konfigurację LUKS2, układ LVM, zarządzanie kluczami, zdalne odblokowywanie za pomocą Tang i TPM oraz hartowanie.

Przewodnik po serwerach z pełnym szyfrowaniem dysków LUKS

LUKS (Linux Unified Key Setup) szyfruje całe urządzenie blokowe systemu Linux, dzięki czemu jego zawartość jest nieczytelna bez klucza głównego. Skradziony dysk, wycofana z eksploatacji obudowa, zapomniany dysk z kopią zapasową: żadna z tych sytuacji nie naraża danych na ujawnienie, jeśli system LUKS jest poprawnie skonfigurowany. Ten wpis opisuje, jak wdrożyć pełne szyfrowanie dysku LUKS na serwerze, w tym układ LVM, zarządzanie kluczami, zdalne odblokowywanie oraz tryby awarii, które uniemożliwiają użytkownikom dostęp do własnych danych.

Referencyjną implementacją jest tutaj LUKS2 z LVM wewnątrz zaszyfrowanego kontenera, na serwerze Linux z AES-NI w procesorze. Ta kombinacja radzi sobie z każdym współczesnym obciążeniem, działa dobrze i spełnia wymagania dotyczące danych w spoczynku określone w HIPAA, PCI-DSS, RODO i SOC 2.

Dlaczego LUKS2 i co sprawdzić w pierwszej kolejności

LUKS szyfruje na poziomie urządzenia blokowego przy użyciu dm-crypt, a klucz główny jest przechowywany w slotach kluczy wewnątrz nagłówka LUKS. To rozdzielenie ma znaczenie: można zmieniać hasła lub dodawać nowe klucze bez ponownego szyfrowania dysku.

LUKS2 jest obecnie ustawieniem domyślnym. Obsługuje do 32 slotów kluczy, metadane w formacie JSON, ponowne szyfrowanie online oraz szyfrowanie uwierzytelnione za pomocą flagi --integrity . LUKS1 obsługuje 8 slotów na klucze i sprawdza się na starszych systemach, ale nowe wdrożenia powinny rozpoczynać się od LUKS2.

Obciążenie wydajnościowe związane z AES-NI wynosi zazwyczaj poniżej 5% na nowoczesnym sprzęcie. Sprawdź przed rozpoczęciem:

grep -o aes /proc/cpuinfo | head -1
cryptsetup benchmark

Jeśli grep nie zwraca żadnego wyniku, oznacza to, że procesor nie obsługuje AES-NI, a szyfrowanie będzie obciążać procesor przy intensywnych operacjach wejścia/wyjścia. cryptsetup benchmark pokazuje przepustowość dla poszczególnych szyfrów, dzięki czemu możesz wybrać najszybszy z obsługiwanych przez twój sprzęt. Sprawdź również, czy cryptsetup jest zainstalowany i czy dostępny jest moduł jądra dm-crypt moduł jądra jest dostępny. Oba są dostarczane domyślnie w systemach Ubuntu, Debian, RHEL i Arch.

Układ dysku

Dwie partycje pozostają niezaszyfrowane: partycja systemowa EFI (512 MB FAT32) oraz /boot (1 do 2 GB, ext4 lub xfs). GRUB musi odczytać obie, zanim będzie mógł poprosić o hasło. Wszystko inne znajduje się wewnątrz kontenera LUKS.

Zalecany układ to LVM wewnątrz LUKS: jeden kontener LUKS zawierający grupę woluminów LVM, z woluminami logicznymi dla partycji root, swap i dowolnych partycji danych. Dzięki temu metadane LVM pozostają zaszyfrowane i można zmieniać rozmiar woluminów lub tworzyć ich migawki bez ingerencji w warstwę LUKS. LUKS na LVM również działa, ale ujawnia strukturę grupy woluminów.

PartycjaRozmiarSystem plikówSzyfrowany
System EFIOd 512 MB do 1 GBFAT32Nie
/bootOd 1 do 2 GBext4 / xfsNie
Kontener LUKSPozostałe miejsceLUKS2Tak
Katalog główny LVM20 do 100 GB+ext4 / xfsTak (w ramach LUKS)
LVM swapRówna pamięci RAMswapTak (w ramach LUKS)

ext4 jest bezpiecznym domyślnym systemem plików dla woluminu root. xfs lepiej radzi sobie z dużymi plikami i równoległym zapisem, co ma znaczenie dla serwerów multimedialnych, ML i baz danych. W przypadku dysków SSD i NVMe dodaj opcję discard opcję w /etc/crypttab , aby włączyć TRIM. TRIM ujawnia, które sektory są w użyciu, co stanowi niewielki wyciek informacji. W przypadku większości obciążeń korzyści wynikające z wyrównywania zużycia przeważają nad tym ryzykiem. Jeśli model zagrożeń obejmuje analizę kryminalistyczną urządzenia, należy pozostawić tę opcję wyłączoną.

Konfiguracja LUKS z LVM

Zidentyfikuj dysk docelowy za pomocą lsblk i wyczyść wszelkie istniejące metadane:

wipefs -a /dev/sdX

Opcjonalnie nadpisz go losowymi danymi, aby zaszyfrowane bloki nie różniły się od pustej przestrzeni:

dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

Zainicjuj kontener LUKS2. Użyj --sector-size 4096 dla dysków NVMe i nowoczesnych dysków SSD z fizycznymi sektorami 4K:

cryptsetup luksFormat --type luks2 --sector-size 4096 /dev/sdX
cryptsetup luksOpen /dev/sdX cryptdata

Natychmiast wykonaj kopię zapasową nagłówka, zanim umieścisz jakiekolwiek dane na dysku:

cryptsetup luksHeaderBackup /dev/sdX --header-backup-file luks-header-backup.img

Utwórz LVM na odblokowanym kontenerze, a następnie sformatuj woluminy logiczne:

pvcreate /dev/mapper/cryptdata
vgcreate vg_secure /dev/mapper/cryptdata
lvcreate -L 50G -n lv_root vg_secure
lvcreate -L 8G -n lv_swap vg_secure
 
mkfs.xfs /dev/vg_secure/lv_root
mkswap /dev/vg_secure/lv_swap

Dodaj wpis do /etc/crypttab , używając UUID, a nie /dev/sdX, który może się zmieniać przy ponownym uruchomieniu. Uzyskaj go za pomocą blkid /dev/sdX:

cryptdata UUID=<your-uuid> none luks,discard

Następnie zamontuj za pomocą /etc/fstab:

/dev/vg_secure/lv_root  /  xfs  defaults,noatime  0 1

Zregeneruj initramfs, aby hooki szyfrowania były ładowane podczas uruchamiania:

# Debian/Ubuntu
update-initramfs -u -k all
 
# RHEL/Fedora
dracut -f --regenerate-all

Uruchom ponownie komputer, wprowadź hasło i potwierdź konfigurację za pomocą cryptsetup status cryptdata i lsblk -f. To ostatnie powinno wyświetlić crypto_LUKS jako FSTYPE na zaszyfrowanej partycji.

Zarządzanie kluczami i zdalne odblokowywanie

LUKS2 obsługuje 32 sloty na klucze. Od samego początku należy używać co najmniej trzech: hasła administratora, klucza odzyskiwania przechowywanego offline (wydrukowanego i zamkniętego w sejfie lub na zaszyfrowanej pamięci USB w sejfie) oraz pliku klucza do automatycznego odblokowywania dodatkowych woluminów danych. Trzymaj się 95 drukowalnych znaków ASCII, ponieważ znaki spoza ASCII powodują problemy z układem klawiatury w wierszu poleceń podczas uruchamiania, których debugowanie jest irytujące. Zmieniaj hasło administratora za każdym razem, gdy ktoś z dostępem opuszcza zespół.

Wyświetl aktywne sloty za pomocą cryptsetup luksDump /dev/sdX, dodaj klucz za pomocą cryptsetup luksAddKey, a cofnąć jeden za pomocą cryptsetup luksKillSlot. Chroń wszystkie pliki kluczy za pomocą ścisłych uprawnień:

chmod 0400 /etc/luks/keyfile.bin

W przypadku serwerów bez monitorów w zdalnych centrach danych problemem jest monit o hasło. Istnieją trzy sposoby radzenia sobie z tym:

MetodaNajlepsze zastosowanieKompromis
Dropbear w initramfsRęczne odblokowanie przez SSHNadal wymaga interwencji człowieka przy ponownym uruchomieniu
Clevis + Tang (NBDE)Automatyczne odblokowanie w zaufanej sieciSerwer musi połączyć się z serwerem Tang, aby się uruchomić
TPM2 poprzez systemd-cryptenrollAutomatyzacja oparta na sprzęcieAktualizacje oprogramowania układowego mogą zmienić wartości PCR i zablokować dostęp

Dropbear uruchamia niewielki serwer SSH w initramfs. Po uruchomieniu logujesz się przez SSH i ręcznie wpisujesz hasło. Clevis z Tang wykorzystuje szyfrowanie dysku powiązane z siecią: serwer odblokowuje się, o ile ma dostęp do serwera Tang w zaufanej sieci. Tang nie przechowuje Twojego klucza, zapewnia jedynie połowę klucza w ramach wymiany McCallum-Relyea. Używaj wielu serwerów Tang z sss pin, aby odblokowanie nadal działało, gdy jeden z nich jest offline. Powiązanie TPM 2.0 poprzez systemd-cryptenroll powiązuje klucz z PCR 7 (stan bezpiecznego rozruchu), więc serwer odblokowuje się tylko wtedy, gdy oprogramowanie układowe i program rozruchowy nie zostały naruszone. Zawsze należy zachować hasło jako rozwiązanie awaryjne podczas korzystania z TPM, ponieważ aktualizacje oprogramowania układowego zmieniają wartości PCR.

Zabezpieczanie i unikanie blokad

Używaj haseł składających się z co najmniej 20 znaków. Włącz szyfrowanie uwierzytelnione za pomocą --integrity w luksFormat , jeśli model zagrożeń obejmuje nie tylko poufność, ale także manipulowanie danymi. Wiąże się to z kosztem amplifikacji zapisu, więc najpierw przeprowadź testy porównawcze.

Nie klonuj kontenera LUKS na różnych maszynach. Klucz woluminu jest kopiowany wraz z nim, więc zmiana hasła na jednym hoście nie ochroni drugiego. Sformatuj każdy dysk osobno.

Aby zapewnić bezpieczne wycofanie z eksploatacji, cryptsetup erase /dev/sdX w ciągu milisekund kasuje wszystkie miejsca na klucze, uniemożliwiając odzyskanie danych z dysku bez jego fizycznego zniszczenia. Już to samo stanowi mocny argument za domyślnym szyfrowaniem wszystkiego.

Typowe tryby awarii:

ObjawPrawdopodobna przyczynaRozwiązanie
System zawiesza się przy monicie o hasłoNiezgodność układu klawiaturyZmień układ klawiatury lub użyj klucza odzyskiwania
„Urządzenie nie jest prawidłowym urządzeniem LUKS”Nieprawidłowa ścieżka do urządzeniaSprawdź lsblk , czy wybrano partycję, czy cały dysk
Klawiatura nie reaguje podczas uruchamianiaKolejność haków InitramfsUmieść keyboard przed encrypt w mkinitcpio.conf
GRUB pomija monit o hasłoGRUB_ENABLE_CRYPTODISK nie ustawionoUstaw GRUB_ENABLE_CRYPTODISK=y w /etc/default/grub, zainstaluj ponownie GRUB
„Nie udało się znaleźć urządzenia root”Brak lvm2 lub encrypt hakiDodaj haki i uruchom mkinitcpio -P

Najpoważniejszym trybem awarii jest uszkodzenie nagłówka. Jeśli nagłówek LUKS zostanie utracony lub uszkodzony, dane przepadną. Nie ma możliwości odzyskania danych poza przywróceniem z kopii zapasowej nagłówka. Przechowuj kopię na oddzielnym nośniku, najlepiej w dwóch lokalizacjach, i nigdy na samym zaszyfrowanym dysku. W przypadku niekrytycznych woluminów pomocniczych dodaj nofail do /etc/crypttab , aby nieudane zamontowanie nie spowodowało zawieszenia systemu podczas uruchamiania.

Serwery dedykowane FDC są dostarczane z oprogramowaniem sprzętowym obsługującym AES-NI i pełne szyfrowanie dysku od razu po wyjęciu z pudełka. Skonfiguruj serwer dedykowany, gdy będziesz gotowy do wdrożenia.

background image
Czy Twój serwer hamuje Twój rozwój?

Masz dość powolnych wdrożeń lub limitów przepustowości? FDC Servers oferuje natychmiastową dedykowaną moc, globalny zasięg i elastyczne plany dostosowane do dowolnej skali. Gotowy do aktualizacji?

Odblokuj wydajność teraz

Blog

Polecane w tym tygodniu

Więcej artykułów
Linux Traffic Control (tc): praktyczny przewodnik

Linux Traffic Control (tc): praktyczny przewodnik

Kontroluj przepustowość, ustalaj priorytety ruchu oraz kształtuj ruch przychodzący i wychodzący w systemie Linux za pomocą tc. Działająca konfiguracja HTB, IFB, DSCP i fq_codel dla rzeczywistych serwerów.

12 min czytania - 5 czerwca 2026

Dlaczego ważne jest posiadanie wydajnego i niezmierzonego serwera VPS?

7 min czytania - 9 maja 2025

Więcej artykułów
background image

Masz pytania lub potrzebujesz niestandardowego rozwiązania?

icon

Elastyczne opcje

icon

Globalny zasięg

icon

Natychmiastowe wdrożenie

icon

Elastyczne opcje

icon

Globalny zasięg

icon

Natychmiastowe wdrożenie