Jak mogę użyć generatora kodów dostępu do uwierzytelnienia do zdalnego logowania?

55

Chciałbym wzmocnić uwierzytelnianie moich logowań SSH, dodając kolejny czynnik: urządzenie generujące kod dostępu lub aplikację do generowania kodu dostępu na moim telefonie komórkowym. Jedynymi oczywistymi opcjami w domyślnej konfiguracji są ustalone hasło i para kluczy. Jak mogę to zrobić?

(Jeśli używam hasła i generatora kodu dostępu, zapewnia to uwierzytelnianie dwuskładnikowe (2FA): hasło to „to, co wiem”, a hasło to „to, co mam”).

Jorge Castro
źródło

Odpowiedzi:

49

Jednym ze sposobów jest skorzystanie z narzędzia Google o nazwie Google Authenticator .

  1. Zainstaluj libpam-google-uwierzytelnianie Zainstaluj libpam-google-uwierzytelnianie

    • Lub tylko sudo apt-get install libpam-google-authenticator
  2. Edytuj, /etc/pam.d/sshdaby uwzględnić moduł:

    • sudoedit /etc/pam.d/sshd
    • a następnie dołącz ten wiersz u góry pliku i zapisz:

      auth required pam_google_authenticator.so
      
  3. Edytuj plik konfiguracyjny SSH, aby włączyć wyzwanie:

    • sudoedit /etc/ssh/sshd_config a następnie zmień uwierzytelnianie odpowiedzi z:

      ChallengeResponseAuthentication no 
      

      do

      ChallengeResponseAuthentication yes
      

      a następnie zapisz plik.

  4. sudo restart ssh zrestartować SSH

  5. Biegać google-authenticator

    • To da ci twój tajny klucz, kod weryfikacyjny i kody alarmowe. Zada również pytania ograniczające stawki.

Aplikacje mobilne:

Potrzebujesz jednego z nich, aby otrzymać kod uwierzytelniający na innym urządzeniu.

Powiązane i przydatne:

Pamiętaj, że połączenie hasła z jednorazowymi kodami dostępu to uwierzytelnianie dwuskładnikowe: łączy ono „to, co wiesz” (hasło) z „tym, co masz” (urządzenie generujące kod dostępu). Z drugiej strony, jeśli połączysz hasła jednorazowe z parą kluczy SSH, chodzi o „to, co masz”. Gdy dwa czynniki uwierzytelniania są tego samego typu, nie masz uwierzytelniania dwuskładnikowego; jest to czasami nazywane „uwierzytelnianiem półtora czynnika”.

Jorge Castro
źródło
12

Google Authenticator jest odpowiedni dla twoich osobistych serwerów, ale może się okazać, że nie jest dobrze powiązany z twoją istniejącą infrastrukturą tożsamości. Jeśli chcesz poznać inne opcje, pomyśl o użyciu RADIUS jako protokołu uwierzytelniania i wtyczki pam-radius. Wszystkie zorientowane na przedsiębiorstwo dwuskładnikowe systemy uwierzytelniania obsługują promień. Napisaliśmy dokument o tym, jak dodać Ubuntu do uwierzytelniania dwuskładnikowego WiKID poprzez pam-radius .

Użycie radius pozwala powiązać inne systemy oprócz SSH z tym samym serwerem uwierzytelniającym. Możesz również kierować żądania uwierzytelnienia przez freeradius do LDAP, a następnie do serwera 2FA, aby oddzielić autoryzację od uwierzytelnienia. Możesz zrobić to samo z AD btw.

nowenna
źródło
1

Wzywam wszystkich, aby umieścić następującą linię na górze, a nie na dole w /etc/pam.d/sshdsposób opisany powyżej poprzednio (obecnie poprawiona):

auth required pam_google_authenticator.so

W przeciwnym razie twój system pozostanie otwarty na ataki typu „brute force” na twoje hasło, kompromitując pierwszą część uwierzytelniania dwuskładnikowego: hasła.

Zostaniesz poproszony o podanie kodu weryfikacyjnego, a następnie hasła (niezależnie od tego, czy kod był poprawny). Jeśli któryś z nich jest nieprawidłowy, musisz wprowadzić oba ponownie. Możesz go skonfigurować na odwrót, ale jest to nieco trudniejsza zmiana do opisania w obecnej domyślnej konfiguracji sshd Ubuntu (15.04).

Aby uzyskać szczegółowe informacje, dlaczego jest to potrzebne, sprawdź ten problem:

https://github.com/google/google-authenticator/issues/514

Maarten
źródło