Linux 2FA: Cum să securizați conectările SSH cu Google Authenticator și Yubikey

Serviciile conectate la Internet sunt deosebit de vulnerabile la atacurile de conectare, deoarece oricine din lume se poate conecta la contul dvs. din confortul propriei canapele. De-a lungul anilor au fost dezvoltate mai multe suplimente de autentificare pentru a combate această slăbiciune inerentă a modelului standard de autentificare utilizator / parolă. Cea mai frecventă este autentificarea cu doi factori (2FA), deoarece 2FA necesită să demonstrezi că deții ceva, pe lângă faptul că știi un nume de utilizator și o parolă. O altă metodă binecunoscută impune utilizatorilor să dețină un dispozitiv hardware care oferă parole rotative.

În acest articol, vă voi arăta cum să blocați serverul SSH Linux folosind ambele metode – este necesară o Yubikey pentru a furniza parola și este necesar un jeton Google Authenticator pentru a finaliza autentificarea.

Yubikey este un dispozitiv hardware care oferă diverse mecanisme de autentificare criptografică, cum ar fi One Time Passwords (OTP) și Public Key Encryption (PKI). Google Authenticator este o aplicație software care oferă OTP-uri pentru utilizare ca al doilea factor de autentificare.

Utilizarea Google Authenticator pentru a vă securiza autentificările Linux SSH

Primul lucru este – descărcați aplicația mobilă Google Authenticator pentru telefon sau tabletă. După ce aveți asta, putem ajunge la muncă. Este disponibil atât din Play Store, cât și din App Store.

Autentificarea de conectare Linux este de obicei furnizată de bibliotecile PAM (Pluggable Authentication Modules). După cum indică numele, PAM acceptă adăugarea de module de autentificare arbitrare. În acest caz, vom „conecta” stratul Google Authenticator la autentificarea normală a SSH pentru a solicita un cod după ce un utilizator își va furniza parola.

Pentru a face acest lucru, trebuie să începem prin instalarea bibliotecilor PAM necesare:

$ sudo apt-get install libpam-google-autentificator
Citirea listelor de pachete … Gata
Construirea arborelui dependenței
Citirea informațiilor de stare … Gata
Următoarele pachete suplimentare vor fi instalate:
libqrencode3
Următoarele pachete NOU vor fi instalate:
libpam-google-autentificator libqrencode3
0 actualizat, 2 recent instalat, 0 pentru eliminat și 356 neactualizat.
Trebuie să obțineți 46,4 kB de arhive.
După această operație, se vor utiliza 208 kB de spațiu suplimentar pe disc.

Doriți să continuați [Y / n]? y

Și executați autentificatorul pentru prima dată:

$ google-autentificator

Copiați aceste coduri undeva în siguranță. Dacă vă pierdeți vreodată telefonul sau aveți o altă problemă în care nu puteți obține un cod de la acesta, veți avea nevoie de unul dintre aceste coduri zgârieturi de urgență pentru a vă autentifica.

Acum trebuie să configurați această autentificare în aplicația dvs. Google Authenticator. Pentru a face acest lucru, apăsați tasta + conectați-vă aplicația Google Authenticator și apoi decideți dacă doriți să scanați codul QR sau să tastați cheia secretă. Fiecare metodă va funcționa. După ce l-ați adăugat, va apărea o nouă intrare în aplicația dvs. Google Authenticator care arată astfel:

google-auth-mobil-intrare

Acum răspunde da la întrebarea „Vrei să actualizez fișierul dvs. ~ / .google_authenticator (y / n), care vă va solicita mai multe întrebări.

Doriți să nu permiteți mai multe utilizări ale aceleiași autentificări

jeton? Acest lucru vă restricționează la o singură autentificare la fiecare 30 de ani, dar vă crește șansele de a observa sau chiar de a preveni atacurile omului în mijloc (y / n) y

