Kako postaviti dvofaktorsku autentifikaciju za SSH u Linuxu


Prema zadanim postavkama, SSH već koristi sigurnu komunikaciju podataka između udaljenih mašina, ali ako želite dodati dodatni sigurnosni sloj svojim SSH vezama, možete dodati Google Authenticator (dvofaktorska autentikacija) modul koji vam omogućava da unesete nasumični jednokratni lozinki (TOTP) verifikacioni kod dok se povezujete na SSH servere. Morat ćete unijeti verifikacioni kod sa svog pametnog telefona ili računara kada se povežete.

Google Authenticator je modul otvorenog koda koji uključuje implementacije tokena za provjeru jednokratnih lozinki (TOTP) koje je razvio Google.

Podržava nekoliko mobilnih platformi, kao i PAM (Pluggable Authentication Module). Ove jednokratne šifre se generiraju korištenjem otvorenih standarda koje je kreirala OATH Inicijativa za otvorenu autentifikaciju).

U ovom članku pokazat ću vam kako postaviti i konfigurirati SSH za dvofaktorsku autentifikaciju pod Linux distribucijama baziranim na RedHat-u i Debianu kao što su Fedora, CentOS Stream, Rocky Linux i AlmaLinux, Ubuntu, Debian i Mint.

Instalacija Google Authenticator-a u Linuxu

Otvorite mašinu na kojoj želite da postavite dvofaktorsku autentifikaciju i instalirajte sledeće PAM biblioteke zajedno sa razvojnim bibliotekama koje su potrebne da bi PAM modul ispravno radio sa Google autentifikator modul.

Na sistemima baziranim na RedHat-u instalirajte „pam-devel“ paket koristeći sljedeću yum komandu.

yum install google-authenticator -y

Na sistemima baziranim na Debianu instalirajte paket ‘libpam0g-dev’ koristeći sljedeću naredbu apt.

sudo apt install libpam-google-authenticator -y

Generirajte Google tokene za autentifikaciju

Nakon što pokrenete naredbu 'google-authenticator', ona će vam postaviti niz pitanja.

google-authenticator

Jednostavno upišite “y” (yes) kao odgovor u većini situacija. Ako nešto pođe po zlu, možete ponovo ukucati naredbu „google-authenticator“ da resetujete postavke.

  • Želite li da tokeni za autentifikaciju budu vremenski zasnovani (y/n) y

Nakon ovog pitanja, dobit ćete svoj 'tajni ključ' i 'šifre za hitne slučajeve'. Zapišite ove detalje negdje, kasnije će nam trebati ‘tajni ključ‘ za postavljanje aplikacije Google Authenticator.

google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

Zatim slijedite čarobnjak za postavljanje i u većini slučajeva upišite odgovor kao “y” (yes) kao što je prikazano ispod.

Do you want me to update your "/root/.google_authenticator" file (y/n) y Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) y If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y

Konfiguriranje SSH za korištenje Google Authenticator u Linuxu

Otvorite PAM konfiguracionu datoteku ‘/etc/pam.d/sshd’ i dodajte sljedeći red na dno datoteke.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Zatim otvorite SSH konfiguracijsku datoteku ‘/etc/ssh/sshd_config’ i pomaknite se prema dolje da pronađete red koji kaže.

ChallengeResponseAuthentication no

Promijenite u „da“. Dakle, postaje ovako.

ChallengeResponseAuthentication yes

Konačno, ponovo pokrenite SSH uslugu da izvršite nove promjene.

systemctl restart sshd
Or
sudo systemctl restart sshd

Konfiguriranje aplikacije Google Authenticator

Pokrenite aplikaciju Google Authenticator na svom pametnom telefonu. Pritisnite + i odaberite „Unesite ključ za podešavanje“. Ako nemate ovu aplikaciju, možete preuzeti i instalirati aplikaciju Google Authenticator na svoje Android/iPhone/Blackberry uređaje.

Dodajte svoj račun „Ime“ i unesite ranije generiran „tajni ključ“.

Generirat će jednokratnu lozinku (verifikacioni kod) koja će se stalno mijenjati svakih 30 sekundi na vašem telefonu.

Sada se pokušajte prijaviti putem SSH, od vas će se tražiti Google Authenticator kod (Kôd za provjeru) i Lozinka kad god se pokušate prijaviti putem SSH. Imate samo 30 sekundi da unesete ovaj verifikacioni kod, ako ga propustite, ponovo će se generisati novi verifikacioni kod.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@tecmint ~]#

Ako nemate pametni telefon, možete koristiti i Firefox dodatak koji se zove Authenticator da izvršite dvofaktorsku autentifikaciju.

Važno: Dvofaktorska autentifikacija radi sa SSH prijavom zasnovanom na lozinki. Ako koristite bilo koju SSH sesiju privatnog/javnog ključa, ona će zanemariti dvofaktorsku autentifikaciju i prijaviti vas direktno.