Cum să protejați serverul de hacking: Configurarea 2FA prin Google Authenticator PAM
Salutare, prieteni!
În realitățile moderne, protecția clasică prin parolă sau autorizarea prin chei SSH nu mai este suficientă dacă contul unui administrator este compromis. Implementarea autentificării cu doi factori (2FA) pe baza parolelor unice temporare (TOTP) creează o linie suplimentară de apărare: chiar dacă un atacator vă interceptați cheia privată sau parola, acesta nu va putea accesa serverul fără acces fizic la generatorul dvs. de coduri.
Ca exemplu, merită menționat imediat Steam Guard, datorită căruia nimeni nu a reușit să spargă contul lui Gabe Newell, deși acesta a făcut publice adresa sa de email și parola. Astfel, activarea autentificării cu doi factori oferă o protecție maximă pentru contul dvs.
În acest ghid pas cu pas, vom configura 2FA pentru conexiunile SSH folosind modulul Google Authenticator PAM pentru sistemele de operare Ubuntu / Debian și CentOS / AlmaLinux. Apropo, multe site-uri au început să integreze Google Authenticator pentru autentificare, pentru ca utilizatorii să nu își piardă conturile.
Key Takeaways: Concluzii cheie
2FA protejează împotriva scurgerilor de chei și a atacurilor de tip brute-force: Chiar dacă o cheie SSH privată este compromisă, accesul la server rămâne blocat fără codul temporar TOTP din 6 cifre.
Flexibilitate în politica de autorizare: Modulul PAM permite configurarea atât a unei perechi „Parolă + 2FA”, cât și a unei combinații de înaltă securitate „Cheie SSH + 2FA”.
Importanța codurilor de rezervă: Înainte de a reporni serviciul SSH, salvați întotdeauna codurile de urgență (Emergency Recovery Codes) pentru a nu pierde accesul la infrastructură în cazul pierderii smartphone-ului.
Arhitectura de funcționare TOTP 2FA în Linux
Autentificarea cu doi factori în Linux este implementată prin subsistemul PAM (Pluggable Authentication Modules). Când un client inițiază o conexiune prin sshd, subsistemul PAM preia cererea și apelează modulul pam_google_authenticator.so.
Modulul citește cheia secretă din directorul principal al utilizatorului (~/.google_authenticator), compară codul generat de smartphone-ul dvs. cu ora curentă a serverului și decide acordarea accesului.
Este autentificarea cu doi factori cu adevărat sigură?
Da. Personal, am fost atacat de mai multe ori de escroci care vizau contul de Steam și chiar am introdus datele de autentificare (login și parolă) pe site-urile acestora, dar nu am introdus codul din Steam Guard. Datorită acestui fapt, dețin și astăzi contul meu și recomand tuturor să folosească autentificarea cu doi factori.
Ghid de configurare pas cu pas
Pasul 1: Instalarea modulului PAM
Conectați-vă la server cu utilizatorul pentru care se configurează 2FA (cu drepturi sudo).
Pentru Ubuntu / Debian:
sudo apt update && sudo apt install libpam-google-authenticator -y
Pentru RHEL / AlmaLinux / Rocky Linux:
sudo dnf install epel-release -y
sudo dnf install google-authenticator -y
Pasul 2: Generarea cheii secrete și a codului QR Rulați comanda de generare din contul utilizatorului țintă:
google-authenticator
Asistentul de configurare vă va pune câteva întrebări. Răspunsuri recomandate:
Do you want authentication tokens to be time-based? (y) — activează generarea codurilor pe bază de timp (TOTP). Este corect să alegeți
yes, deoarece la generarea bazată pe timp, codul va fi aleatoriu de fiecare dată.Va apărea un cod QR mare și o cheie secretă. Scanați codul QR în aplicația dvs. 2FA (Google Authenticator, Bitwarden, 2FA LassPass, Aegis).
OBLIGATORIU: Copiați și salvați codurile de recuperare de urgență (emergency recovery codes) într-un loc sigur.
Do you want me to update your "~/.google_authenticator" file? (y) — salvează setările în profil.
Disallow multiple uses of the same authentication token? (y) — protejează împotriva atacurilor de tip Replay (Replay Attacks).
Increase window size? (n) — menține o fereastră de validitate de 30 de secunde (selectați
ydacă ceasul serverului și cel al smartphone-ului se desincronizează frecvent).Enable rate-limiting? (y) — protejează împotriva atacurilor de tip brute-force (limitează la 3 încercări la fiecare 30 de secunde).
Pasul 3: Configurarea subsistemului PAM pentru SSH Editați fișierul de configurație al serviciului SSH în PAM:
sudo nano /etc/pam.d/sshd
Adăugați următoarea linie la sfârșitul fișierului:
auth required pam_google_authenticator.so nullok
Important: Parametrul nullok permite utilizatorilor care nu au configurat încă google-authenticator să se autentifice folosind parola sau cheia standard. După ce toți administratorii configurează 2FA, eliminați nullok pentru a face 2FA strict obligatoriu pentru toată lumea.
Pasul 4: Configurarea Daemon-ului OpenSSH (sshd_config) Acum trebuie să instruiți daemon-ul SSH să solicite introducerea interactivă a codului cu doi factori.
Editați fișierul /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Găsiți și setați următoarele valori pentru directive:
KbdInteractiveAuthentication yes
UsePAM yes
Scenariul A: Autorizare prin chei SSH + 2FA (Standard recomandat) Dacă doriți ca serverul să solicite cheia SSH, apoi codul TOTP (fără introducerea parolei de sistem), adăugați la sfârșitul fișierului:
AuthenticationMethods publickey,keyboard-interactive
Reporniți serviciul SSH pentru a aplica setările:
# Pentru Ubuntu / Debian
sudo systemctl restart ssh
# Pentru AlmaLinux / Rocky Linux / RHEL
sudo systemctl restart sshd
Checklist pentru verificarea accesului (Important!)
NU ÎNCHIDEȚI sesiunea SSH curentă. Deschideți o fereastră nouă de terminal și testați conexiunea:
ssh -i ~/.ssh/id_rsa user@your_server_ip
Ar trebui să vedeți mesajul:
Authenticated with partial success.
Verification code:
Introduceți codul din 6 cifre din aplicația mobilă. La introducerea cu succes, veți accesa consola serverului.
REȚINEȚI: Închiderea terminalului este permisă numai după o verificare reușită; în caz contrar, riscați să pierdeți accesul la server pentru acest utilizator și va trebui să solicitați ajutorul unui administrator de sistem sau al furnizorului de internet.
FAQ: Pe scurt despre ce este mai important
Ce să fac dacă am pierdut telefonul cu Google Authenticator? Utilizați unul dintre codurile de recuperare de urgență (emergency recovery codes) salvate în locul codului temporar din 6 cifre. Dacă aveți acces la consola root (prin panoul VNC/IPMI al hostingului MivoCloud), puteți dezactiva temporar 2FA pentru utilizator ștergând fișierul
~/.google_authenticator.De ce se desincronizează codurile și serverul afișează "Invalid code"? Specificul TOTP depinde de ora exactă a sistemului. Asigurați-vă că serviciul de sincronizare a orei
chronysausystemd-timesyncdeste activat și funcționează pe server:Bashsudo timedatectl statusSe poate configura 2FA pentru utilizatorul root? Da, prin rularea comenzii
google-authenticatordirect din contulroot. Totuși, din punct de vedere al securității, se recomandă dezactivarea completă a autentificării directe ca root (PermitRootLogin no) și utilizarea autorizării printr-un utilizator obișnuit cu drepturisudo.
Concluzie
Configurarea autentificării cu doi factori este una dintre cele mai eficiente și accesibile modalități de a proteja infrastructura de servere împotriva accesului neautorizat. Investind doar 10 minute pentru integrarea modulului PAM Google Authenticator, reduceți la minimum riscurile de compromitere a serviciilor dvs.
Cu toate acestea, securitatea rețelei necesită o abordare complexă. Un nivel ridicat de protecție SSH trebuie să fie susținut de o fundație hardware de încredere, protecție împotriva atacurilor DDoS și o rețea izolată.
Dacă sunteți în căutarea unei platforme tolerante la erori pentru deploy-ul proiectelor critice, descoperiți serviciile noastre NVMe VPS și Dedicated Server de la MivoCloud. Oferim virtualizare pură KVM cu izolare hardware a resurselor, snapshot-uri instantanee pentru configurări de sistem sigure și conexiuni de mare viteză.
Autorul articolului: Anatolie Cohaniuc