În mod implicit, token-urile sunt bune timp de 30 de secunde și pentru a compensa posibile variații de timp între client și server, permitem un simbol suplimentar înainte și după ora curentă. Dacă întâmpinați probleme cu sincronizarea slabă a timpului, puteți crește fereastra de la dimensiunea prestabilită de la 1: 30min la aproximativ 4min. Doriți să faceți acest lucru (a / a) n

Dacă computerul în care vă conectați nu este întărit împotriva încercărilor de autentificare brute-force, puteți activa limitarea ratei pentru modulul de autentificare. În mod implicit, acest lucru îi limitează pe atacatori la cel mult 3 încercări de conectare la fiecare 30 de ani.

Doriți să activați limitarea ratei (y / n) y

Puteți alege răspunsuri care să vă ofere cel mai mult sens. Am ales să nu permit mai multe utilizări de jetoane și să activez limitarea ratelor. Am optat pentru a permite un interval de patru minute, deoarece atât computerul, cât și telefonul își actualizează periodic timpul, așa că este greu de imaginat cum ceasul poate deveni atât de greoi din sincronizare. Dacă intenționați să vă conectați la un sistem la distanță cu multă latență, poate doriți să permiteți un timp mai lung.

Din curiozitate, dacă aruncăm o privire la noul nostru fișier .google-autentificator, putem vedea acele alegeri salvate acolo, împreună cu simbolurile noastre de urgență.

$ cat .google_authenticator
NO7ZW33I34JMPCKB
RATE_LIMIT 3 30
WINDOW_SIZE 17
DISALLOW_REUSE
TOTP_AUTH
73444347
15364641
36772087
14155810
92578001

Este o idee bună să vă asigurați că acest fișier poate fi citit doar de către utilizator, ceea ce este configurat în mod implicit:

$ ls -l .google_authenticator

-r ——– 1 jdw jdw 126 26 aprilie 08:30 .google_authenticator

Acum avem configurat Google Authenticator, dar sistemul nostru nu are idee că ar trebui să-l folosească pentru conectare. Pentru a face acest lucru, trebuie să actualizăm configurația PAM (Pluggable Authentication Module).

Editați fișierul de configurare PAM ssh ca rădăcină:

$ sudo vim /etc/pam.d/sshd

Adăugați această linie undeva, o așez în partea de jos:

# Utilizați Google Auth pentru conectări ssh
auth-ul necesar pam_google_authenticator.so

Încă o schimbare este necesară; modificați-vă setarea de provocare și răspuns în fișierul dvs. sshd_config, comutând nu pe da:

$ sudo vim / etc / ssh / sshd_config
# Schimbare la da pentru a activa parolele cu răspuns la provocare (atenție la problemele cu
# unele module și fire PAM)
ChallengeResponseAuthentication da

Acum reporniți demonul SSH și încercați-l:

$ sudo service ssh repornește

Nu vă deconectați Lăsați-vă conectat doar în cazul în care nu puteți reveni din anumite motive. Porniți un alt terminal și SSH în mașina dvs. recent configurată.

După ce introduc parola, mi se solicită un cod curent Google Authenticator. Introducerea ambelor în mod corespunzător vă permite să vă conectați:

$ ssh [email protected]
Parola: <=== introdus parola mea
Cod de verificare:
Bine ați venit la Ubuntu 12.04.5 LTS (GNU / Linux 3.13.0-32-generic x86_64)

Utilizarea unui Yubikey pentru a vă securiza autentificările Linux SSH

Avem acum un sistem care necesită un nume de utilizator, o parolă și un jeton Google Authenticator pentru a vă conecta. Este destul de sigur, dar putem face și mai bine. Putem configura sistemul să accepte doar o parolă generată aleatoriu de la un Yubikey.

Din cele trei bucăți de date necesare pentru a vă autentifica (nume de utilizator, parolă, cod de autentificare), nimeni nu ar putea cunoaște în prealabil ultimele două sau să le refolosească dacă sunt descoperite.

Primul lucru este primul – obțineți un Yubikey fie direct de la Yubico, fie dintr-un loc ca Amazon. Voi folosi un Yubikey Nano pentru asta.

