Pereiti prie pagrindinio turinio

SSH dviguba autorizacija (2FA) Ubuntu serveryje

Atnaujinta prieš daugiau kaip savaitę

Įprastai prie serverio prisijungiama naudojant slaptažodį arba SSH raktus.

Slaptažodinis prisijungimas laikomas mažiausiai saugiu, net ir naudojant sudėtingus slaptažodžius. SSH raktai saugumą ženkliai padidina, tačiau Ubuntu serveriai leidžia naudoti dar patikimesnį sprendimą - dviejų lygių autentifikaciją (2FA). Ši autorizacija veikia naudojant TOTP algoritmą, kurį palaiko tokios programėlės kaip Google Authenticator ar pan. Prisijungimui reikalinga:

  • slaptažodis arba SSH raktas

  • dinamiškai generuojamas 6 skaitmenų kodas, galiojantis ~30 sekundžių

Preliminarūs reikalavimai

  • Dedikuotas serveris su įdiegta "Ubuntu" senesne arba naujesne versija

1. Google Authenticator diegimas ir konfigūravimas

1.1. Diegimas

sudo apt install libpam-google-authenticator -y

1.2. TOTP rakto generavimas naudotojui

Šią komandą turi paleisti kiekvienas naudotojas, kuris jungsis per SSH

google-authenticator

Tuomet bus sugeneruotas:

  • QR kodas

  • slaptas raktas (Your new secret key is: 4K3XXXXXXXXXXXXXXX)

  • 5 atsarginiai (emergency) kodai

Atsarginius kodus išsisaugokite saugioje vietoje (pvz.: slaptažodžių saugojimo programėlėje).

Toliau į visus klausimus rekomenduojama atsakyti teigiama (yes), nuspaudžiant raidę y ir tuomet mygtuką Enter:

  • išjungiamas pakartotinis to paties kodo naudojimas

  • leidžiamas laiko nuokrypis

  • ribojami bandymai (apsauga nuo brute force)

Pavyzdys:

2. SSH tarnybos konfigūracija 2FA palaikymui

2.1. SSH konfigūracijos pakeitimai

Atidarykite SSH konfigūraciją:

sudo nano /etc/ssh/sshd_config

Įsitikinkite, kad šiose eilutėse nustatyta:

UsePAM yes
ChallengeResponseAuthentication yes

PASTABA: Ubuntu 22.04+ ChallengeResponseAuthentication vis dar palaikomas (alias KbdInteractiveAuthentication)

Jei planuojate naudoti 2FA su root (nerekomenduojama):

PermitRootLogin yes

Išsaugokite failą.

2.2. PAM konfigūracija SSH tarnybai

PAM reiškia prijungiamas autorizacijos modulis (angl. pluggable authentication module). Šis modulis suteikia skirtingų autorizacijos metodų prijungimą prie Linux sistemos. Tam, kad galėtume aktyvuoti Google Authenticator su SSH, PAM ir Challenge-Response parametrai turi būti įjungti. Tada atlikite SSH tarnybos perkrovimą, tam, kad pakeitimai įsigaliotų:

sudo systemctl restart ssh

Atidarykite PAM konfigūraciją:

sudo nano /etc/pam.d/sshd

Raskite eilutę:

@include common-auth

Žemiau jos pridėkite užkomentuotą eilutę (su # priekyje):

# Google Authenticator 2FA auth required pam_google_authenticator.so

Išsaugokite failą.

2.3. SSH tarnybos perkrovimas

sudo systemctl restart ssh

Nuo šiol prisijungiant bus prašoma:

  1. slaptažodžio

  2. TOTP kodo

3. SSH raktas + 2FA (rekomenduojama)

3.1. SSH konfigūracija

sudo nano /etc/ssh/sshd_config

Failo pabaigoje pridėkite:

AuthenticationMethods publickey,keyboard-interactive

Įsitikinkite, kad:

PubkeyAuthentication yes
PasswordAuthentication no

Išsaugokite failą.

3.2. IŠJUNGIMAS - PAM (Google 2FA) autentifikacijos

sudo nano /etc/pam.d/sshd

Užkomentuokite:

#@include common-auth

Palikite:

auth required pam_google_authenticator.so

Išsaugokite ir perkraukite SSH tarnybą:

sudo systemctl restart ssh

Nuo šiol prisijungimas galimas tik su:

  • SSH raktu

  • TOTP kodu

4. Kaip išjungti SSH 2FA

4.1. SSH konfigūracijoje

sudo nano /etc/ssh/sshd_config

Pakeiskite:

AuthenticationMethods publickey,keyboard-interactive

į:

AuthenticationMethods publickey

4.2. SSH perkrovimas

sudo systemctl restart ssh

2FA bus išjungta, SSH raktai liks veikti.

Papildoma informacija

  • Jeigu serveryje yra keli naudotojai, kiekvienas naudotojas turi atskirai paleisti
    google-authenticator

  • Atsarginiai kodai veikia tik vieną kartą.

  • TOTP raktą galima regeneruoti pakartotinai paleidus:

    google-authenticator
Ar gavote atsakymą į savo klausimą?