Sådan konfigureres tofaktorautentificering (Google Authenticator) til SSH-login


Som standard bruger SSH allerede en sikker datakommunikation mellem eksterne maskiner, men hvis du vil tilføje noget ekstra sikkerhedslag til dine SSH-forbindelser, kan du tilføje et Google Authenticator-modul (to-faktor-godkendelse), der giver dig mulighed for at indtaste en tilfældig -tids adgangskode (TOTP) verifikationskode, når du opretter forbindelse til SSH-servere. Du bliver nødt til at indtaste bekræftelseskoden fra din smartphone eller pc, når du opretter forbindelse.

Google Authenticator er et open source-modul, der inkluderer implementeringer af engangs-adgangskoder (TOTP) -bekræftelsestoken udviklet af Google. Det understøtter flere mobile platforme såvel som PAM (Pluggable Authentication Module). Disse engangs-adgangskoder genereres ved hjælp af åbne standarder oprettet af OATH Initiative for Open Authentication).

I denne artikel vil jeg vise dig, hvordan du konfigurerer og konfigurerer SSH til tofaktorautentificering under Red Hat, CentOS, Fedora og Ubuntu, Linux Mint og Debian.

Installation af Google Authenticator-modul

Åbn den maskine, du vil oprette tofaktorautentificering, og installer følgende PAM-biblioteker sammen med udviklingsbiblioteker, der er nødvendige for at PAM-modulet fungerer korrekt med Google-godkendelsesmodul.

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

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

På Ubuntu installerer Linux Mint og Debian-systemer en 'libpam0g-dev' pakke.

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

Klon og installer nu Google-godkendermodulet under hjemmekataloget (antag, at du allerede er logget i rodmappen til hjemmet) ved hjælp af 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 har kørt 'google-authenticator' -kommandoen, vil den bede dig om et alvorligt spørgsmål. Indtast blot “y” (ja) som svaret i de fleste situationer. Hvis noget går galt, kan du skrive kommandoen 'google-authenticator' igen for at nulstille indstillingerne.

  1. Ønsker du, at godkendelsestokens er tidsbaserede (å/n) y

Efter dette spørgsmål får du din 'hemmelige nøgle' og 'nødkoder'. Skriv disse detaljer et eller andet sted ned, vi har brug for den 'hemmelige nøgle' senere for at opsætte 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 derefter installationsguiden og skriv i de fleste tilfælde svar 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

Konfiguration af SSH til brug af Google Authenticator Module

Åbn PAM-konfigurationsfilen ‘/etc/pam.d/sshd’ og tilføj følgende linje øverst i filen.

auth       required     pam_google_authenticator.so

Åbn derefter SSH-konfigurationsfilen ‘/ etc/ssh/sshd_config’ og rul ned for at finde den linje, der siger.

ChallengeResponseAuthentication no

Skift det til “ja”. Så det bliver sådan.

ChallengeResponseAuthentication yes

Endelig genstart SSH-tjenesten for at foretage nye ændringer.

# /etc/init.d/sshd restart

Konfiguration af Google Authenticator-app

Start Google Authenticator-appen på din smartphone. Tryk på Menu, og vælg “Opsæt en konto”. Hvis du ikke har denne app, kan du downloade og installere Google Authenticator-appen på dine Android/iPhone/Blackberry-enheder.

Tryk på "Angiv nøgle".

Tilføj din konto 'Navn', og indtast den 'hemmelige nøgle', der blev genereret tidligere.

Det genererer en engangskodeord (verifikationskode), der konstant ændrer sig hvert 30. sekund på din telefon.

Prøv nu at logge ind via SSH, du bliver bedt om Google Authenticator-kode (verifikationskode) og adgangskode, når du prøver at logge ind via SSH. Du har kun 30 sekunder til at indtaste denne verifikationskode, hvis du går glip af den, vil den gendanne ny verifikationskode.

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 smartphone, kan du også bruge en Firefox-tilføjelse kaldet GAuth Authenticator til at udføre tofaktorautentificering.

Vigtigt: To-faktor-godkendelse fungerer med adgangskodebaseret SSH-login. Hvis du bruger en SSH-session med en privat/offentlig nøgle, ignorerer den tofaktorautentificering og logger dig direkte på.