Како подесити двофакторску аутентификацију на Распберри Пи-у

Računari Raspberry Pi postali su sveprisutni, što ih je učinilo metom sajber pretnji i kriminalaca. U ovom tekstu, pokazaćemo vam kako da dodatno osigurate svoj Raspberry Pi pomoću dvofaktorske autentifikacije.

Izvanredan Raspberry Pi

Raspberry Pi je jednopločni računar, lansiran u Velikoj Britaniji 2012. godine s ciljem da inspiriše decu na učenje, kreiranje i programiranje. Originalni model bio je veličine kreditne kartice, a napajao se preko punjača za telefon.

Raspberry Pi pruža HDMI izlaz, USB priključke, mrežnu konekciju i pokreće Linux operativni sistem. Kasniji modeli uključuju još manje verzije, dizajnirane za ugradnju u razne proizvode ili rad kao sistemi bez monitora. Cene se kreću od 5 dolara za minimalistički Pi Zero, do 75 dolara za Pi 4 B/8GB.

Uspeh Raspberry Pi računara bio je izuzetan; prodato je preko 30 miliona jedinica širom sveta. Entuzijasti su pomoću njih kreirali neverovatne i inspirativne projekte, uključujući i slanje jednog do ivice svemira i nazad pomoću balona.

Nažalost, kada neka računarska platforma postane toliko rasprostranjena, neizbežno privlači pažnju sajber kriminalaca. Užasavajuća je pomisao koliko Pi računara još uvek koristi podrazumevano korisničko ime i lozinku. Ukoliko je vaš Pi dostupan sa interneta putem Secure Shell (SSH), mora biti siguran.

Čak i ako na svom Pi računaru nemate važne podatke ili softver, važno ga je zaštititi jer vaš Pi nije stvarna meta, već način za ulazak u vašu mrežu. Kada haker prodre u mrežu, okrenuće se drugim uređajima koji su im zapravo zanimljivi.

Dvofaktorska autentifikacija

Autentifikacija, odnosno dobijanje pristupa sistemu, zahteva jedan ili više faktora. Faktori se kategorizuju na sledeći način:

Nešto što znate: kao što je lozinka ili fraza.
Nešto što imate: kao mobilni telefon, fizički token ili ključ.
Nešto što jeste: biometrijski podaci, poput otiska prsta ili skeniranja mrežnjače.

Višefaktorska autentifikacija (MFA) zahteva lozinku i jednu ili više stavki iz drugih kategorija. U našem primeru koristićemo lozinku i mobilni telefon. Mobilni telefon će koristiti aplikaciju Google Authenticator, a Pi će koristiti Google modul za autentifikaciju.

Aplikacija na mobilnom telefonu povezuje se s vašim Pi skeniranjem QR koda. To prenosi osnovne informacije s Pi na vaš mobilni telefon, osiguravajući da njihovi algoritmi za generisanje kodova istovremeno proizvode iste kodove. Ovi kodovi nazivaju se jednokratne lozinke zasnovane na vremenu (TOTP).

Kada primi zahtev za povezivanje, vaš Pi generiše kod. Koristite aplikaciju za autentifikaciju na telefonu da vidite trenutni kod, a zatim će vaš Pi zahtevati lozinku i kod za autentifikaciju. I vaša lozinka i TOTP moraju biti tačni pre nego što vam se dozvoli povezivanje.

Konfigurisanje Pi

Ako obično koristite SSH na svom Pi računaru, verovatno je reč o sistemu bez monitora, pa ćemo ga konfigurisati putem SSH veze.

Najsigurnije je uspostaviti dve SSH veze: jednu za konfigurisanje i testiranje, a drugu kao rezervnu. Na taj način, ako se zaključate sa svog Pi, i dalje ćete imati aktivnu drugu SSH vezu. Promena SSH postavki neće uticati na trenutnu vezu, tako da možete koristiti drugu vezu da poništite sve promene i ispravite situaciju.

Ako se dogodi najgore i potpuno ste zaključani putem SSH-a, i dalje ćete moći da povežete svoj Pi s monitorom, tastaturom i mišem, i da se prijavite u regularnu sesiju. Drugim rečima, moći ćete se prijaviti sve dok vaš Pi može da pokrene monitor. Međutim, ako to ne može, morate zadržati sigurnosnu SSH vezu otvorenom dok ne proverite da li dvofaktorska autentifikacija ispravno funkcioniše.

Krajnja mera je, naravno, ponovno flešovanje operativnog sistema na Pi-jevu mikro SD karticu, ali pokušaćemo da to izbegnemo.

Prvo, moramo uspostaviti dve veze s Pi računarom. Obe komande imaju sledeći oblik:

ssh [email protected]

Ime ovog Pi računara je „pas čuvar“, ali ćete vi umesto toga uneti svoje ime. Ako ste promenili podrazumevano korisničko ime, koristite i to; naše je „pi“.

Zapamtite, radi sigurnosti, otkucajte ovu naredbu dva puta u različitim terminalskim prozorima kako biste imali dve veze sa svojim Pi. Zatim, minimizujte jedan od njih, kako ne bi smetao i kako ga slučajno ne biste zatvorili.

Kada se povežete, videćete pozdravnu poruku. Prompt će prikazati korisničko ime (u ovom slučaju „pi“) i ime Pi računara (u ovom slučaju „pas čuvar“).

Morate urediti datoteku „sshd_config“. To ćemo učiniti u nano uređivaču teksta:

sudo nano /etc/ssh/sshd_config

Krećite se kroz datoteku dok ne vidite sledeći red:

ChallengeResponseAuthentication no

Zamenite „ne“ sa „da“.

Pritisnite Ctrl+O da biste sačuvali promene u nanu, a zatim pritisnite Ctrl+X da biste zatvorili datoteku. Koristite sledeću naredbu da ponovo pokrenete SSH demon:

sudo systemctl restart ssh

Morate instalirati Google Authenticator, koji je priključni modul za autentifikaciju (PAM). Aplikacija (SSH) će pozvati Linux PAM interfejs, a interfejs će pronaći odgovarajući PAM modul za obradu zahtevane vrste autentifikacije.

Otkucajte sledeće:

sudo apt-get install libpam-google-authenticator

Instaliranje aplikacije

Aplikacija Google Authenticator dostupna je za iPhone i Android, pa jednostavno instalirajte odgovarajuću verziju za svoj mobilni telefon. Takođe možete koristiti aplikacije Authy i druge aplikacije koje podržavaju ovu vrstu koda za verifikaciju identiteta.

Konfigurisanje dvofaktorske autentifikacije

Na nalogu koji ćete koristiti kada se povežete s Pi putem SSH-a, pokrenite sledeću naredbu (ne uključujte sudo prefiks):

google-authenticator

Bićete upitani želite li da tokeni za autentifikaciju budu zasnovani na vremenu; pritisnite Y, a zatim Enter.

Generisaće se QR kod, ali je šifrovan jer je širi od 80 kolona terminalskog prozora. Proširite prozor kako biste videli kod.

Takođe ćete videti sigurnosne kodove ispod QR koda. Oni su upisani u datoteku pod nazivom „.google_authenticator“, ali možda biste želeli odmah da napravite njihovu kopiju. Ako izgubite mogućnost dobijanja TOTP (ako izgubite mobilni telefon, na primer), možete koristiti ove kodove za autentifikaciju.

Morate odgovoriti na četiri pitanja, od kojih je prvo:

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

Pritisnite Y, a zatim Enter.

Sledeće pitanje se odnosi na to da li želite da sprečite višestruku upotrebu istog koda u roku od 30 sekundi.

Pritisnite Y, a zatim Enter.

Treće pitanje se odnosi na to želite li da proširite prozor prihvatanja za TOTP tokene.

Pritisnite N, a zatim Enter.

Poslednje pitanje glasi: „Želite li da omogućite ograničenje brzine?“

Otkucajte Y, a zatim pritisnite Enter.

Vratili ste se na komandnu liniju. Ako je potrebno, proširite terminalski prozor i/ili skrolujte nagore u prozoru kako biste mogli da vidite ceo QR kod.

Na svom mobilnom telefonu otvorite aplikaciju za autentifikaciju, a zatim pritisnite znak plus (+) u donjem desnom uglu ekrana. Izaberite „Skeniraj QR kod“, a zatim skenirajte QR kod u terminalskom prozoru.

Novi unos će se pojaviti u aplikaciji za autentifikaciju, nazvan po nazivu hosta Pi, a šestocifreni TOTP kod će biti naveden ispod njega. Prikazuje se kao dve grupe od po tri cifre da bi se olakšalo čitanje, ali morate da ga otkucate kao jedan šestocifreni broj.

Animirani krug pored koda pokazuje koliko dugo će kod još važiti: pun krug znači 30 sekundi, polukrug znači 15 sekundi itd.

Povezivanje svega zajedno

Imamo još jednu datoteku za uređivanje. Moramo reći SSH-u koji PAM modul za autentifikaciju da koristi:

sudo nano /etc/pam.d/sshd

Otkucajte sledeće redove pri vrhu datoteke:

#2FA
    
auth required pam_google_authenticator.so

Takođe možete odabrati kada želite da budete upitani za TOTP:

Nakon unosa lozinke: Otkucajte prethodne redove ispod „@include common-auth“, kao što je prikazano na slici iznad.
Pre nego što se od vas zatraži lozinka: Otkucajte prethodne redove iznad „@include common-auth“.

Obratite pažnju na donje crte (_) koje se koriste u „pam_google_authenticator.so“, umesto na crtice (-) koje smo ranije koristili s naredbom apt-get za instaliranje modula.

Pritisnite Ctrl+O da biste upisali promene u datoteku, a zatim pritisnite Ctrl+X da biste zatvorili uređivač. Moramo ponovo pokrenuti SSH poslednji put, i onda smo gotovi:

sudo systemctl restart ssh

Zatvorite ovu SSH vezu, ali ostavite drugu SSH vezu sa sigurnosnom mrežom otvorenom dok ne verifikujemo ovaj sledeći korak.

Uverite se da je aplikacija za autentifikaciju otvorena i spremna na vašem mobilnom telefonu, a zatim otvorite novu SSH vezu s Pi:

ssh [email protected]

Trebalo bi da budete upitani za lozinku, a zatim i za kod. Unesite kod sa svog mobilnog telefona bez razmaka između brojeva. Kao i vaša lozinka, ne prikazuje se na ekranu.

Ako sve ide po planu, trebalo bi da vam bude dozvoljeno da se povežete na Pi; ako ne, koristite SSH vezu sa sigurnosnom mrežom da biste pregledali prethodne korake.

Bolje sigurno nego žao

Da li ste primetili „r“ u „sigurnije“ iznad?

Zaista, sada ste bezbedniji nego što ste bili ranije kada se povezujete na Raspberry Pi, ali ništa nikada nije 100 posto sigurno. Postoje načini da se zaobiđe dvofaktorska autentifikacija. Oslanjaju se na socijalni inženjering, napade čoveka u sredini i čoveka na krajnjoj tački, zamenu SIM kartice i druge napredne tehnike koje, naravno, ovde nećemo opisivati.

Pa, zašto se mučiti sa svim ovim ako nije savršeno? Pa, iz istog razloga zašto zaključavate ulazna vrata kada odlazite, iako postoje ljudi koji mogu obiti brave – većina ne može.