Uwierzytelnianie dwuetapowe Yubikey Szyfrowanie całego dysku za pomocą LUKS

27

Niedawno kupiłem Yubikey Neo - sprytne małe sprzętowe urządzenie do uwierzytelniania drugiego czynnika. Jest przeznaczony przede wszystkim do używania z hasłami jednorazowymi i nowym protokołem U2F - ale od wersji 2 Yubikey obsługuje także uwierzytelnianie typu wyzwanie-odpowiedź HMAC-SHA1. HMAC-SHA1 łączy tajny klucz (przechowywany w Yubikey) i łączy go z hasłem, aby wygenerować odpowiedź.

Jak mogę połączyć Yubikey z konfiguracją Ubuntu FDE, aby używać 2FA z zaszyfrowanym dyskiem twardym?

seanlano
źródło

Odpowiedzi:

30

Grupa o nazwie PrivacyIdea utworzyła mały pakiet w celu dodania procedury initmfs HMAC-SHA1 do odpowiedzi, co oznacza, że ​​Ubuntu może zapytać cię o wyzwanie przekazania do Yubikey, a następnie użyć odpowiedzi, aby odblokować wolumin LUKS. W większości postępuję zgodnie z tymi instrukcjami , dodając kilka komentarzy. Proces ten jest w rzeczywistości bardzo łatwy do wykonania.

Przetestowałem to na Ubuntu 14.04, 16.04 i 18.04; używając Yubikey Neo. Powinien działać z każdym najnowszym Yubikey, z oprogramowaniem 2.0+ i każdą wersją Ubuntu po 14.04. Testowałem także Ubuntu 19.04 z Yubikey 5C, potrzebna była dodatkowa praca, ale można ją uruchomić. Mogą też istnieć inne sprzętowe urządzenia reagujące na wyzwanie HMAC-SHA1, z którymi to działa, ale nie wiem o żadnym z nich. Jak zawsze, przed kontynuowaniem upewnij się, że masz kopię zapasową danych - tutaj nie powinno być żadnych problemów, ale zawsze istnieje szansa, że ​​wszystko to zniszczy na twoim komputerze. Te instrukcje nie są objęte gwarancją.

Aktualizacja: od wersji Ubuntu 16.04 potrzebne pakiety znajdują się w głównych repozytoriach i nie jest potrzebne PPA.

Dodaj komentarz, jeśli masz pytania!


0. Wymagania wstępne

Aby to zadziałało, musisz już mieć skonfigurowane i działające szyfrowanie na pełnym dysku LUKS. Możesz to zrobić, wybierając odpowiednią opcję podczas instalacji Ubuntu. Aby uzyskać maksymalne bezpieczeństwo, podczas instalacji należy wybrać bardzo silne hasło. Jeśli twoje hasło nie jest do zera, przed kontynuowaniem zmień je na lepsze ( bardziej szczegółowe instrukcje tutaj ).

Poniższa metoda nie zastąpi żadnych istniejących haseł, ale zamiast tego doda kolejne hasło do jednego z gniazd LUKS. Dlatego jeśli stracisz swój Yubikey, nadal możesz odblokować komputer za pomocą dowolnego istniejącego hasła - sugeruję zanotować go i schować w bezpiecznym miejscu - będziesz również potrzebować go kilka razy podczas tej procedury. Twoje nowe hasło wyzwania Yubikey powinno nadal być dość silne, ale nie musi być tak długie, jak hasło użyte podczas instalacji Ubuntu.


1. Dodaj PrivacyIdea PPA i zainstaluj pakiet

W systemie Ubuntu 14.04

Otwórz terminal i uruchom następujące polecenie:

sudo add-apt-repository ppa:privacyidea/privacyidea 

Po wyświetleniu monitu naciśnij klawisz Enter, a następnie uruchom:

sudo apt-get update

Następnie zainstaluj pakiet za pomocą:

sudo apt-get install yubikey-luks

W systemie Ubuntu 16.04, 18.04

Nie potrzebujesz PPA, możesz zainstalować pakiet za pomocą:

sudo apt-get install yubikey-luks

W systemie Ubuntu 19.04

Zobacz tę odpowiedź, aby dowiedzieć się, jak zbudować yubikey-lukspakiet ze źródła dla Ubuntu 19.04.


