LUKS je šifrování disku pro Linux.
Když poprvé šifrujete oddíl pomocí LUKS (nebo když vyberete možnost šifrovat disk během instalace OS), musíte zadat heslo, které bude použito při otevření oddílu LUKS.
Poté však můžete oddíl připojovat a odpojovat, kolikrát chcete, aniž byste museli zadávat heslo, dokud nerestartujete systém.
Představte si následující dva scénáře:
- Zapomněli jste heslo LUKS. Nebo jste zdědili systém od někoho, kdo má připojený oddíl se šifrováním LUKS. Nemáte pro to heslo LUKS. Když restartujete systém, budete mít potíže, protože nemáte klíč LUKS.
- Za účelem zajištění souladu se zabezpečením je nutné často měnit heslo šifrování LUKS. V tomto případě musíte otočit klíčem LUKS, aniž byste narušili připojený oddíl.
V tomto tutoriálu probereme vše, co potřebujete vědět o správě klíčů LUKS.
1. Osm klíčových slotů LUKS
V LUKS můžete mít pro jeden šifrovaný oddíl osm různých klíčů.
K otevření šifrovaného oddílu lze použít kterýkoli z osmi různých klíčů.
Můžete si vybrat, zda budete mít na oddílu pouze jeden klíč, nebo můžete přiřadit všech osm různých klíčů.
Tyto klíče jsou uloženy ve slotech pro klíče LUKS pro oddíl. Pro oddíl tedy bude 8 klíčových slotů.
Chcete-li zobrazit všechny klíčové sloty, použijte cryptsetup luksDump, jak je znázorněno níže. V tomto příkladu používá pouze dva sloty.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Ve výše uvedeném:
- /dev/sdb1 je šifrovaný oddíl LUKS.
- Číslo klíčového slotu začíná od 0. Protože máme 8 slotů, číslo klíčového slotu začíná od 0 do 7.
- ZAPNUTO znamená, že k tomuto konkrétnímu slotu je přiřazen klíč.
- Zde máme dva sloty s klíčem LUKS. Šifrovaný oddíl /dev/sdb1 LUKS má tedy přiřazeny dva klíče.
2. Přidat nový klíč LUKS
Chcete-li přidat novou přístupovou frázi LUKS (klíč LUKS) do šifrovaného oddílu /dev/sdb1 LUKS, použijte příkaz cryptsetup luksAddKey, jak je znázorněno níže.
# cryptsetup luksAddKey /dev/sdb1 Enter any passphrase: Enter new passphrase for key slot: Verify passphrase:
Ve výše uvedeném:
- Když je uvedeno „Zadejte libovolné přístupové heslo:“, měli byste zadat libovolné ze stávajících hesel pro /dev/sdb1. Jak jsme viděli výše, toto již mělo dvě hesla ze slotu 0 a slotu 1. Jakékoli z těchto hesel byste měli zadat jako první.
- Jakmile zadáte stávající heslo, můžete přiřadit nový klíč LUKS.
Kdykoli přidáte nový klíč LUKS, bude přidán do dalšího dostupného slotu. Protože jsme již měli dva existující klíče, byl nový klíč přidán do slotu č. 2, což byl další dostupný slot.
Slot č. 0 až 2 tedy bude říkat „POVOLENO“. Na /dev/sdba1 máme tři klíče LUKS.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
3. Přidejte nový klíč LUKS do konkrétního slotu
Místo toho, abyste LUKS přidali nový klíč do dalšího dostupného slotu, můžete také přidat nový klíč do konkrétního slotu.
K tomu použijte volbu -S v cryptsetup luksAddKey, jak je uvedeno níže.
V tomto příkladu přidáváme nový klíč LUKS do slotu č. 5. Nové přístupové heslo jsem přiřadil jako:PasswordforSlot5
# cryptsetup luksAddKey /dev/sdb1 -S 5
Jak vidíme níže, slot č. 5 nyní říká „POVOLENO“, zatímco slot č. 3 a č. 4 jsou stále ve stavu DISABLED.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: ENABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
V této fázi máme k šifrovanému oddílu /dev/sdb1 přiřazeny 4 klíče LUKS.
4. Smazat existující klíč LUKS
Chcete-li odstranit existující klíč z oddílu LUKS, použijte cryptsetup luksRemoveKey, jak je uvedeno níže.
V tomto příkladu stačí zadat heslo (klíč), které chcete vymazat.
Odebrat/vymazat/smazat klíč LUKS ze slotu. Nemusíte uvádět číslo slotu. Místo toho zadejte klíč, který chcete odstranit!.
V tomto příkladu, když se zobrazí výzva „Zadejte přístupové heslo LUKS k odstranění:“, zadal jsem klíč, který byl vytvořen v předchozím příkladu:PasswordforSlot5
# cryptsetup luksRemoveKey /dev/sdb1 Enter LUKS passphrase to be deleted:
Jak vidíte z následujícího výstupu luksDump, klíč ve slotu č. 5 je nyní vymazán.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
5. Odstraňte klíč LUKS pomocí luksKillSlot
Pokud nemáte klíč pro konkrétní slot, ale chcete jej pouze smazat, můžete to udělat pomocí příkazu cryptsetup luksKillSlot, jak je znázorněno níže.
V tomto příkladu odstraňujeme klíč ze slotu č. 2 LUKS.
K tomu musíte zadat klíč LUKS pro kterýkoli ze slotů. Toto je pouze jako ověření před odstraněním klíče ze slotu č. 2.
# cryptsetup luksKillSlot /dev/sdb1 2 Enter any remaining LUKS passphrase:
Jak vidíte z následujícího výstupu luksDump, klíč ve slotu#2 je nyní vymazán.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
6. Přidat nový klíč LUKS ze souboru
Můžete také přidat nový klíč LUKS na základě souboru klíčů, který již máte, jak je uvedeno níže.
# cryptsetup luksAddKey /dev/sdb1 masterkeyfile Enter any passphrase:
Ve výše uvedeném:
- masterkeyfile obsahuje nový klíč LUKS, který chcete přidat. Měl by to být binární soubor.
- Když se zobrazí výzva „Zadejte libovolné přístupové heslo:“, zadejte libovolný ze stávajících klíčů LUKS pro oddíl /dev/sdb1.
- Jak vidíte výše, nevyžádal si nový klíč LUKS, protože jej převzal ze souboru hlavního klíče.
Jak vidíte z následujícího výstupu luksDump, tento nový klíč ze souboru masterkey je přidán do slotu #2
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
7. Resetovat zapomenutý klíč LUKS – získat existující klíč
Pokud jste restartovali server a nemůžete připojit svůj šifrovaný oddíl LUKS, protože jste zapomněli heslo LUKS, pak máte smůlu, můžete jej resetovat.
Pokud je však šifrovaný oddíl LUKS již otevřen a pokud jste nerestartovali systém a zapomněli jste heslo LUKS pro oddíl, který je již připojen (alespoň LUKS byl otevřen jednou od posledního restartu), můžete přiřadit nový klíč LUKS.
V tomto scénáři „zapomněl jsem heslo LUKS“ můžete provést následující dva kroky:
- Extrahujte aktuální zašifrovaný klíč z oddílu LUKS
- Vytvořte nový klíč LUKS pomocí výše extrahovaného šifrovaného klíče
V tomto příkladu mám připojený oddíl /home1, což je šifrovaný oddíl LUKS, ale nemám k tomu heslo.
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 127G 44G 76G 37% / /dev/mapper/home1 93G 188M 88G 1% /home1
Název svazku je to, co je za „/dev/mapper/“ v 1. sloupci výše uvedeného výstupu příkazu df. V našem příkladu je tedy název svazku „home1“
Následující tabulka dmsetup –showkeys zobrazí zašifrované klíče všech oddílů, které jsou připojeny k vašemu systému.
# dmsetup table --showkeys home1: 0 197259264 crypt aes-cbc-essiv:sha256 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c 0 8:17 4096
Pole za „aes-cbc-essiv:sha256“ je zašifrované heslo. Získejte zašifrovaný klíč LUKS a uložte jej do souboru.
# vi existinglukskey.txt 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c
8. Reset Forgotten LUKS Key – Vytvořte soubor binárního klíče
Nyní musíme tento existující klíč převést z textového souboru na binární soubor. Použijte příkaz xxd, jak je uvedeno níže.
# xxd -r -p existinglukskey.txt existinglukskey.bin
Ve výše uvedeném:
- Volba
- -r je obrácená. Tím se hexdump převede na binární. Možnost
- -p je pro postscript. To označuje postscriptový souvislý hexdump styl.
- vstupní soubor existujícíinglukskey.txt
- výstupní soubor existinglukskey.bin. To nyní bude obsahovat stávající zašifrované heslo LUKS v binárním souboru.
9. Resetovat zapomenutý klíč LUKS – Přidat nový klíč
Nakonec přidejte nový klíč LUKS pomocí stávajícího klíče LUKS, který jsme extrahovali do binárního souboru.
# cryptsetup luksAddKey /dev/sdb1 --master-key-file <(cat existinglukskey.bin) Enter new passphrase for key slot: Verify passphrase:
Ve výše uvedeném:
- –master-key-file Zde zadejte binární soubor. Nepoužívejte existující lukskey.txt. Místo toho použijte existující lukskey.bin, který jsme vytvořili výše.
- Jak vidíte výše, luksAddKey nepožádal o existující heslo LUKS, protože je převzal z binárního souboru.
- Když se zobrazí výzva „Zadejte nové přístupové heslo pro slot klíče:“, zadejte nové heslo LUKS. Ale tentokrát na to nezapomeňte.
Znovu si pamatujte toto:Pokud po restartu systému zapomenete heslo LUKS, nemáte Luks (smůlu), protože jej nemůžete resetovat.
10. Vypsat LUKS MasterKey
Můžete také vyhodit MasterKey a uložit jej někde v bezpečí. Použijte volbu –dump-master-key spolu s luksDump, jak je uvedeno níže.
# cryptsetup luksDump --dump-master-key /dev/sdb1 Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: LUKS header information for /dev/sdb1 Cipher name: aes Cipher mode: cbc-essiv:sha256 Payload offset: 4096 UUID: 146d639a-757c-4bcb-aee6-8fe815345104 MK bits: 256 MK dump: 60 7f 48 28 70 c7 95 a9 b1 e3 07 ff bf c6 64 3e aa 21 9e 9e f8 c6 77 3d e0 2c d2 98 c8 fc da 3c
Mějte na paměti, že zásobník hlavičky LUKS musíte uložit na bezpečném místě. Pomocí výpisu hlavního klíče se někdo může dostat k šifrovanému oddílu LUKS.