YubiKey dobry na wszystko, czyli sprzętowe wsparcie logowania po SSH

dodał 30 czerwca 2017 o 07:03 w kategorii HowTo  z tagami:
YubiKey dobry na wszystko, czyli sprzętowe wsparcie logowania po SSH

Macie już swojego YubiKeya? Przeczytajcie koniecznie. A jeśli nie macie, to kupcie a potem przeczytajcie, bo wygląda na to, że te małe breloczki są bardzo ciekawym narzędziem zwiększającym bezpieczeństwo Waszych kont.

W poprzednich artykułach opisywaliśmy w jaki sposób możemy udowodnić swoją tożsamość łącząc się do usługi SSH z wykorzystaniem kluczy publicznych oraz prywatnych oraz z użyciem usługi Google Authenticator. W tym artykule przedstawimy kolejny sposób na wzmocnienie procesu uwierzytelniania stosując uwierzytelnianie wspierane sprzętowo.

Artykuł pod patronatem Aruba Cloud

We współpracy z firmą ArubaCloud pokazaliśmy Wam, jak postawić swój serwer backupów, jak skonfigurować własny serwer VPN i podłączyć do niego komputer, telefony komórkowe oraz domowy ruter a także jak schować się przed cenzurą sieci i jak zacząć serwer zabezpieczać, jak postawić swój własny zdalny pulpitswój serwer WWWjak monitorować zmiany w plikachjak zablokować reklamy na komórce oraz jak skonfigurować bezpieczną kopię zapasową.

Jeśli nie macie jeszcze swojego własnego serwera, to jest to dobra okazja by się w taki wyposażyć. Aruba oferuje dwa miesiące korzystania ze swojego podstawowego serwera gratis – a po zakończeniu promocji będzie on Was kosztował zaledwie 4 złote miesięcznie. Instrukcję jak krok po kroku skorzystać z promocji i uruchomić swój serwer znajdziecie w tym artykule. Jeśli macie już swój serwer – to zapraszamy do lektury kolejnych akapitów.

Mały, ale wariat

Klucze YubiKey powoli rewolucjonizują bezpieczeństwo. Małe, wygodne, łatwe w użyciu pomagają zabezpieczać dostęp do kont Google, Facebooka, Dropboksa, GitHuba czy menedżera haseł a dzięki wszechstronności także do nieograniczonej liczby różnorakich systemów w wielu firmach i organizacjach. Dzisiaj spróbujemy Was namówić do ich użycia w celu zabezpieczenia dostępu do usługi SSH na Waszych serwerach. Zrobimy to krok po kroku w oparciu o funkcję umożliwiającą przechowywanie na YubiKeyu kluczy PGP. Jeśli chcecie od razu przejść do konfiguracji, to zajrzyjcie dwa akapity niżej.

Co potrafi YubiKey

W naszym poradniku użyjemy YubiKey Neo, jako jednego z posiadających najwięcej różnych funkcji. Dostępnych jest wiele różnych modeli, warto zatem przejrzeć ich funkcje i wybrać taki, jaki najbardziej pasuje do naszych zastosowań. YubiKeye potrafią wiele. Poniżej krótkie podsumowanie.

Klucz Yubikey można wykorzystać na wiele sposobów uwierzytelniania niezależnie od siebie:

  • U2F – U2F jest otwartym standardem uwierzytelniania, który umożliwia urządzeniom kluczy na bezpieczne uzyskiwanie dostępu do dowolnej liczby usług sieciowych – natychmiast i bez potrzeby instalowania sterowników lub oprogramowania klienckiego. (wykorzystywany np. w logowanie do konta Facebooka czy Google),
  • Yubi OTP – prosty, a zarazem silny mechanizm uwierzytelniania, który jest obsługiwany przez wszystkie YubiKeye. Yubico OTP może być używany jako drugi etap w uwierzytelnianiu 2-etapowym,
  • OATH-TOPT (Time-Based One-Time Password Algorithm) – wygenerowane hasło (PIN) oparte na funkcji czasu – ulegają zmianie, np. co 30 sekund,
  • OATH-HOPT (Hmac-Based One-Time Password Algorithm) – działa tak samo jak TOPT z wyjątkiem tego, że zamiast funkcji czasu używany jest licznik uwierzytelniania,
  • Personal Identity and Verification Card (PIV) – Umożliwia podpisanie i deszyfrowanie podpisów RSA lub ECC przy użyciu prywatnego klucza zapisanego w YubiKey. YubiKey działa w tym przypadku jako inteligentna karta, za pośrednictwem wspólnych interfejsów, takich jak PKCS # 11. PIV wykorzystuje protokół CCID (wykorzystywany np. w firmach do logowania do komputera za pomocą dedykowanej karty chipowej),
  • CCID – Protokół interfejsu karty chipowej (protokół karty chipowej) to protokół USB umożliwiający podłączenie karty inteligentnej do komputera za pomocą czytnika kart, przy użyciu standardowego interfejsu USB,
  • OpenPGP jest otwartym standardem do podpisywania i szyfrowania. Umożliwia podpisywanie / szyfrowanie przez RSA lub ECC operacji przy użyciu klucza prywatnego zapisanego na karcie inteligentnej (takiej jak YubiKey NEO), za pośrednictwem wspólnych interfejsów, takich jak PKCS #11.