2. Zainstaluj oprogramowanie Yubikey

Jeśli używasz funkcji HMAC-SHA1 Yubikey do czegoś innego, możesz pominąć ten rozdział. Skasuje każdą konfigurację w drugim gnieździe Yubikey, więc nie wykonuj tego kroku, jeśli używasz HMAC-SHA1 do innych celów w tym Yubikey.

Musisz skonfigurować Yubikey do pracy z Ubuntu, instalując wymagane oprogramowanie z Yubico PPA na Ubuntu 14.04 lub z głównego repozytorium Ubuntu 16.04 i nowszych.

W systemie Ubuntu 14.04

Jeśli nie zrobiłeś tego wcześniej, dodaj PPA i zainstaluj pakiet z:

sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization

W systemie Ubuntu 16.04, 18.04 (i nowszych)

sudo apt-get install yubikey-personalization

3. Zainicjuj gniazdo Yubikey dla HMAC-SHA1

Teraz musimy zaprogramować drugie gniazdo Yubikey z konfiguracją HMAC-SHA1. Spowoduje to usunięcie poprzedniej konfiguracji gniazda, która jest domyślnie pusta. Ponownie, jeśli używasz HMAC-SHA1 do czegoś innego , nie wydawaj tego polecenia - spowoduje to skasowanie konfiguracji. Możesz bezpiecznie użyć tego samego tajnego klucza w Yubikey dla tej konfiguracji LUKS, jak dla innych zastosowań. (Na przykład z innym komputerem korzystającym z LUKS + Yubikey).

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Terminal wyświetli informacje o wprowadzonych zmianach. Nie musisz tego zanotować, ale pokaże tajny klucz używany przez Yubikey w algorytmie HMAC-SHA1 do obliczenia odpowiedzi w przypadku wyzwania.


4. Zarejestruj Yubikey w LUKS Slot

Teraz zmodyfikujemy konfigurację LUKS, aby dołączyć odpowiedź z Yubikey jako jeden z kluczy deszyfrujących.

Partycja, którą musimy określić, zależy od tego, czy używasz BIOS-u, czy UEFI do uruchomienia komputera. W przypadku BIOS zaszyfrowany wolumin jest /dev/sda5domyślnie ustawiony na , a dla UEFI na /dev/sda3. Możesz to sprawdzić, otwierając disksnarzędzie i potwierdzając ścieżkę do partycji - powinna to być sda3albo sda5. UWAGA: Na nowszych komputerach z dyskami NVMe ścieżka będzie wyglądać podobnie /dev/nvme0n1p3.

Uruchom to w terminalu:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

Spowoduje to zapisanie w gnieździe 7 konfiguracji LUKS, postępuj zgodnie z instrukcjami wyświetlanymi w instalatorze (różnią się one nieznacznie w zależności od używanej wersji).

Więc wszystko gotowe! Powinieneś być w stanie zrestartować komputer, a jeśli twój Yubikey jest włożony, możesz wpisać hasło wyzwania i użyć Yubikey jako drugiego czynnika, aby odblokować partycję LUKS i uruchomić system. Po odszyfrowaniu dysku twardego możesz usunąć Yubikey.

Jeśli zgubisz swój Yubikey, nadal możesz wprowadzić oryginalne (mam nadzieję, że bardzo długie) hasło do odszyfrowania dysku twardego, a następnie możesz ponownie wykonać tę procedurę, aby zarejestrować nowy Yubikey.


Zmiana hasła wyzwania szyfrowania

Zmiana hasła w późniejszym terminie jest dość prosta, wystarczy użyć tego polecenia, aby zresetować tajny klucz. Zresetowanie tajnego klucza nie jest konieczne, ale nie zaszkodzi. Pamiętaj, że to zniszczy poprzedni tajny klucz, nie rób tego, jeśli używasz HMAC-SHA1 do czegoś innego z tym Yubikey. (Na przykład z innym komputerem korzystającym z LUKS + Yubikey).

 ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Następnie, podobnie jak w kroku 4 powyżej, aby zarejestrować nowe hasło do gniazda klucza LUKS, z wyjątkiem opcji wyczyszczenia gniazda 7 za pomocą tego polecenia:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

