Google Authenticator – dwuetapowe logowanie do Linuxa

Dzisiaj chciałbym napisać troszkę o Google Authenticator, czyli narzędziu do dwuetapowego logowania, wraz z przykładem implementacji na Raspberry Pi.

Temat bezpieczeństwa systemów informatycznych i dostępu do nich jest ostatnio coraz bardziej popularny. Każdy chciałby, aby systemy, których używamy były jak najbezpieczniejsze. Logowanie dwuetapowe to dość szeroko wykorzystywane rozwiązanie, wymagające oprócz nazwy użytkownika i hasła, podania jednorazowego, unikalnego hasła które jest przekazywane w formie tokenu, kodu SMS, generatora kodów w telefonie komórkowym, czy też automatycznego połączenia telefonicznego.

W tym wpisie pragnę głównie skupić się na generatorze kodów w formie aplikacji na telefon komórkowy, dostępnej zupełnie za darmo na praktycznie wszystkie systemy mobilne jako kliencie i modułowi do systemu Linux, który pozwoli na wykorzystywanie takiej formy logowania.

Konfigurowanie serwera do obsługi logowania dwuetapowego z wykorzystaniem Google Authenticator

Ten poradnik będzie podzielony na dwie części – instalacja na serwerze i na kliencie (wykorzystam w tym celu systemy Android i BlackBerry OS). W moim przypadku instalację wykonam na Raspbianie, forku systemu Debian GNU\Linux na platformie Raspberry Pi 2.

Krokiem pierwszym instalacji jest zaktualizowanie informacji o dostępnych pakietach do instalacji i aktualizacji systemu. Wykonujemy to poleceniem:

Instalowanie Google Authenticator w systemie Linux

Instalowanie Google Authenticator w systemie Linux

[email protected] / $ sudo apt-get update && sudo apt-get upgrade

po zalogowaniu się do konsoli.

Kolejnym krokiem jest instalacja serwera Google Authenticator na serwerze Linuxowym. Jest to projekt o otwartym kodzie źródłowym i żadne dane nie są wysyłane do Google – źródła serwera i klienta są dostępne na koncie Github firmy Google. Cały proces instalacji sprowadza się do wpisania standardowej Debianowej komendy:

[email protected] / $ sudo apt-get install libpam-google-authenticator

Po zainstalowaniu aplikacji musimy ją skonfigurować i ta część procesu jest najważniejsza 🙂 Musimy wykonać ją dla każdego użytkownika, który ma mieć dostęp do systemu z wykorzystaniem TFA (Two Factor Authentication – Uwierzytelnianie Dwuetapowe). Konfigurację rozpoczynamy od wydania polecenia:

[email protected] / $ google-authenticator
Konfiguracja Google Authenticator w systemie Linux

Konfiguracja Google Authenticator w systemie Linux

Wynikiem takiego działania jest wygenerowany kod QR, nowy Secret Key, Verification Key oraz 5 kodów zapasowych, które przydadzą się w sytuacji, gdy nie będziemy mieli pod ręką urządzenia z zainstalowanym Google Authenticator.

Jeżeli używamy zdalnego terminala to gorąco zachęcam do wykonania zrzutu ekranu i zapisaniu go w bezpiecznym miejscu – będzie on potrzebny do konfiguracji naszego klienta.

Kreator zada kilka dodatkowych pytań, czy ma zaktualizować nasz profil danymi, które wygenerował, potwierdzamy to naciskając y.
Następnie odpowiadamy na pytanie, czy chcemy uniemożliwić wielokrotne logowanie tym samym kodem (wynikiem tego jest ograniczenie kolejnych logowań do terminala do 30 sekund, ale zwiększa możliwość zauważenia i przeciwdziałania atakom man-in-the-middle). Odpowiadamy zależnie od naszych potrzeb.

Kolejne pytanie zadane przez kreator dotyczy możliwych opóźnień w komunikacji i wydłużenie domyślnego czasu przechowywania informacji o poprzednim tokenie (kod zmienia się co 30 sekund, ale jeżeli połączenie jest wolne, to czas potrzebny na przekazanie kodu może się troszkę wydłużyć). Jeżeli mamy do czynienia ze słabym połączeniem sieciowym to warto odpowiedzieć y na zadane pytanie, w przeciwnym razie, dla większego bezpieczeństwa lepiej wybrać n.

