Linux 2FA: Kako osigurati SSH prijave pomoću Google Autentiatora i Yubikeyja

Linux 2FA: Kako osigurati SSH prijave pomoću Google Autentiatora i Yubikeyja


Usluge povezane putem Interneta posebno su osjetljive na napade prijava jer se bilo tko u svijetu može prijaviti na vaš račun iz udobnosti vlastitog kauča. Tijekom nekoliko godina razvijeno je nekoliko dodataka za provjeru autentičnosti u borbi protiv ove inherentne slabosti u standardnom modelu provjere autentičnosti korisnika / lozinke. Najčešća je dvofaktorska provjera autentičnosti (2FA) jer 2FA zahtijeva da dokažete da imate nešto uz dodavanje znanja korisničkog imena i lozinke. Još jedna dobro poznata metoda zahtijeva da korisnik posjeduje hardverski uređaj koji pruža rotirajuće lozinke.

U ovom ćemo vam članku pokazati kako zaključati svoj Linux SSH poslužitelj pomoću obje metode - za unošenje lozinke potreban je Yubikey, a tok Google Authenticator potreban je za dovršetak prijave..

Yubikey je hardverski uređaj koji pruža razne mehanizme za provjeru kriptografske provjere identiteta, poput jednokratnih lozinki (OTP) i šifriranja javnih ključeva (PKI). Google Authenticator softverski je program koji pruža OTP-ove za upotrebu kao drugi faktor autentifikacije.

Korištenje Google Autentifikatora za osiguranje vaših Linux SSH prijava

Prvo, prvo - preuzmite mobilnu aplikaciju Google Authenticator za svoj telefon ili tablet. Jednom kada to dobijete, možemo doći na posao. Dostupan je i u Trgovini Play i u App Storeu.

Provjera autentičnosti za prijavu na Linux obično omogućuju knjižnice Pluggable Authentication Modules (PAM). Kao što ime govori, PAM podržava dodavanje proizvoljnih modula za provjeru autentičnosti. U ovom slučaju ćemo "uključiti" sloj Google autentifikatora na uobičajenu prijavu za SSH kako bismo zatražili kôd nakon što korisnik unese svoju lozinku.

Da bismo to učinili, moramo započeti instaliranjem potrebnih PAM knjižnica:

$ sudo apt - instalirajte libpam-google-autentifikator
Čitanje popisa paketa ... Gotovo
Izgradnja stabla ovisnosti
Čitanje državnih informacija ... Gotovo
Sljedeći dodatni paketi bit će instalirani:
libqrencode3
Instalirat će se sljedeći NOVI paketi:
libpam-google-autentifikator libqrencode3
0 nadograđeno, 2 novo instalirana, 0 za uklanjanje i 356 nije nadograđeno.
Trebate dobiti 46,4 kB arhive.
Nakon ove operacije koristit će se 208 kB dodatnog prostora na disku.

Želite li nastaviti [Y / n]? y

I pokrenite autentifikat prvi put:

$ google-autentifikator

Linux 2FA: Kako osigurati SSH prijave pomoću Google Autentiatora i Yubikeyja

Kopirajte te kodove na sigurno. Ako ikad izgubite telefon ili imate neki drugi problem zbog kojeg ne možete dobiti kôd, trebat će vam jedan od ovih kodova za slučaj nužde da biste se prijavili.

Sada moramo postaviti ovu prijavu u vašu aplikaciju Google Autentičar. Da biste to učinili, pritisnite gumb + prijavite se u aplikaciju Google Autentifikator i zatim odlučite želite li skenirati QR kôd ili upisati tajni ključ. Bilo koja metoda će uspjeti. Nakon što ga dodate, pojavit će se novi unos u vašoj aplikaciji Google Autentičar koji izgleda ovako:

google-auth-mobile-ulaz

Sada odgovorite sa Da li želite da ažuriram vaše ~ / .google_authenticator datoteku (y / n) pitanje, što će vas uputiti s više pitanja.

Želite li onemogućiti višestruku upotrebu iste provjere autentičnosti

tokena? Ovo vas ograničava na jednu prijavu svakih 30-ih, ali povećava vaše šanse da primijetite ili čak sprečite napade čovjeka-u-sredini (y / n) y

Prema zadanim postavkama, tokeni su dobri 30 sekundi, a kako bismo nadoknadili moguće vremensko pomicanje između klijenta i poslužitelja, dopuštamo dodatni token prije i nakon tekućeg vremena. Ako naiđete na probleme sa slabom vremenskom sinkronizacijom, možete povećati prozor s njegove zadane veličine od 1: 30min do oko 4min. Da li želite to učiniti (y / n) n

Ako računalo na koje se prijavljujete nije očvršćeno grubim pokušajima prijave, možete omogućiti ograničavanje brzine za modul provjere autentičnosti. Prema zadanim postavkama, napadači ograničavaju na najviše 3 pokušaja prijave svakih 30-ih godina.

Želite li omogućiti ograničavanje brzine (y / n) y

