Kako nastaviti dvofaktorsko overjanje (Google Authenticator) za prijave SSH


SSH privzeto že uporablja varno podatkovno komunikacijo med oddaljenimi napravami, če pa želite povezavam SSH dodati nekaj dodatne zaščitne plasti, lahko dodate modul Google Authenticator (dvofaktorska avtentikacija), ki omogoča vnos naključnega koda za preverjanje gesla (TOTP) med povezovanjem s strežniki SSH. Ko se boste povezali, boste morali vnesti kodo za preverjanje iz pametnega telefona ali računalnika.

Google Authenticator je odprtokodni modul, ki vključuje izvedbe enkratnih preverjalnih žetonov (TOTP), ki jih je razvil Google. Podpira več mobilnih platform, pa tudi PAM (Pluggable Authentication Module). Te enkratne gesla se ustvarijo z uporabo odprtih standardov, ki jih je ustvarila OATH Initiative for Open Authentication).

V tem članku vam bom pokazal, kako nastaviti in konfigurirati SSH za dvofaktorsko preverjanje pristnosti v sistemih Red Hat, CentOS, Fedora in Ubuntu, Linux Mint in Debian.

Namestitev modula Google Authenticator

Odprite računalnik, za katerega želite nastaviti dvofaktorsko overjanje, in namestite naslednje knjižnice PAM skupaj z razvojnimi knjižnicami, ki so potrebne za pravilno delovanje modula PAM z modulom Google Authenticator.

Na sistemih Red Hat sistem CentOS in Fedora namesti paket 'pam-devel'.

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

V sistemih Ubuntu Linux Mint in Debian namestijo paket „libpam0g-dev“.

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

Zdaj klonirajte in namestite modul Google Authenticator v Domači imenik (predpostavimo, da ste že prijavljeni v domači imenik root) z naslednjim ukazom git.

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

Ko zaženete ukaz 'google-authentator', vas bo vprašal z resnim vprašanjem. V večini primerov kot odgovor preprosto vnesite "y" (da). Če gre kaj narobe, lahko za ponastavitev nastavitev znova vnesete ukaz »google-authentator«.

  1. Ali želite, da žetoni za preverjanje pristnosti temeljijo na času (y/n) y

Po tem vprašanju boste dobili svoj 'tajni ključ' in 'kode v sili'. Nekje zapišite te podrobnosti, pozneje bomo za namestitev aplikacije Google Authenticator potrebovali 'skrivni ključ'.

 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

Nato sledite čarovniku za nastavitev in v večini primerov vnesite odgovor z »y« (da), kot je prikazano spodaj.

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

Konfiguriranje SSH za uporabo modula Google Authenticator

Odprite konfiguracijsko datoteko PAM '/etc/pam.d/sshd' in dodajte naslednjo vrstico na vrh datoteke.

auth       required     pam_google_authenticator.so

Nato odprite konfiguracijsko datoteko SSH ‘/ etc/ssh/sshd_config’ in se pomaknite navzdol, da poiščete vrstico, ki pravi.

ChallengeResponseAuthentication no

Spremenite ga v "da". Torej, postane tako.

ChallengeResponseAuthentication yes

Na koncu ponovno zaženite storitev SSH, da sprejmete nove spremembe.

# /etc/init.d/sshd restart

Konfiguriranje aplikacije Google Authenticator

V pametnem telefonu zaženite aplikacijo Google Authenticator. Pritisnite Menu in izberite “Setup a account”. Če te aplikacije nimate, lahko aplikacijo Google Authenticator prenesete in namestite v naprave Android/iPhone/Blackberry.

Pritisnite\"Vnesena tipka za vnos".

Dodajte račun »Ime« in vnesite prej ustvarjeni »skrivni ključ«.

Ustvaril bo enkratno geslo (kodo za preverjanje), ki se bo nenehno spreminjalo vsakih 30 sekund v vašem telefonu.

Zdaj se poskusite prijaviti prek SSH, vsakič, ko se poskusite prijaviti prek SSH, boste pozvani s kodo Google Authenticator (koda za preverjanje) in geslom. Na voljo imate le 30 sekund, da vnesete to kodo za preverjanje, če jo boste zamudili, bo ponovno ustvarila novo kodo za preverjanje.

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

Če nimate pametnega telefona, lahko za dvostopenjsko preverjanje pristnosti uporabite tudi dodatek Firefox, imenovan GAuth Authenticator.

Pomembno: dvofaktorska overitev deluje s SSH prijavo na osnovi gesla. Če uporabljate katero koli SSH sejo z zasebnim/javnim ključem, bo prezrla dvostopenjsko preverjanje pristnosti in se neposredno prijavila.