Po wyświetleniu monitu Enter any remaining passphraseużyj hasła zapasowego - nie hasła wyzwania Yubikey. Następnie wprowadź dwa razy nowe hasło wyzwania Yubikey, a na końcu po raz ostatni musisz wprowadzić hasło zapasowe.

Teraz twoje stare hasło wyzwania Yubikey zostało usunięte i tylko nowy odszyfruje dysk twardy. Twoje poprzednie hasło zapasowe pozostanie takie samo. Możesz zmienić to hasło, podążając za linkami w kroku 0 .


Uwaga na temat wpływu na bezpieczeństwo

Dodanie Yubikey zapewni Twojemu systemowi pewien poziom bezpieczeństwa - ktoś musi znać zarówno hasło wyzwania, jak i mieć Yubikey, aby móc odblokować dysk twardy (lub znaleźć twoje początkowe hasło, którego używasz teraz jako kopii zapasowej) . Jest jednak technicznie wykonalne, aby osoba atakująca odszyfrowała dysk twardy, jeśli zna hasło do wyzwania (na przykład „surfując na ramieniu” podczas pisania) i może uzyskać dostęp do Yubikey tylko przez krótki czas. Używając hasła wyzwania, mogą uzyskać odpowiedź od Yubikey i zapisać ją, a następnie użyć do odszyfrowania dysku twardego w dowolnym momencie bez Yubikey. Lub ponownie, jeśli osoba atakująca lub złośliwe oprogramowanie znał twoje hasło i był w stanie uruchomić kod na maszynie podłączonej do twojego Yubikey, może również wydać wyzwanie i zapisać odpowiedź. Dlatego niezwykle ważne jest zachowanie czujności podczas wprowadzania hasła-wyzwania i upewnienie się, że Yubikey zawsze znajduje się w bezpiecznym miejscu. Powinieneś także podłączać go tylko do zaufanego komputera. Jeśli stracisz kontrolę nad swoim Yubikey i podejrzewasz, że ktoś mógł go użyć, aby spróbować nauczyć się klucza deszyfrującego, wykonaj ponownie kroki 2 i 3, aby zresetować tajny klucz wewnątrz Yubikey i wybrać nowe hasło wyzwania. Zauważ, że jeśli przeciwnikowi udało się nauczyć jednego z twoich haseł (albo odpowiedzi HMAC-SHA1 z Yubikey, albo twojej kopii zapasowej), mogą wykonać kopię zapasową klucza głównego LUKS, a następnie użyć go do odszyfrowania dysku twardego, nawet jeśli zmienisz hasło w przyszłości. i aby upewnić się, że zawsze masz Yubikey w bezpiecznym miejscu. Powinieneś także podłączać go tylko do zaufanego komputera. Jeśli stracisz kontrolę nad swoim Yubikey i podejrzewasz, że ktoś mógł go użyć, aby spróbować nauczyć się klucza deszyfrującego, wykonaj ponownie kroki 2 i 3, aby zresetować tajny klucz wewnątrz Yubikey i wybrać nowe hasło wyzwania. Zauważ, że jeśli przeciwnikowi udało się nauczyć jednego z twoich haseł (albo odpowiedzi HMAC-SHA1 z Yubikey, albo twojej kopii zapasowej), mogą wykonać kopię zapasową klucza głównego LUKS, a następnie użyć go do odszyfrowania dysku twardego, nawet jeśli zmienisz hasło w przyszłości. i aby upewnić się, że zawsze masz Yubikey w bezpiecznym miejscu. Powinieneś także podłączać go tylko do zaufanego komputera. Jeśli stracisz kontrolę nad swoim Yubikey i podejrzewasz, że ktoś mógł go użyć, aby spróbować nauczyć się klucza deszyfrującego, wykonaj ponownie kroki 2 i 3, aby zresetować tajny klucz wewnątrz Yubikey i wybrać nowe hasło wyzwania. Zauważ, że jeśli przeciwnikowi udało się nauczyć jednego z twoich haseł (albo odpowiedzi HMAC-SHA1 z Yubikey, albo twojej kopii zapasowej), mogą wykonać kopię zapasową klucza głównego LUKS, a następnie użyć go do odszyfrowania dysku twardego, nawet jeśli zmienisz hasło w przyszłości. wykonaj ponownie kroki 2 i 3, aby zresetować tajny klucz w Yubikey i wybierz nowe hasło wyzwania. Zauważ, że jeśli przeciwnikowi udało się nauczyć jednego z twoich haseł (albo odpowiedzi HMAC-SHA1 z Yubikey, albo twojej kopii zapasowej), mogą wykonać kopię zapasową klucza głównego LUKS, a następnie użyć go do odszyfrowania dysku twardego, nawet jeśli zmienisz hasło w przyszłości. wykonaj ponownie kroki 2 i 3, aby zresetować tajny klucz w Yubikey i wybierz nowe hasło wyzwania. Zauważ, że jeśli przeciwnikowi udało się nauczyć jednego z twoich haseł (albo odpowiedzi HMAC-SHA1 z Yubikey, albo twojej kopii zapasowej), mogą wykonać kopię zapasową klucza głównego LUKS, a następnie użyć go do odszyfrowania dysku twardego, nawet jeśli zmienisz hasło w przyszłości.Strona podręcznika dla cryptsetup wyjaśnia to, spójrz na sekcję luksHeaderBackup . Jeśli podejrzewasz, że tak się stało, musisz utworzyć zupełnie nowy wolumin LUKS, aby chronić swoje dane.