Možete odabrati odgovore koji za vas imaju najviše smisla. Odlučim onemogućiti više korištenja tokena i omogućiti ograničavanje brzine. Odlučio sam se za dopuštanje četverominutnog pomicanja vremena, jer i moje računalo i telefon periodično ažuriraju svoje vrijeme, pa je teško zamisliti kako sat može tako teško postati izvan sinkronizacije. Ako se namjeravate prijaviti u udaljeni sustav s puno kašnjenja, možda biste trebali dopustiti dulji vremenski iskorak.

Iz radoznalosti ćemo pogledati našu novu .google-autentifikacijsku datoteku i tamo možemo vidjeti te odluke spremljene zajedno s našim žetonima za hitne slučajeve.

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

Dobro je osigurati da ovu datoteku čita samo vaš korisnik, a to je kako je postavljeno prema zadanom:

$ ls -l .google_authenticator

-r -------- 1 jdw jdw 126 26. travnja 08:30 .google_authenticator

Sada je postavljen Google Autentifikator, ali naš sustav nema pojma da bi ga još trebao koristiti za prijavu. Da bismo to učinili, moramo ažurirati konfiguraciju Pluggable Authentication Module (PAM).

Uredite PAM ssh config datoteku kao korijen:

$ sudo vim /etc/pam.d/sshd

Dodajte tu liniju negdje, stavio sam je na dno:

# Koristite Google Auth za ssh prijave
auth potreban pam_google_authenticator.so

Potrebna je još jedna promjena; izmijenite postavku izazova i odgovora u datoteci sshd_config prebacivanjem ne na da:

$ sudo vim / etc / ssh / sshd_config
# Promijenite na yes kako biste omogućili lozinke za odgovor na izazov (pazite na probleme sa
# nekih PAM modula i niti)
ChallengeResponseAuthentication yes

Sada ponovo pokrenite svoj SSH demon i isprobajte:

$ sudo usluga ssh ponovno pokretanje

Ne odjavite se. Ostavite prijavljeni samo za slučaj da se iz nekog razloga ne možete vratiti. Pokrenite još jedan terminal i SSH u svoj novo konfigurirani stroj.

Nakon što unesem zaporku, zatražit će se trenutni kôd Google Authenticator. Ispravno unošenje oba omogućuje vam prijavu:

$ ssh [email protected]
Zaporka: <=== upisana u mojoj zaporci
Verifikacijski kod:
Dobrodošli u Ubuntu 12.04.5 LTS (GNU / Linux 3.13.0-32-generički x86_64)

Pomoću Yubikey-a osigurajte svoje Linux SSH prijave

Sada imamo sustav koji zahtijeva prijavu korisničkog imena, lozinke i tokena Google Autentifikatora. To je prilično sigurno, ali možemo još bolje. Sustav možemo konfigurirati da prihvaća samo nasumično generiranu lozinku od Yubikey-a.

Od tri podataka koja su potrebna za prijavu (korisničko ime, lozinka, kôd za provjeru autentičnosti), nitko ne može unaprijed znati posljednja dva ili ih ponovo upotrijebiti ako ih otkrije.

Prvo, prvo - nabavite Yubikey izravno iz Yubica ili iz mjesta poput Amazona. Za to ću koristiti Yubikey Nano.

Zatim instalirajmo potrebne pakete. Dodajte Yubico PPA (Arhiva osobnih proizvoda) i instalirajte libpam-yubico PAM biblioteku.

$ sudo add-apt-repozitorija ppa: yubico / stabilno
$ sudo apt-get update
$ sudo apt-get install libpam-yubico

Potvrdi-Yubi-libs-instalacija

Sama datoteka knjižnice nosi naziv pam_yubico.so i trebalo bi je instalirati u / lib / security /

$ ls -l / lib / sigurnost /
ukupno 104
-rw-r - r-- 1 korijen korijena 10296 19. ožujka 2013. pam_ck_connector.so
-rw-r - r-- 1 korijen korijena 43480 28. ožujka 2013. pam_gnome_keyring.so
-rw-r - r-- 1 korijen korijena 47672 25. studenog 2016. pam_yubico.so
$

Trebat će nam set Yubi API vjerodajnica. Posjetite stranicu Yubico API ovdje.

Yubi-get-API-creds

I slijedite upute. Nakon što dostavite svoju e-poštu i svoj Yubikey OTP, web mjesto će vam dati ID klijenta i tajni ključ koji možete koristiti:

Yubi-API-creds

Zadnji dio informacija koji će vam trebati je vaš Yubikey token. To je samo prvih 12 znamenki bilo koje jednokratne lozinke (OTP) koju ispliva vaš Yubikey. Da biste to postigli, usmjerite pokazivač u prozor terminala ili uređivač teksta - na neko mjesto koje će zauzeti unos. Zatim umetnite Yubikey u svoj USB pogon. Ako ima gumb, pritisnite ga. Ako to ne uspije, primjerice model Nano, samo lagano pritisnite Yubikey u USB priključak. U nju bi trebali upisati jednokratnu lozinku u obliku dugog niza znakova. Prvih dvanaest znamenki sve što trebamo za ovaj dio. U mom slučaju to je ovo:

cccccchcdjed

Zatim konfigurirajte datoteku /etc/pam.d/sshd da zahtijeva yubikey za prijavu dodavanjem ovog retka na vrh datoteke, koristeći id i ključ koji ste dobili sa Yubi API web mjesta:

potreban auth pam_yubico.so id = 38399 key = lZqKSrHhyQ6dEBZnIEe2 + Uwe3NA = ispravljanje pogrešaka authfile = / etc / yubikey_mappings mode = klijent

Moramo također reći sshd-ovom demonu da više ne bi trebao prihvaćati lozinke. Ako to ne učinimo, on će i dalje prihvaćati normalne lozinke, osim Yubikey OTP-a, što zapravo nije ono što želimo. Da biste to učinili, komentirajte ovaj redak tako što ćete ispred njega staviti #:

# @ uključuju uobičajene-auth

Sada moramo povezati vašeg korisnika s vašim Yubikeyjem. Da biste to učinili, uredite / etc / yubikey_mappings datoteku i dodajte svoje korisničko ime i svoj tobik Yubikey od 12 znakova odvojeni dvotočkom:

jdw: cccccchcdjed

Ako imate više Yubikeya, možete dodati više dodavanjem dodatnih Yubikey tokena u istu liniju, odvojene dvotočkom. Da imam tri Yubikeya, moja bi linija izgledala ovako:

jdw: cccccchcdjed: joewubtklruy: sgjyirtvskhg

Na kraju, ponovo pokrenite ssh sesiju i isprobajte je. Imajte na umu da biste trebali ostati prijavljeni na svoj radni ssh session samo u slučaju da to ne uspije.

$ sudo ssh restart

Kad se zatraži moja lozinka, umjesto toga pritisnem svoj Yubikey i prijavi me. Budući da sam uključio program za uklanjanje pogrešaka u datoteku etc / pam.d / sshd, dobivam puno rezultata, ali sam to parirao za ovaj isječak jer je doista koristan samo ako nešto pođe po zlu:

$ ssh 192.168.1.118
Zaporka: <=== došao je pritiskom na moj Yubikey
Verifikacijski kod:
Dobrodošli u Ubuntu 12.04.5 LTS (GNU / Linux 3.13.0-32-generički x86_64)

To je sve. Obje ove tehnologije su vrlo tehničke prirode, ali veliko podizanje provode knjižnice PAM-a koje dobavljaju pojedini dobavljači. To znači da možemo osigurati ssh pristup našim Linux sustavima s relativno malo promjena konfiguracije.

Backgrounder na SMS-u i 2FA

Iako nije neophodno za dovršavanje ovog vodiča, neke informacije o tome zašto je SMS 2FA slab, mogu biti od pomoći. Postoji razlog zašto su stvari poput Yubikeysa i aplikacija za provjeru autentičnosti preferirane u odnosu na SMS 2FA.

Dvofaktorska provjera autentičnosti SMS je slaba

Najčešća prihvaćena definicija 2FA je "nešto što znate i nešto što imate". "Nešto što znate" je lozinka. "Nešto što imate" obično znači šestoznamenkasti kôd koji pružate s nekog uređaja kojem imate samo pristup. Davanje ispravnog koda dovoljan je dokaz da imate "nešto".

Danas je najčešći oblik 2FA na internetu uporaba SMS tekstualnih poruka za slanje 2FA koda u vrijeme prijave. Zbog slabosti u SS7 protokolu i slabe provjere korisnika unutar mobilnih timova za podršku, prilično je jednostavno preusmjeriti tekstualnu poruku na bilo koji telefon koji želite. Dvije slabosti se rutinski iskorištavaju u SMS 2FA metodi: Prvo, telefonski broj nije trajno vezan za telefon, tako da svako može primiti SMS poruku s kodom. Drugo, SMS potvrdni kod šalje vam se putem nepouzdanog i nekodiranog medija. Po samoj definiciji, to ne ispunjava zahtjev da budete "nešto što imate". Zapravo je "nešto što sam vam upravo dao", što nije isto.

Aplikacije autentifikatora i hardverski tokeni su jači

Bolje rješenje je upotreba mobilne aplikacije za provjeru autentičnosti kao što su Google Authenticator ili Authy. Još je bolje rješenje spojiti tu vrstu 2FA s rotirajućom, nepredvidivom zaporkom s uređaja poput Yubikeyja. Ni aplikacije ni hardverski tokeni ne prenose nikakve podatke putem interneta ili mobilnog sustava što uklanja taj vektor presretanja. Nedostatak je što su ih teže postaviti, što znači da se najčešće koristi slabija metoda SMS-a.

Povezano:
Resursi za šifriranje: Veliki popis alata i vodiča
Što je brutalan napad?
Vodič za sigurnost računala i interneta bez žargona
Krajnji vodič za sigurnost Linuxa na radnoj površini

Brayan Jackson Administrator
Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.
follow me

About the author

Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.

Leave a Reply

Your email address will not be published. Required fields are marked *

91 − = 81