În continuare, instalăm pachetele necesare. Adăugați Yubico PPA (Personal Product Archive) și instalați biblioteca PAM libpam-yubico.

$ sudo add-apt-repository ppa: yubico / stable
$ sudo apt-get actualizare
$ sudo apt-get install libpam-yubico

Confirmați-Yubi-libs-instalare

Fișierul de bibliotecă însuși poartă numele de pam_yubico.so și ar trebui instalat în / lib / security /

$ ls -l / lib / security /
în total 104
-rw-r – r– 1 rădăcină rădăcină 10296 19 mar 2013 pam_ck_connector.so
-rw-r – r– 1 root root 43480 28 mar 2013 pam_gnome_keyring.so
-rw-r – r– 1 root root 47672 25 nov 2016 pam_yubico.so
$

Va trebui să avem nevoie de un set de credite API Yubi. Accesați pagina API Yubico aici.

Yubi-get-api-legitimația

Și urmați instrucțiunile. După ce ați furnizat e-mailul și OTP-ul dvs. Yubikey, site-ul vă va oferi un ID de client și o cheie secretă pe care o puteți utiliza:

Yubi-api-legitimația

Ultima informație de care veți avea nevoie este jetonul dvs. Yubikey. Aceasta este doar primele 12 cifre ale oricărei parole unice (OTP) pe care Yubikey o scoate. Pentru a obține acest lucru, concentrați-vă cursorul într-o fereastră de terminal sau într-un editor de text – un loc care va intra. Apoi introduceți Yubikey în unitatea USB. Dacă are un buton, apăsați-l. Dacă nu, cum ar fi modelul Nano, atunci apăsați ușor Yubikey în portul USB. Ar trebui să scrie o singură parolă sub forma unui șir lung de caractere. Primele douăsprezece cifre sunt tot ce avem nevoie pentru această parte. În cazul meu, acesta este:

cccccchcdjed

Apoi, configurați fișierul /etc/pam.d/sshd pentru a solicita conectarea yubikey adăugând această linie în partea de sus a fișierului, folosind id-ul și cheia pe care ați primit-o de pe site-ul API Yubi:

auth necesită pam_yubico.so id = 38399 cheie = lZqKSrHhyQ6dEBZnIEe2 + Uwe3NA = debug authfile = / etc / yubikey_mappings mode = client

De asemenea, trebuie să-i spunem demonului sshd că nu ar trebui să mai accepte parolele Dacă nu o facem, atunci va mai accepta parolele normale, pe lângă OTP-urile Yubikey, ceea ce nu este cu adevărat ceea ce ne dorim. Pentru a face acest lucru, comentați această linie punând un # în fața ei:

# @ includ comun-auth

Acum trebuie să vă asociem utilizatorul cu Yubikey. Pentru a face acest lucru, editați fișierul / etc / yubikey_mappings și adăugați numele de utilizator și simbolul dvs. de 12 caractere Yubikey, separate printr-un punct:

JDW: cccccchcdjed

Dacă aveți mai multe Yubikeys, puteți adăuga mai multe doar adăugând jetonurile Yubikey suplimentare la aceeași linie, separate printr-un punct. Dacă aș avea trei Yubikeys, linia mea ar arăta așa:

JDW: cccccchcdjed: joewubtklruy: sgjyirtvskhg

În cele din urmă, reporniți sesiunea dvs. ssh și încercați-o. Rețineți că ar trebui să rămâneți conectat la sesiunea dvs. de lucru SSH, doar în cazul în care acest lucru nu funcționează.

$ sudo ssh repornește

Când mi se solicită parola, apăs pe Yubikey în schimb și mă loghează. Pentru că am inclus opțiunea de debug în fișierul etc / pam.d / sshd, am o mulțime de ieșiri, dar am redus asta pentru acest fragment, deoarece este într-adevăr util numai dacă ceva nu a mers corect:

