Slik konfigurerer du tofaktorautentisering (Google Authenticator) for SSH-pålogginger


Som standard bruker SSH allerede en sikker datakommunikasjon mellom eksterne maskiner, men hvis du vil legge til et ekstra sikkerhetslag til SSH-tilkoblingene dine, kan du legge til en Google Authenticator (tofaktorautentisering)-modul som lar deg angi en tilfeldig en -tidspassord (TOTP) bekreftelseskode mens du kobler til SSH-servere. Du må angi bekreftelseskoden fra smarttelefonen eller PC-en når du kobler til.

Google Authenticator er en åpen kildekode-modul som inkluderer implementeringer av engangspassord (TOTP) bekreftelsestoken utviklet av Google. Den støtter flere mobile plattformer, samt PAM (Pluggable Authentication Module). Disse engangskodene genereres ved hjelp av åpne standarder laget av OATH Initiative for Open Authentication).

I denne artikkelen vil jeg vise deg hvordan du setter opp og konfigurerer SSH for tofaktorautentisering under Red Hat, CentOS, Fedora og Ubuntu, Linux Mint og Debian.

Installerer Google Authenticator Module

Åpne maskinen du vil sette opp tofaktorautentisering og installer følgende PAM-biblioteker sammen med utviklingsbiblioteker som er nødvendige for at PAM-modulen skal fungere riktig med Google-autentiseringsmodulen.

På Red Hat-, CentOS- og Fedora-systemer installerer du pakken 'pam-devel'.

# yum install pam-devel make automake libtool gcc-c++ wget

På Ubuntu, Linux Mint og Debian-systemer installerer pakken libpam0g-dev.

# apt-get install libpam0g-dev make automake libtool gcc-c++ wget

Klon og installer Google-autentiseringsmodulen under Hjemmekatalogen (anta at du allerede er logget på hjemmekatalogen til roten) ved å bruke følgende git-kommando.

# git clone https://github.com/google/google-authenticator-libpam.git
# cd google-authenticator-libpam/
# ./bootstrap.sh
# ./configure
# make
# make install
# google-authenticator

Når du kjører 'google-authenticator'-kommandoen, vil den stille deg et alvorlig spørsmål. Bare skriv y (ja) som svaret i de fleste situasjoner. Hvis noe går galt, kan du skrive inn 'google-authenticator'-kommandoen igjen for å tilbakestille innstillingene.

  1. Vil du at autentiseringstokens skal være tidsbasert (y/n) y

Etter dette spørsmålet vil du få din 'hemmelige nøkkel' og 'nødkoder'. Skriv ned disse detaljene et sted, vi trenger den 'hemmelige nøkkelen' senere for å konfigurere Google Authenticator-appen.

 google-authenticator

Do you want authentication tokens to be time-based (y/n) y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/[email %3Fsecret%3DXEKITDTYCBA2TLPL
Your new secret key is: XEKITDTYCBA2TLPL
Your verification code is 461618
Your emergency scratch codes are:
  65083399
  10733609
  47588351
  71111643
  92017550

Følg deretter oppsettsveiviseren og skriv i de fleste tilfeller svaret som y (ja) som vist nedenfor.

Do you want me to update your "/root/.google_authenticator" file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

Konfigurerer SSH til å bruke Google Authenticator Module

Åpne PAM-konfigurasjonsfilen '/etc/pam.d/sshd' og legg til følgende linje øverst i filen.

auth       required     pam_google_authenticator.so

Deretter åpner du SSH-konfigurasjonsfilen '/etc/ssh/sshd_config' og blar ned for å finne linjen som sier.

ChallengeResponseAuthentication no

Endre den til ja. Så det blir sånn.

ChallengeResponseAuthentication yes

Til slutt, start SSH-tjenesten på nytt for å ta nye endringer.

# /etc/init.d/sshd restart

Konfigurerer Google Authenticator-appen

Start Google Authenticator-appen på smarttelefonen din. Trykk på Meny og velg Sett opp en konto. Hvis du ikke har denne appen, kan du laste ned og installere Google Authenticator-appen på Android/iPhone/Blackberry-enhetene dine.

Trykk på \Enter-tasten som følger med.

Legg til kontoen 'Navn' og skriv inn den 'hemmelige nøkkelen' generert tidligere.

Den vil generere engangspassord (verifiseringskode) som vil endres konstant hvert 30. sekund på telefonen din.

Prøv nå å logge på via SSH, du vil bli bedt om Google Authenticator-kode (verifikasjonskode) og passord hver gang du prøver å logge på via SSH. Du har bare 30 sekunder på deg til å skrive inn denne bekreftelseskoden, hvis du savner den, vil den gjenskape ny bekreftelseskode.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2013 from 172.16.25.125

Hvis du ikke har smarttelefon, kan du også bruke et Firefox-tillegg kalt GAuth Authenticator for å utføre tofaktorautentisering.

Viktig: Tofaktorautentiseringen fungerer med passordbasert SSH-pålogging. Hvis du bruker en privat/offentlig nøkkel SSH-økt, vil den ignorere tofaktorautentisering og logge deg på direkte.