YubiKey NEO obsługuje OTP, Smart Card (CCID) i U2F. Umożliwia zarówno połączenie przez USB jak i bezdotykowe NFC, a także standard MIFARE.

Jak skonfigurować YubiKey do współpracy z OpenSSH

Aby skorzystać z naszego YubiKey Neo do połączenia z OpenSSH, wgramy na niego nasz klucz PGP. Będzie on tam bezpieczny – jego wydobycie przez potencjalnych włamywaczy będzie bardzo utrudnione. Poniżej znajdziecie film pokazujący całą operację, a pod nim opis tekstowy.

Zaprezentujemy najłatwiejszy sposób wygenerowania pary kluczy PGP o długości 2048 bitów w systemie Windows. Analogiczną operację można oczywiście przeprowadzić w innym systemie operacyjnym.

1) Instalujemy oprogramowanie Gpg4win.

2) Uruchamiamy program Kleopatra. W głównym oknie programu wybieramy: Settings -> Configure Kleopatra -> GnuPG System -> Zakładka GPG Agent, zaznaczamy opcję „Włączenie obsługi putty”.

3) Pobieramy YubiKey NEO Manager.

4) Uruchamiamy aplikację YubiKey NEO Manager .W aplikacji wybieramy podłączone urządzenie i upewniamy się, że mamy zaznaczoną opcję CCID (Chip Card Interface Device).

5) Uruchamiamy cmd.exe. W oknie konsoli uruchamiamy polecenie:

gpg --card-edit

6) Uzyskujemy dostęp do poleceń administratora wydając polecenie:

gpg/karta> admin

7) Ustawiamy podstawowe informacje o właścicielu karty:

gpg/karta> name

8) Generujemy parę kluczy:

gpg/karta> generate
 Stworzyć poza kartą kopię zapasową klucza szyfrującego? T
 Okres ważności klucza? (0) 1y
 Klucz traci ważność 06/25/19 14:15:01 środkowoeuropejski czas letni
 Czy wszystko się zgadza (t/N)? t

 GnuPG musi utworzyć identyfikator użytkownika do identyfikacji klucza.
 Imię i nazwisko: Krystian K
 Adres poczty elektronicznej:
 Komentarz:

Zmienić (I)mię/nazwisko, (K)omentarz, adres (E)mail, przejść (D)alej czy (W)yjść z programu? D

8) Ustalamy kod PIN oraz Admin PIN:

gnupg/karta> passwd

Domyślny Admin PIN = 12345678 (8+ znaków), domyślny PIN = 123456 (6+ znaków).

8) Eksportujemy klucz publiczny do pliku. W programie Kleopatra wybieramy nasz klucz, wybieramy „Export Certificate” i wskazujemy gdzie chcemy zapisać klucz.

Jako szablon instalacyjny w Aruba Cloud wybraliśmy system Debian/GNU 8.0. Za pomocą programu PuTTY logujemy się na serwer celem zaimportowania klucza.

9) Wgrywamy wyeksportowany publiczny klucz PGP na serwer. Na serwerze zawartość wyeksportowanego pliku zapisujemy tymczasowego pliku „klucz.pgp” w katalogu domowym.

10) Importujemy wgrany klucz PGP wydając polecenie:

$ gpg --import klucz.pgp

11) Sprawdzamy informacje o zaimportowanym kluczu:

$ gpg --list-keys

12) Jeśli wszystko się zgadza, usuwamy plik 'klucz.pgp’:

$ rm klucz.pgp

13) Tworzymy katalog .ssh w katalogu domowym:

$ mkdir .ssh
$ chmod 700 .ssh

14) Zaimportowany klucz PGP konwertujemy na klucz SSH:

$ gpgkey2ssh C4F24B88 > .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

To wszystko po stronie serwera – możemy się wylogować i przetestować uwierzytelnianie za pomocą naszego klucza. Ostatnim krokiem jest rekonfiguracja programu PuTTY:

15) Zaznaczamy opcję: Connections > SSH > Auth i zaznaczamy pole „Allow agent forwarding”.

16) Logujemy się na serwer za pomocą certyfikatu bez podawania hasła do konta

Ciąg dalszy nastąpi?

Jeśli podoba Wam się koncept używania YubiKeya, to dajcie znać – przygotujemy wtedy kolejne poradniki opisujące jego różne zastosowanie.