seanlano
źródło
Aktualizacja: Próbowałem tego również w wersji 15.04, wygląda na to, że PPA nie ma kompilacji wymaganego pakietu, więc muszę zmienić linię DEB w źródłach oprogramowania, aby używać repozytorium „zaufanego” zamiast „żywego” „. Po wprowadzeniu tej zmiany moja konfiguracja LUKS + Yubikey działa teraz 15.04.
seanlano
4
Nie korzystaj już z repozytorium prywatności! Pakiet jest teraz zawarty w starszym debianie!
cornelinux
1
Jest sposób na uniknięcie logowania bez yubikey: zmieniaj hasło luksa za każdym razem, gdy użytkownik się loguje. Tutaj znajduje się implementacja Gentoo: github.com/flowolf/initramfs_ykfde Można go w krótkim czasie dostosować do Ubuntu.
Bez nazwy_1
1
Domyślam się, że ta sama procedura działa w przypadku nowej wersji 18.04 LTS?
Mark Veenstra
2
Próbowałem z Ubuntu 18.04 i działa dobrze.
jetole
0

Aktualizacja dla Ubuntu 19.04:

Wygląda na to, że od Ubuntu 19.04 (a może 18.10, nie wypróbowałem tego wydania) cryptsetupzmieniło się tylko na tyle, aby przerwać sposób, w jaki yubikey-luksdziałał. To zatwierdzenie z wcześniejszego repozytorium wydaje się implementować poprawkę, ale oryginalne repozytorium nie wydaje się być aktualizowane od października 2018 r. Znalazłem ten rozwidlenie repozytorium, które ma poprawkę, a także kilka innych elementów porządkowania - i udało się zbudować pakiet, który działa 19.04.

Ponieważ nie mogłem znaleźć istniejącej wersji zaktualizowanego rozwidlenia, metoda rozpoczęcia yubikey-lukspracy polega na uzyskaniu kodu źródłowego i zbudowaniu pakietu DEB lokalnie, a następnie jego zainstalowaniu.

Postępuj zgodnie z krokami z mojej poprzedniej odpowiedzi , z wyjątkiem tego, że zastąp krok 1 poniższym:


1. Pobierz źródło yubikey-luks, skompiluj i zainstaluj pakiet

Zainstaluj zależności kompilacji za pomocą:

sudo apt install dh-exec devscripts expect yubikey-personalization

Następnie pobierz i rozpakuj archiwum źródłowe:

mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*

Zbuduj pakiet z:

make builddeb NO_SIGN=1

Następnie zainstaluj:

sudo dpkg -i DEBUILD/yubikey-luks_*.deb

Następnie kontynuuj wykonywanie pozostałych kroków w mojej pierwszej odpowiedzi.

Mam nadzieję, że do 19.10 wersja yubikey-luks głównego archiwum Ubuntu może zostać zaktualizowana, aby ręczne budowanie nie było wymagane.

Jako bonus, nowsza wersja ma plik konfiguracyjny, który można znaleźć na stronie /etc/ykluks.cfg. Komunikat wyświetlany podczas rozruchu można skonfigurować w tym pliku.

seanlano
źródło