$ ssh 192.168.1.118
Parola: <=== a venit din apăsarea Yubikey
Cod de verificare:
Bine ați venit la Ubuntu 12.04.5 LTS (GNU / Linux 3.13.0-32-generic x86_64)

Cam despre asta e. Ambele tehnologii au o natură foarte tehnică, dar ridicarea grea este realizată de bibliotecile PAM furnizate de către furnizorii individuali. Asta înseamnă că putem asigura accesul ssh la sistemele noastre Linux cu relativ puține modificări de configurare.

Informații despre SMS și 2FA

Deși nu este necesar să completați acest tutorial, unele informații despre motivul pentru care SMS-ul 2FA este slab poate fi util. Există un motiv pentru care lucruri precum Yubikeys și aplicațiile de autentificare sunt preferabile prin SMS 2FA.

Autentificarea SMS cu doi factori este slabă

Cea mai acceptată definiție a 2FA este „ceva ce știi și ceva ce ai”. „Ceea ce știi” este o parolă. „Ceea ce aveți” înseamnă de obicei un cod de șase cifre pe care îl furnizați de la un dispozitiv la care doar aveți acces. Furnizarea codului corect este suficientă dovadă că „ai” ceva.

Cea mai obișnuită formă de 2FA pe internet este astăzi folosirea mesajelor SMS prin trimiterea codurilor 2FA la momentul de conectare. Din cauza punctelor slabe din protocolul SS7 și a verificării deficitare a clienților din cadrul echipelor de asistență mobilă, este destul de ușor să redirecționați un mesaj text către orice telefon doriți. Două puncte slabe sunt utilizate în mod obișnuit în metoda 2FA SMS: În primul rând, un număr de telefon nu este permanent legat de un telefon, astfel încât oricine poate primi mesajul SMS cu codul. În al doilea rând, codul de validare SMS vă este trimis printr-un mediu neîncredut și necriptat. Prin definiția sa, aceasta nu îndeplinește cerința de a fi „ceva ce ai”. Este de fapt „ceva ce tocmai v-am oferit”, ceea ce nu este același lucru.

Aplicațiile de autentificare și token-urile hardware sunt mai puternice

O soluție mai bună este utilizarea unei aplicații de autentificare mobilă, cum ar fi Google Authenticator sau Authy. O soluție și mai bună este să cuplăm acel tip de 2FA cu o parolă rotativă și imprevizibilă de pe un dispozitiv precum un Yubikey. Nici aplicațiile, nici token-urile hardware nu transmit date pe internet sau pe sistemul celular, ceea ce înlătură acel vector de interceptare. Dezavantajul este că sunt mai greu de configurat, ceea ce înseamnă că metoda SMS mai slabă este folosită cel mai des.

Legate de:
Resurse de criptare: o listă mare de instrumente și ghiduri
Ce este un atac de forță brută?
Ghidul gratuit pentru securitate la computer și internet
Ghidul suprem pentru securitatea Linux desktop

About the author

Comments

  1. Serviciile conectate la Internet sunt într-adevăr vulnerabile la atacurile de conectare, iar autentificarea cu doi factori (2FA) este o metodă eficientă de a combate această slăbiciune. În acest articol, se prezintă cum să blocați serverul SSH Linux folosind atât Yubikey, cât și Google Authenticator. Yubikey este un dispozitiv hardware care oferă diverse mecanisme de autentificare criptografică, cum ar fi One Time Passwords (OTP) și Public Key Encryption (PKI), în timp ce Google Authenticator este o aplicație software care oferă OTP-uri pentru utilizare ca al doilea factor de autentificare. Pentru a configura autentificarea cu Google Authenticator, trebuie să instalați bibliotecile PAM necesare și să executați autentificatorul pentru prima dată. Apoi, trebuie să configurați această autentificare în aplicația dvs. Google Authenticator și să actualizați fișierul dvs. ~ / .google_authenticator. Autentificarea cu doi factori este o metodă puternică de a vă proteja serviciile conectate la Internet și este recomandată pentru toți utilizatorii.

Comments are closed.