Cum să configurați autentificarea cu doi factori pe un Raspberry Pi

Popularitatea crescândă a dispozitivelor Raspberry Pi le-a adus în atenția actorilor rău intenționați și a infractorilor cibernetici. În acest context, este esențial să luăm măsuri pentru a asigura securitatea acestor dispozitive. Un pas important în acest sens este implementarea autentificării cu doi factori (2FA).

Despre Raspberry Pi

Raspberry Pi este un computer de dimensiuni reduse, construit pe o singură placă. Lansat în 2012 în Marea Britanie, obiectivul său inițial a fost de a stimula copiii să se implice în programare și creare digitală. Primul model a avut dimensiunile unui card de credit și era alimentat printr-un încărcător de telefon.

Acest dispozitiv oferă ieșire HDMI, porturi USB, conectivitate la rețea și rulează pe sistemul de operare Linux. Gama de produse s-a extins, incluzând versiuni mai compacte, concepute pentru a fi integrate în diverse produse sau a funcționa ca sisteme fără interfață grafică. Prețurile variază între 5 USD pentru Pi Zero și 75 USD pentru Pi 4 B/8 GB.

Raspberry Pi a înregistrat un succes remarcabil, vânzându-se în peste 30 de milioane de unități la nivel mondial. Pasionații au realizat proiecte uimitoare, inclusiv lansarea unui Raspberry Pi aproape în spațiu cu ajutorul unui balon.

Din nefericire, odată ce o platformă devine răspândită, atrage și atenția infractorilor cibernetici. Este alarmant să ne gândim la numărul de dispozitive Pi care folosesc încă datele de autentificare implicite. Dacă Raspberry Pi-ul dvs. este accesibil public și prin internet, folosind Secure Shell (SSH), este crucial să-l securizați.

Chiar dacă nu dețineți date sau software de valoare pe Pi, protejarea sa este importantă, deoarece poate fi folosit ca punct de acces în rețea. Odată ce un infractor cibernetic reușește să se infiltreze într-o rețea, va căuta alte dispozitive de interes.

Autentificarea cu Doi Factori (2FA)

Pentru a obține acces la un sistem, este necesară autentificarea, care implică utilizarea unuia sau mai multor factori. Acești factori sunt clasificați astfel:

  • Ceva ce știi: o parolă sau o frază de acces.
  • Ceva ce ai: un telefon mobil, un token fizic sau un dongle.
  • Ceva ce ești: o caracteristică biometrică, cum ar fi amprenta sau scanarea retinei.

Autentificarea multifactor (MFA) solicită o parolă și unul sau mai multe elemente din celelalte categorii. În acest exemplu, vom folosi o parolă și un telefon mobil, pe care vom instala aplicația Google Authenticator. Pe Raspberry Pi vom utiliza modulul de autentificare Google.

Aplicația mobilă se conectează la Raspberry Pi prin scanarea unui cod QR, transmițând informații de bază de pe Pi pe telefon, asigurându-se că algoritmii de generare a codurilor produc simultan coduri identice. Aceste coduri sunt cunoscute sub denumirea de parole unice temporizate (TOTP).

La o încercare de conectare, Raspberry Pi-ul generează un cod. Folosiți aplicația de autentificare de pe telefon pentru a vedea codul actual. Apoi, Raspberry Pi vă va solicita parola și codul de autentificare. Ambele trebuie să fie corecte pentru a vă putea conecta.

Configurarea Raspberry Pi

În general, accesul la Raspberry Pi prin SSH indică un sistem fără interfață grafică. Prin urmare, vom configura sistemul utilizând o conexiune SSH.

Pentru o siguranță sporită, recomandăm realizarea a două conexiuni SSH: una pentru configurare și testare și alta ca măsură de siguranță. Astfel, în cazul în care pierdeți accesul la Pi, veți avea în continuare o conexiune SSH activă. Modificările setărilor SSH nu afectează o conexiune în curs, permițându-vă să anulați orice modificare și să corectați situația.

În cel mai rău scenariu, dacă pierdeți complet accesul prin SSH, puteți conecta Pi-ul la un monitor, tastatură și mouse, apoi vă puteți conecta într-o sesiune normală. Totuși, dacă Pi-ul nu poate rula un monitor, trebuie să mențineți conexiunea SSH de siguranță deschisă până când verificați că autentificarea cu doi factori funcționează.

Ultima soluție este să reinstalați sistemul de operare pe cardul micro SD, dar încercăm să evităm această soluție.

În primul rând, trebuie să stabilim cele două conexiuni la Raspberry Pi. Ambele comenzi au următoarea structură:

ssh [email protected]

Înlocuiți “numelepi” cu numele propriu al dispozitivului. De asemenea, dacă ați schimbat numele de utilizator implicit, folosiți-l pe cel nou; al nostru este „pi”.

Pentru siguranță, introduceți această comandă de două ori în ferestre terminal diferite, astfel încât să aveți două conexiuni la Raspberry Pi. Apoi, minimizați una dintre ele, pentru a evita închiderea accidentală.

După ce vă conectați, veți vedea mesajul de bun venit. Promptul va afișa numele de utilizator și numele Raspberry Pi-ului.

Trebuie să editați fișierul „sshd_config”. Vom face asta folosind editorul de text nano:

sudo nano /etc/ssh/sshd_config

Derulați prin fișier până la linia:

ChallengeResponseAuthentication no

Înlocuiți „no” cu „yes”.

