Jak mogę dodatkowo zabezpieczyć system za pomocą uwierzytelniania dwuskładnikowego?

16

Tytuł prawie tak mówi. Słyszałem więcej o uwierzytelnianiu dwuskładnikowym, hasłach jednorazowych, tokenach twardych i innych ulepszonych funkcjach bezpieczeństwa. Przy malejącym bezpieczeństwie używania tylko hasła chcę wiedzieć, jak mogę poprawić swoje bezpieczeństwo w Ubuntu. Używam 14.04 LTS z Unity.


źródło

Odpowiedzi:

30

Możesz użyć modułu PAM (open source Pluggable Authentication Module) utworzonego przez Google, znanego jako Google Authenticator . Ten moduł jest dostępny w standardowych repozytoriach, a także w GitHub, dzięki czemu można budować ze źródła. W połączeniu z aplikacją na Androida, iOS lub Blackberry o tej samej nazwie, tworzy kody wrażliwe na czas w celu uwierzytelnienia wraz z hasłem. Ponieważ jest to moduł PAM, można go wrzucić praktycznie wszędzie . Zacznijmy!

Instalowanie

Aby rozpocząć, możesz zainstalować PAM w następujący sposób:

sudo apt-get install libpam-google-authenticator

Prosty!

Konfiguracja:

Po jego zainstalowaniu będziesz również chciał zainstalować odpowiednią aplikację mobilną na Androida, iOS lub Blackberry (w zależności od platformy mobilnej). Każdy jest bezużyteczny bez drugiego. Po uzyskaniu potrzebnej aplikacji na urządzenie mobilne uruchom następujące polecenie w terminalu:

google-authenticator

Rozpocznie się od zadania kilku pytań. Pierwsze z nich jest jedynym, na które należy odpowiedzieć „Tak”, i zapyta, czy kody mają być oparte na czasie. Następnie przeczytaj każde pytanie i dokonaj wyboru, który jest dla Ciebie najbardziej sensowny.

Po zakończeniu wstępnej konfiguracji zobaczysz w terminalu bardzo duży kod QR, a także kilka innych informacji. Linia z napisem „Twój nowy tajny klucz to:” jest bardzo potrzebną linią, jeśli nie chcesz używać kodu QR do parowania urządzenia, więc nie zamykaj tego okna, dopóki się nie skonfigurujesz! „Kody do zdrapek”, które to daje, są również ważne, ponieważ są one używane do logowania, jeśli stracisz urządzenie mobilne. Zapisz je i przechowuj w bezpiecznym miejscu.

Teraz na urządzeniu mobilnym otwórz aplikację Google Authenticator i wybierz „Skonfiguruj konto”. Możesz zeskanować wygenerowany kod QR lub wybrać „Użyj podanego klucza”. Jeśli zeskanujesz kod QR, wszystko zostanie automatycznie zapisane na koncie o nazwie „Twój_użytkownik @ twój_host”. Jeśli jednak wybierzesz „Użyj podanego klucza”, będziesz musiał ręcznie wprowadzić nazwę, klucz i typ tokena. Nazwa może być dowolna. Kluczem byłby wcześniej wygenerowany tajny klucz. Typ byłby domyślny na podstawie czasu. Po skonfigurowaniu zobaczysz konto w głównym okienku aplikacji Google Authenticator, a także licznik czasu w kształcie koła. Ten zegar wyczerpuje się co 30 sekund i generowany jest nowy kod.

Włączam to!

Nadchodzi magia. Ponieważ jest to moduł PAM, można go używać w różnych miejscach. sudoPrzeprowadzę proces dodawania uwierzytelnienia do żądań, logowania SSH i logowania lightdm. Jednak po przeczytaniu tego samouczka będziesz mógł włączyć go w innym miejscu w oparciu o te same techniki.

SSH

Robię to pierwszy, ponieważ jest dodatkowy krok. Pierwszą rzeczą, którą musisz zrobić, to edytować plik konfiguracyjny SSH:

gksudo gedit /etc/ssh/sshd_config

Wyszukaj wiersz z napisem:

ChallengeResponseAuthentication no

i zmień „nie” na „tak”.

Teraz musisz edytować moduł PAM dla ssh:

gksudo gedit /etc/pam.d/sshd

Na samym końcu tego pliku dodaj następujący wiersz:

auth required pam_google_authenticator.so nullok

Argument „nullok” informuje system, aby nie żądał kodu weryfikacyjnego, jeśli użytkownik nie skonfigurował uwierzytelniania dwuskładnikowego. Po tej edycji idź dalej i ponownie uruchom usługę ssh:

sudo service ssh restart

sudo Upraszanie

Edytuj plik PAM dla sudo:

gksudo gedit /etc/pam.d/sudo

Dodaj następujący wiersz na samym końcu:

auth required pam_google_authenticator.so nullok

Teraz każde sudożądanie będzie wymagało podania kodu weryfikacyjnego oraz hasła.

LightDM (logowanie GUI)

Edytuj plik PAM dla LightDM:

gksudo gedit /etc/pam.d/lightdm

Dodaj następujący wiersz na samym końcu:

auth required pam_google_authenticator.so nullok

Otóż ​​to! Za każdym razem, gdy logujesz się przez GUI, po haśle poprosi o kod weryfikacyjny.

Logowanie do systemu i TTY

Nawet jeśli włączysz powyższe metody, nadal nie poprosi o kod weryfikacyjny, jeśli przełączysz się na TTY za pomocą CTRL+ ALT+ F#. Aby to naprawić, edytuj common-authplik PAM:

gksudo gedit /etc/pam.d/common-auth

i dodaj następujący wiersz na samym końcu:

auth required pam_google_authenticator.so nullok

Uwaga: Ponieważ ten plik wspólnego uwierzytelniania jest zawarty we wszystkich innych plikach typu uwierzytelniania, musisz usunąć wymagane wiersze uwierzytelnienia z innych plików. W przeciwnym razie poprosi o podanie kodu weryfikacyjnego dwa razy i nie pozwoli na późniejsze zalogowanie.

Zakończyć

Jak widać, dodanie tego uwierzytelnienia było dość łatwe. Jeśli używasz menedżera wyświetlania innego niż LightDM, możesz łatwo po prostu odpowiednio zmienić powyższą linię lightdm. Ponieważ Twoje urządzenie mobilne i system współdzieliły już ten tajny klucz, powinny one zawsze być zsynchronizowane. W przypadku tej konfiguracji nie ma interakcji z serwerami Google ani innymi zasobami internetowymi. Nawet jeśli oba urządzenia były całkowicie offline, kody weryfikacyjne wyświetlane w aplikacji będą prawidłowe. Ilekroć musisz zalogować się za pomocą jednej z włączonych metod, po prostu otwórz aplikację mobilną i pobierz aktualny kod weryfikacyjny.

Baw się dobrze!!

Justin
źródło
Komentowanie do późniejszych notatek. Dobrze napisane! +1 =)
Terrance
+1 - to jest naprawdę fajne i dobrze napisane.
Nathan Osman
1
A potem telefon decyduje, że nie ma już mocy i chce się wyłączyć. :) +1
Rinzwind
Do tego służą kody scratch, @Rinzwind: D
Dodano instrukcje włączania dwuskładnikowego w TTY.
1

FreeOTP to otwarta alternatywa dla aplikacji Google Authenticator na Androida w Google Play (której obecny kod nie jest open source). FreeOTP jest dostępny na F-Droid (i Google Play ).

Mihai Capotă
źródło