GNU/Linux >> Znalost Linux >  >> Linux

10 příkladů šifrování Linuxu pro správu klíčů LUKS (Jak přidat, odebrat, změnit, resetovat šifrovací klíč LUKS)

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:

  1. 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.
  2. 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:

  1. Extrahujte aktuální zašifrovaný klíč z oddílu LUKS
  2. 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.


Linux
  1. Jak změnit Shell v Linuxu

  2. 7 Příklady příkazů Linux chkconfig – Přidat, odebrat, zobrazit, změnit služby

  3. Jak nastavit klíče SSH pro přihlášení k ssh „bez hesla“ v systému Linux

  1. Jak změnit, odebrat nebo zakázat uživatelské heslo v systému Linux

  2. Přidat uživatele do skupiny v Linuxu, jak na to (s příklady)

  3. Jak změnit heslo pro šifrování celého disku?

  1. Jak přidat nebo odebrat uživatele ze skupiny v Linuxu

  2. Jak používat příklady zámku C Mutex pro synchronizaci vláken v Linuxu

  3. 5 příkladů dotykových příkazů Linuxu (jak změnit časové razítko souboru)