Istnieje kilka sposobów logowania się na serwerze przez SSH. Metody obejmują logowanie za pomocą hasła, logowanie za pomocą klucza i uwierzytelnianie dwuskładnikowe.
Uwierzytelnianie dwuskładnikowe jest znacznie lepszym rodzajem ochrony. W przypadku naruszenia bezpieczeństwa komputera osoba atakująca nadal potrzebuje kodu dostępu do logowania.
W tym samouczku dowiesz się, jak skonfigurować uwierzytelnianie dwuskładnikowe na serwerze Ubuntu za pomocą Google Authenticator i SSH.
Krok 1: Wymagania wstępne
	- Serwer Ubuntu 14.04 (lub nowszy).
- Użytkownik inny niż root z dostępem sudo.
- Smartfon (Android lub iOS) z zainstalowaną aplikacją Google Authenticator. Możesz także użyć Authy lub dowolnej innej aplikacji obsługującej logowanie oparte na TOTP.
Krok 2: Instalowanie biblioteki Google Authenticator
Musimy zainstalować moduł Google Authenticator Library dostępny dla Ubuntu, który pozwoli serwerowi odczytać i zweryfikować kody. Uruchom następujące polecenia.
sudo apt-get update
sudo apt-get install libpam-google-authenticator
Aby skonfigurować moduł, po prostu uruchom następujące polecenie.
google-authenticator
Po uruchomieniu polecenia zostaną zadane pewne pytania. Pierwsze pytanie brzmiałoby:
Do you want authentication tokens to be time-based (y/n)
Naciśnij, ya otrzymasz kod QR, tajny klucz, kod weryfikacyjny i awaryjne kody zapasowe.
Wyjmij telefon i otwórz aplikację Google Authenticator. Możesz zeskanować kod QR lub dodać tajny klucz, aby dodać nowy wpis. Gdy to zrobisz, zanotuj kody zapasowe i chroń je gdzieś. W przypadku zagubienia lub uszkodzenia telefonu możesz użyć tych kodów do zalogowania się.
W przypadku pozostałych pytań naciśnij przycisk, ygdy zostaniesz poproszony o aktualizację .google_authenticatorpliku, yaby uniemożliwić wielokrotne użycie tego samego tokena, nzwiększyć okno czasowe i ywłączyć ograniczenie prędkości.
Będziesz musiał powtórzyć krok 3 dla wszystkich użytkowników na twoim komputerze, w przeciwnym razie nie będą mogli się zalogować, gdy skończysz z tym samouczkiem.
Teraz, gdy wszyscy użytkownicy na Twoim komputerze skonfigurowali aplikację uwierzytelniającą Google, nadszedł czas, aby skonfigurować SSH do korzystania z tej metody uwierzytelniania w stosunku do bieżącej.
Wpisz następujące polecenie, aby edytować sshdplik.
sudo nano /etc/pam.d/sshd
Znajdź linię @include common-authi skomentuj jak poniżej.
# Standard Un*x authentication.
#@include common-auth
Dodaj następujący wiersz na dole tego pliku.
auth required pam_google_authenticator.so
Naciśnij, Ctrl + Xaby zapisać i wyjść.
Następnie wprowadź następujące polecenie, aby edytować sshd_configplik.
sudo nano /etc/ssh/sshd_config
Znajdź termin ChallengeResponseAuthenticationi ustaw jego wartość na yes. Znajdź także termin PasswordAuthentication, odkomentuj go i zmień jego wartość na no.
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
Następnym krokiem jest dodanie następującego wiersza na dole pliku.
AuthenticationMethods publickey,keyboard-interactive
Zapisz i zamknij plik, naciskając Ctrl + X. Teraz, gdy skonfigurowaliśmy serwer SSH do korzystania z Google Authenticator, czas na jego ponowne uruchomienie.
sudo service ssh restart
Spróbuj zalogować się ponownie na serwerze. Tym razem zostaniesz poproszony o podanie kodu Authenticator.
ssh user@serverip
Authenticated with partial success.
Verification code:
Wpisz kod generowany przez aplikację, aby zalogować się pomyślnie.
Uwaga
W przypadku zgubienia telefonu użyj kodów zapasowych z kroku 2. Jeśli zgubiłeś kody zapasowe, zawsze możesz je znaleźć w .google_authenticatorpliku w katalogu osobistym użytkownika po zalogowaniu za pomocą konsoli Vultr.
Wniosek
Uwierzytelnianie wieloskładnikowe znacznie poprawia bezpieczeństwo serwera i pozwala pomóc w pokonywaniu typowych ataków siłowych.
Inne wersje