# Dwuetapowa weryfikacja dostępu do Wirtualnej Maszyny
Wielu usług internetowych wciąż wykorzystuje logowania wyłącznie z wykorzystaniem nazwy użytkownika i hasła. Jednak takie podejście nie jest wystarczające bezpieczne w dzisiejszym świecie, w którym co dzień zdarzają się ataki szkodliwego oprogramowania powodujące kradzież haseł lub kluczy.
W trosce o bezpieczeństwo zdalnego dostępu do Wirtualnych Maszyn przedstawiamy jak wprowadzić mechanizm, który dodaje dodatkową warstwę ochrony konta użytkownika uzyskującego dostęp - weryfikacje dwuetapową.
Dwuetapowa weryfikacja jest jak posiadanie drugiego zamka w drzwiach. Po jej włączeniu, gdy użytkownik uzyskuje dostęp do serwera, zostanie wpierw poproszony o podanie pierwszego czynnika np. hasła (dowód, że Użytkownik coś zna), a następnie o drugi czynnik - jednorazowy kod z urządzenia skojarzonego z użytkownikiem (dowód, że coś Użytkownik posiada). Kod jednorazowy ulega nieustannej zmianie co 30 sekund, więc jest odporny na kradzież. Te liczne czynniki zwiększają bezpieczeństwo zarządzanych Wirtualnych Maszyn.
Dzięki dwuetapowej weryfikacji można powstrzymać intruzów, nawet jeśli przechwycą hasło lub klucz SSH na przykład poprzez infekcję komputera. Jest to istotne, gdyż gdy ktoś ukradnie hasło, może zazwyczaj dowolnie modyfikować konfiguracje serwera, a przede wszystkim wykraść dane z niego narażając Organizacje na poważne szkody. Po wprowadzeniu dwuetapowej weryfikacji inruz, aby dostać się do Wirtualnej Maszyny, będzie potrzebował nie tylko hasła, ale jeszcze dostępu do telefonu Użytkownika.
W celu uchronienia się przed tym można wykorzystać dwuetapową weryfikację. Wystarczy odpowiednia konfiguracja przez administratora systemu operacyjnego, a następnie konfiguracja przez użytkowników odpowiedniej aplikacji na urządzeniu mobilnym, takim jak tablet lub smartfon.
W przypadku dostępu do Platformy także można w prosty sposób włączyć weryfikacje dwuetapową dla swojego konta Użytkownika, aby chronić zarządzane Zasoby przed nieuprawnioną modyfikacją.
# Wymagania wstępne
- zainstalowany system Ubuntu, na przykład w Wirtualnej maszynie utworzonej zgodnie z instrukcją
- zainstalowana na urządzeniu mobilnym aplikacja wspierająca dwuetapową weryfikacje tj. Authy (opens new window), Google Authenticator (opens new window).
# Przygotowanie serwera serwera
# Instalacja libpam-google-authenticator
Uaktualnij indeks pakietów w repozytoriach:
apt-get update
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
Zainstaluj wymagane pakiety wykonując następujące polecenie:
apt-get install libpam-google-authenticator
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
# Konfiguracja konta użytkownika
# Skojarzenie aplikacji wspierającej dwuetapową weryfikacje
Wykonaj następujące polecenie:
google-authenticator
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
Postępuj zgodnie z instrukcjami wyświetlonymi na ekranie po wykonaniu polecenia. Zostanie wyświetlony kod QR, który należy zapisać w aplikacji wspierającej dwuetapową weryfikacje. Operacje należy powtórzyć dla każdego użytkownika indywidualnie.
# Konfiguracja PAM
# Konfiguracja opcjonalnej dwuetapowej weryfikacji
Otwórz do edycji plik /etc/pam.d/common-auth
wykonując następujące polecenie:
sudo nano /etc/pam.d/common-auth
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
Dopisz na końcu pliku następujący wiersz:
auth required /usr/local/lib/pam_google_authenticator.so nullok
# Wymuszenie dwuetapowej weryfikacji
Dopisz na końcu pliku następujący wiersz:
auth required /usr/local/lib/pam_google_authenticator.so
Zapisz wprowadzone zmiany i zamknij edytor.
Zmiana określa metody uwierzytelniania interaktywnego np. w graficznej konsoli Wirtualnej Maszyny, które należy pomyślnie ukończyć, aby użytkownik uzyskał dostęp.
# Konfiguracja serwera SSH
# Określ metody uwierzytelniania dla dostępu SSH
Otwórz do edycji plik /etc/ssh/sshd_config/
wykonując następujące polecenie:
sudo nano /etc/ssh/sshd_config/
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
Odszukaj wiersz pasujący do wzorca AuthenticationMethods .*
i zastąp go następującym:
AuthenticationMethods publickey,keyboard-interactive
Zapisz wprowadzone zmiany i zamknij edytor.
# Przeładuj serwer SSH
W celu przeładowania usługi wykonaj następujące polecenie:
sudo systemctl reload sshd
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
Od tego momentu do logowania wymagane jest wykorzystanie klucza SSH, hasła oraz jednorazowego kodu.
# Umożliwienie logowanie kluczem SSH i jednorazowym kodem
W celu zniesienia wymogu podania hasła w przypadku dostępu poprzez SSH należy pominąć pam_unix.so
jako wymaganą forma uwierzytelniania dla SSH.
# Zdefiniowanie form uwierzytelniania dla SSH
Utwórz nowy plik konfiguracyjny:
sudo nano /etc/pam.d/auth-sshd
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
Wklej poniższą zawartość:
auth required pam_google_authenticator.so
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
Otwórz do edycji plik /etc/pam.d/sshd
wykonując następujące polecenie:
sudo nano /etc/pam.d/sshd
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).
Odszukaj wiersz pasujący do wzorca @include common-auth
i zastąp go następującym:
@include auth-sshd
Zapisz wprowadzone zmiany i zamknij edytor.
# Przeładuj serwer SSH
W celu przeładowania usługi wykonaj następujące polecenie:
sudo systemctl reload sshd
Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).