Apăsați Ctrl+O pentru a salva modificările în nano, apoi Ctrl+X pentru a închide fișierul. Utilizați comanda de mai jos pentru a reporni demonul SSH:

sudo systemctl restart ssh

Acum, trebuie să instalați autentificatorul Google, care este o bibliotecă Plugable Authentication Module (PAM). Aplicația (SSH) va accesa interfața Linux PAM, care va identifica modulul PAM adecvat pentru a gestiona tipul de autentificare solicitat.

Introduceți următoarea comandă:

sudo apt-get install libpam-google-authenticator

Instalarea aplicației

Aplicația Google Authenticator este disponibilă pentru iPhone și Android, așa că instalați versiunea potrivită pentru telefonul dvs. mobil. Puteți folosi și alte aplicații care acceptă acest tip de cod, cum ar fi Authy.

Configurarea autentificării cu doi factori

Din contul pe care îl veți folosi pentru a vă conecta la Raspberry Pi prin SSH, rulați următoarea comandă (fără prefixul sudo):

google-authenticator

Vi se va cere să specificați dacă doriți ca jetoanele de autentificare să fie bazate pe timp. Apăsați Y, apoi Enter.

Un cod Quick Response (QR) va fi generat, dar poate fi afișat incomplet, dacă lățimea ferestrei terminalului este mai mică de 80 de coloane. Măriți fereastra pentru a vedea codul în întregime.

Veți vedea, de asemenea, coduri de securitate sub codul QR. Aceste coduri sunt stocate într-un fișier numit „.google_authenticator”, dar este indicat să faceți o copie a acestora. Dacă veți pierde vreodată accesul la TOTP (de exemplu, dacă vă pierdeți telefonul), puteți folosi aceste coduri pentru a vă autentifica.

Vi se vor solicita patru răspunsuri, primul fiind:

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

Apăsați Y, apoi Enter.

Următoarea întrebare vă întreabă dacă doriți să preveniți utilizările multiple ale aceluiași cod într-o fereastră de 30 de secunde.

Apăsați Y, apoi Enter.

A treia întrebare vă întreabă dacă doriți să extindeți fereastra de acceptare pentru jetoanele TOTP.

Apăsați N ca răspuns, apoi Enter.

Ultima întrebare este: „Doriți să activați limitarea ratei?”

Apăsați Y, apoi Enter.

Veți reveni la promptul de comandă. Măriți fereastra terminalului și/sau derulați înapoi pentru a putea vedea întregul cod QR.

Pe telefonul mobil, deschideți aplicația de autentificare și apăsați pe semnul plus (+) din colțul din dreapta jos al ecranului. Selectați „Scanați un cod QR”, apoi scanați codul QR din fereastra terminalului.

O nouă intrare va apărea în aplicația de autentificare, denumită după numele de gazdă al Pi-ului. Sub aceasta va fi afișat un cod TOTP format din șase cifre. Acesta este afișat ca două grupuri de trei cifre pentru lizibilitate, dar trebuie introdus ca un număr de șase cifre.

Un cerc animat lângă cod indică timpul rămas până la expirarea codului: un cerc complet înseamnă 30 de secunde, un semicerc înseamnă 15 secunde și așa mai departe.

Finalizarea configurării

Mai avem un fișier de editat. Trebuie să comunicăm SSH-ului ce modul PAM să folosească:

sudo nano /etc/pam.d/sshd

Introduceți următoarele linii în partea de sus a fișierului:

#2FA
auth required pam_google_authenticator.so

Puteți alege, de asemenea, când să vi se solicite TOTP:

  • După introducerea parolei: introduceți liniile anterioare sub „@include common-auth”, așa cum se arată în imaginea de mai sus.
  • Înainte de a vi se solicita parola: introduceți liniile anterioare deasupra „@include common-auth”.

Rețineți liniile de subliniere (_) folosite în „pam_google_authenticator.so”, în loc de liniile de cratimă (-) utilizate anterior cu comanda apt-get pentru a instala modulul.

Apăsați Ctrl+O pentru a salva modificările în fișier, apoi Ctrl+X pentru a închide editorul. Trebuie să repornim SSH pentru ultima dată:

sudo systemctl restart ssh

Închideți această conexiune SSH, dar lăsați cealaltă conexiune SSH deschisă până când verificați următorul pas.

Asigurați-vă că aplicația de autentificare este deschisă și gata pe telefonul mobil. Deschideți o nouă conexiune SSH la Pi:

ssh [email protected]

Vi se va cere parola, apoi codul. Introduceți codul de pe telefon, fără spații între numere. La fel ca și parola, codul nu va fi afișat pe ecran.

Dacă totul funcționează, veți fi conectat la Pi; altfel, utilizați conexiunea SSH deschisă ca măsură de siguranță pentru a revizui pașii anteriori.

Securitate sporită

Într-adevăr, acum sunteți mai în siguranță decât înainte când vă conectați la un Raspberry Pi, dar niciodată nu veți fi 100% în siguranță. Există metode de a ocoli autentificarea cu doi factori, bazate pe inginerie socială, atacuri man-in-the-middle și man-at-the-endpoint, înlocuirea SIM-ului și alte tehnici avansate pe care nu le vom detalia aici.

Atunci, de ce să ne deranjăm dacă aceste măsuri nu sunt perfecte? Ei bine, din același motiv pentru care încuiați ușa casei când ieșiți, deși există persoane care pot deschide încuietorile – majoritatea nu o pot face. Cu cât mai multe măsuri de securitate folosim, cu atât mai bine.