Į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:
slaptažodžio
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-authenticatorAtsarginiai kodai veikia tik vieną kartą.
TOTP raktą galima regeneruoti pakartotinai paleidus:
google-authenticator


