Categories
Uncategorized

SSH dviguba autorizacija (2FA) Ubuntu serveryje

Dažniausiai serverio terminalo galite prisijungti naudodami slaptažodį arba naudojant SSH raktus. Pats nesaugiausias būdas yra tieisog naudojant slaptažodį. SSH raktų naudojimas padidina prisijungimo saugumą. Tačiau Ubuntu serveris suteikia dar vieną saugią galimybę prisijungti prie serverio – dviguba autorizacija. Ši autorizacija veikia pasitelkiant Google Authenticator programinę įrangą, kuri naudojama daugumoje didžiausių internetinių svetainių bei servisų. Dviguba autorizacija reikalauja įvesti prisijungimo slaptažodį/viešą raktą bei nuolatos kintančią 6 skaičių reikšmę, kuri pateikiama Google Authenticator programėlėje telefone ir yra paremta TOTP algoritmu, kuris atitinka IETF standartą.
Šioje pamokoje pateiksime instrukciją, kaip susikonfigūruoti dviejų lygių autorizaciją naudojant patikimą Google autorizacijos algoritmą. Diegimas testuotas naudojant Ubuntu 20.04 OS,  tačiau tinka ir naudojant senesnėms Ubuntu versijoms.

0. Preliminarūs reikalavimai
* Dedikuotas serveris su įdiegtu mūsų parengtu Ubuntu OS šablonu.

1. Google Authenticator diegimas bei konfigūravimas serveryje
Prisijunkite prie serverio ir paleiskite žemiau pateiktą komandą, kuri įrašys Google Authenticator programinę įrangą iš pagrindinės Ubuntu repozitorijos:

sudo apt install libpam-google-authenticator

Gali būti, kad sulauksite klaidos:
Unable to locate package libpam-google-authenticator

Tokiu atveju atlikite serverio atnaujinimą su komanda:

sudo apt-get update

Atlikus atnaujinimus iš naujo paleiskite komandą „sudo apt install libpam-google-authenticator„. Užbaigus diegimą paleiskite google-authenticator komandą tam, kad sukurtumėte naują saugų raktą namų direktorijoje:

google-authenticator

Jums bus pateikiamas klausimas:
Do you want authentication tokens to be time-based (y/n)

Įveskite y raidę ir Jums bus sugeneruotas QR kodas:

Ši kodą galėsite nuskenuoti su programėle telefone. Tam atlikti rekomenduojame naudoti šias programėles:
* Google Authenticator – dažniausiai naudojama TOTP programėlė. Galite įdiegti ją naudojant Google Play ar Apple store platformas telefonu.* FreeOTP – kadangi Google Authenticator programa nėra atvirojo kodo, todėl, jeigu ja nepasitikite galite naudotis FreeOTP atvirojo kodo TOTP programėle, kuri yra kurta Red Hat kūrėjų.
Atminkite, kad norėdami teisingai nuskenuoti QR kodą jis turi būti matomas visas, todėl gali tekti padidinti terminalo langą. QR kodas yra žinomas tik SSH serverio ir TOTP mobilios programėlės. Kai tik atliksite skenavimą aplikacijoje matysite šešių skaičių kodą telefonu. Standartiškai jis keičiasi kas 30 sekundžių. Šis kodas bus reikalingas norint prisijungti prie Ubuntu per SSH tarnybą.

Terminale žemiau QR kodo matysite sugeneruotą dvigubos autorizacijos kodą, patvirtinimo kodą ir atsarginius kodus. Rekomenduojame išsisaugoti šią informaciją ir laikyti saugioje vietoje.
Toliau į visus klausimus atsakykite įvedę y raidę. Taip atliksite konfigūracijos failo atnaujinimą, išjungsite daugkartinį tos pačios žymės (angl. token) naudojimą, prailginsite laikotarpė per kurį pasikeis kodas ir įjungsite prisijungimų ribojimą kai bandoma prisijungti prie serverio daugiau nei 3 kartus per 30 sekundžių su tuo pačiu kodu.

