Kaip nustatyti dviejų veiksnių autentifikavimą SSH sistemoje „Linux“.


Pagal numatytuosius nustatymus SSH jau naudoja saugų duomenų ryšį tarp nuotolinių įrenginių, bet jei norite pridėti papildomą saugos sluoksnį prie savo SSH ryšių, galite pridėti Google Authenticator (dviejų veiksnių autentifikavimo) modulis, leidžiantis įvesti atsitiktinį vienkartinį slaptažodžio (TOTP) patvirtinimo kodą jungiantis prie SSH serverių. Prisijungdami turėsite įvesti patvirtinimo kodą iš savo išmaniojo telefono arba kompiuterio.

Google Authenticator yra atvirojo kodo modulis, apimantis vienkartinių slaptažodžių (TOTP) patvirtinimo prieigos raktų įdiegimą, kurį sukūrė Google.

Jis palaiko keletą mobiliųjų platformų, taip pat PAM (Pluggable Authentication Module). Šie vienkartiniai slaptažodžiai generuojami naudojant atvirus standartus, sukurtus OATH Atvirojo autentifikavimo iniciatyvos).

Šiame straipsnyje parodysiu, kaip nustatyti ir konfigūruoti SSH dviejų veiksnių autentifikavimui naudojant „RedHat“ ir „Debian“ pagrindu veikiančius Linux platinimus, tokius kaip „Fedora“, „CentOS Stream“, „Rocky Linux“ ir „AlmaLinux“, Ubuntu, Debian ir Mint.

„Google“ autentifikavimo priemonės diegimas sistemoje „Linux“.

Atidarykite įrenginį, kuriame norite nustatyti dviejų veiksnių autentifikavimą, ir įdiekite šias PAM bibliotekas kartu su kūrimo bibliotekomis, kurių reikia, kad PAM modulis tinkamai veiktų su Google autentifikavimo modulis.

RedHat pagrįstose sistemose įdiekite paketą pam-devel naudodami šią yum komandą.

yum install google-authenticator -y

„Debian“ pagrindu veikiančiose sistemose įdiekite paketą „libpam0g-dev“ naudodami šią apt komandą.

sudo apt install libpam-google-authenticator -y

Generuokite „Google“ autentifikavimo prieigos raktus

Kai paleisite komandą google-autentifikatorius, ji paprašys pateikti klausimų.

google-authenticator

Daugeliu atvejų kaip atsakymą tiesiog įveskite „y“ (taip). Jei kas nors negerai, galite dar kartą įvesti komandą google-autentifikatorius, kad iš naujo nustatytumėte nustatymus.

  • Ar norite, kad autentifikavimo prieigos raktai būtų pagrįsti laiku (y/n) y

Po šio klausimo gausite „slaptąjį raktą“ ir „avarinius kodus“. Kur nors užsirašykite šią informaciją. Vėliau mums reikės „slapto rakto“, kad galėtume nustatyti „Google“ autentifikavimo priemonę.

google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

Tada vadovaukitės sąrankos vedliu ir daugeliu atvejų įveskite atsakymą kaip „y“ (taip), kaip parodyta toliau.

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

SSH konfigūravimas naudoti „Google Authenticator“ sistemoje „Linux“.

Atidarykite PAM konfigūracijos failą „/etc/pam.d/sshd“ ir failo apačioje pridėkite šią eilutę.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Tada atidarykite SSH konfigūracijos failą „/etc/ssh/sshd_config“ ir slinkite žemyn, kad rastumėte eilutę.

ChallengeResponseAuthentication no

Pakeiskite jį į „taip“. Taigi, tai tampa taip.

ChallengeResponseAuthentication yes

Galiausiai iš naujo paleiskite SSH paslaugą, kad atliktumėte naujus pakeitimus.

systemctl restart sshd
Or
sudo systemctl restart sshd

„Google“ autentifikavimo programos konfigūravimas

Išmaniajame telefone paleiskite programą Google Authenticator. Paspauskite + ir pasirinkite „Įveskite sąrankos klavišą“. Jei neturite šios programos, galite atsisiųsti ir įdiegti „Google Authenticator“ programą savo Android/iPhone/Blackberry įrenginiuose.

Pridėkite savo paskyrą Pavadinimas ir įveskite anksčiau sugeneruotą slaptąjį raktą.

Jis sugeneruos vienkartinį slaptažodį (patvirtinimo kodas), kuris telefone nuolat keisis kas 30 sek..

Dabar pabandykite prisijungti per SSH, būsite paraginti įvesti Google Authenticator kodą (patvirtinimo kodas) ir slaptažodį. > kai bandote prisijungti per SSH. Turite tik 30 sekundžių šiam patvirtinimo kodui įvesti. Jei jį praleisite, bus iš naujo sukurtas naujas patvirtinimo kodas.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@tecmint ~]#

Jei neturite išmaniojo telefono, taip pat galite naudoti Firefox priedą, vadinamą Autentifikatoriumi, kad atliktumėte dviejų veiksnių autentifikavimą.

Svarbu: dviejų veiksnių autentifikavimas veikia naudojant slaptažodžiu pagrįstą SSH prisijungimą. Jei naudojate bet kokį privataus/viešojo rakto SSH seansą, jis nepaisys dviejų veiksnių autentifikavimo ir prisijungs tiesiogiai.