Tutaj warto zauważyć, że po stronie serwerowej jest to rozwiązanie time-based więc wymaga ono prawidłowego zsynchronizowania czasu na urządzeniu klienckim, aby zarówno klient jak i serwer miały możliwość generowania tego samego kodu, w oparciu o ten sam czas.
Ostatnie pytanie dotyczy limitu prób logowania z wykorzystaniem kodu z tokenu. Jeżeli system nie posiada odpowiednich zabezpieczeń blokujących konto po wpisaniu niewłaściwego hasła to ta opcja konfiguracyjna pozwala na zabezpieczenie naszego konta i blokadzie logowania na 30 sekund, jeżeli kod z tokenu został podany błędnie 3 razy. Ograniczy to ilość prób logowań, które mogą zostać przeprowadzone przez atakującego. Tutaj odpowiadamy również zgodnie z naszymi potrzebami.

Ostatnim krokiem jest rekonfiguracja serwera SSH aby podczas logowania wymagał podania kodu jednorazowego. Aby to zrobić wykonujemy polecenie:

sudo nano /etc/pam.d/sshd

i dodajemy linijkę

auth       required     pam_google_authenticator.so

w miejscu zaznaczonym na obrazku:

Konfiguracja Demona SSH w systemie Linux

Konfiguracja Demona SSH w systemie Linux

 

 

 

 

 

 

 

Następnie naciskamy Ctrl+X, potem Y i na końcu Enter aby zapisać zmiany i opuścić edytor Nano. Musimy wyedytować jeszcze jeden plik, zanim będziemy mogli powiedzieć, że praca jest zakończona 🙂 Otwieramy ponownie nano, ale tym razem otwieramy do edycji plik sshd_config:

[email protected] ~ $ sudo nano /etc/ssh/sshd_config

odszukujemy linijkę

ChallengeResponseAuthentication no

i zmieniamy na

ChallengeResponseAuthentication yes
Konfiguracja Demona SSH w systemie Linux

Konfiguracja Demona SSH w systemie Linux

 

 

 

 

 

 

 

po czym zapisujemy zmiany i opuszczamy edytor. Teraz musimy zrestartować demona SSH albo cały serwer, jako, że używam RPi, wybieram opcję restartu poleceniem

sudo reboot -f

Po restarcie, podczas logowania powita nas komunikat z prośbą o nazwę użytkownika, następnie o kod logowania TWA, a następnie o hasło do systemu.

Jeżeli serwer jest już skonfigurowany to czas na konfigurację klienta:

Konfigurowanie systemu Android i iOS do logowania dwuetapowego z wykorzystaniem aplikacji Google Authenticator

Konfigurację systemu Android i iOS rozpoczynamy od pobrania i zainstalowania aplikacji Google Authenticator ze sklepu Google Play lub AppStore.

Po jej zainstalowaniu i uruchomieniu zostajemy poinformowani, że będziemy potrzebowali tej aplikacji po każdym logowaniu na konto, dla którego włączymy TFA. Naciskamy Rozpocznij konfigurację na dole, a następnie, w zależności od tego czy zapisaliśmy sobie kod QR czy też po prostu posiadamy secret key.
Ja skorzystam z opcji z kodami, ponieważ nie posiadam zainstalowanego na telefonie żadnego programu do obsługi kodów QR.
Kreator prosi nas o podanie nazwy konta (tutaj możemy wpisać na przykład nazwę hosta albo po prostu przyjazną i jednoznaczną nazwę identyfikującą nasz serwer), oraz o podanie SECRET KEY z poprzedniej części tego wpisu. Zostawiamy aktywne  pole „Na bazie daty” i klikamy dodaj. Wyświetlony na ekranie kod zmienia się co 30 sekund i możemy użyć go do zalogowania się do serwera.

Konfigurowanie konta Google Authenticator na Linuxie

Konfigurowanie konta Google Authenticator w systemie Android.

Konfigurowanie systemu BB10 do logowania dwuetapowego z wykorzystaniem aplikacji GAuth

Konfigurację terminala BlackBerry z systemem BB10 rozpoczynamy od pobrania aplikacji GAuth z BlackBerry World. Po zainstalowaniu usuwamy domyślne konto [email protected] naciskając na przycisk X obok jednorazowego tokenu, klikamy w lewym górnym roku na Add, wpisujemy nazwę konta i nasz Secret key i klikamy Add. Kod będzie się generował automatycznie.

 

Konfigurowanie GAuth na BB OS 10

Konfigurowanie GAuth na BB OS 10

Konfigurowanie GAuth na BB OS 10

Konfigurowanie GAuth na BB OS 10

Konfigurowanie GAuth na BB OS 10

Konfigurowanie GAuth na BB OS 10

 

 

Ta strona używa ciasteczek Więcej informacji

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Zamknij