2. SSH Deamon konfigūracija Google Authenticator naudojimuiAtsidarykite SSH serverio konfigūracijos failą:

sudo nano /etc/ssh/sshd_config

Faile susiraskite žemiau pateiktas eilutes ir patikrinkite ar abi jos turi yes reikšmes:
ChallengeResponseAuthentication yesUsePAM yes
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.  Išsaugokite ir uždarykite failą. Tada atlikite SSH Deamon perkrovimą, tam, kad pakeitimai įsigaliotų:

sudo systemctl restart ssh

Pastaba: norint naudoti 2FA su root naudotoju turi būti pakeistas papildomas parametras į yes reiškmę: PermitRootLogin yes
Pagal nutylėjimą challenge-response autorizacija reikalauja įvesti slaptažodį prisijungimui. Todėl pakeisite PAM taisyklę SSH deamon’e:

sudo nano /etc/pam.d/sshd

Turite matyti tokią reikšmę:
@include common-auth
Taip pat įjungsime besikeičiantį prisijungimo kodą. Tam pridėkite žemiau pateiktas eilutes:
#One-time password authentication via Google Authenticator
auth required pam_google_authenticator.so
Išsaugokite ir uždarykite failą.

Nuo šiol jungiantis Jūsų bus prašoma įvesti naudotojo slaptažodį ir vėliau patvirtinimo kodą.

3. Public Key naudojimas su Google Authentication koduNorint užtikrinti dar saugesnį prisijungimą prie serverio papildomai rekomenduojama nustatyti, kad slaptažodis nebūtų naudojamas. Vietoje būtų naudojamas SSH raktas. Tai atlikti galite pagal šią instrukciją.

Kai atliksite šiuos veiksmus, galite sujungti viešo rakto autorizacijos naudojimą su patvirtinimo kodu. Tam atlikti visų pirma atsidarykite SSH deamon’o konfigūraciją:

sudo nano /etc/ssh/sshd_config

Ir pridėkite papildomą eilutę failp pabaigoje:AuthenticationMethods publickey,keyboard-interactive

Išsaugokite ir uždarykite failą. Atlikte SSH deamon’o perkrovimą:

sudo systemctl restart ssh

Papildomai dar reikia pakoreguoti SSH PAM konfigūracinį failą:

sudo nano /etc/pam.d/sshd

 Kuriame užkomentukite žemiau pateiktą eilutę naudodami simbolį # prieš @ simbolį ir palikdami tarpą:# @include common-auth

Uždarykite failą ir išsaugokite. Nuo šiol prisijungimui bus naudojamas SSH raktas bei Google Authenticator kodas.
Papildomi pastebėjimai:* kiekvienas naudotojas, kuris jungiasi prie serverio turi atlikti google-authenticator diegimą;* atsarginis kodas (angl. emergency scratch code) yra atsarginis kodas. Jeigu prarasite telefoną, gali įvesti vieną iš penkių pateiktų atsarginių kodų vietoje kintamo kodo tam, kad prisijungti prie sistemos. Šie kodai gali būti naudojami tik vienam prisijungimui;* jeigu norite pakeisti slaptą kodą, tiesiog prisijunkite prie serverio ir paleidę komandągoogle-authenticator pakartotinai ir ~/.google_authenticator failas bus pakoreguotas.

4. Kaip išjungti SSH dviejų lygių autorizaciją

Atsidarykite SSH deamon’o konfigūracijos failą:

sudo nano /etc/ssh/sshd_config

Susiraskite šią eilutę:AuthenticationMethods publickey,keyboard-interactive
Ir pašalinkite keyboard-interactive reikšmę:AuthenticationMethods publickey
Išsaugokite ir perkraukite SSH deamon’ą:

sudo systemctl restart ssh

Tai atlikus nebebus naudojama dviejų lugių autorizacija. SSH rakto veikimas, jeigu buvo toks sukonfigūruotas, išliks.

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *