Kako postaviti dvofaktorsku autentifikaciju za SSH u Linuxu


Prema zadanim postavkama, SSH već koristi sigurnu podatkovnu komunikaciju između udaljenih strojeva, ali ako želite dodati dodatni sigurnosni sloj svojim SSH vezama, možete dodati Google Autentifikator (< jaka>dvofaktorska provjera autentičnosti) modul koji vam omogućuje unos nasumičnog verifikacijskog koda jednokratne lozinke (TOTP) dok se povezujete s SSH poslužiteljima. Morat ćete unijeti kontrolni kod sa svog pametnog telefona ili računala kada se povežete.

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

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

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

Instaliranje Google Autentifikatora u Linuxu

Otvorite stroj za koji želite postaviti dvofaktorsku provjeru autentičnosti i instalirajte sljedeće PAM biblioteke zajedno s razvojnim bibliotekama koje su potrebne da bi PAM modul ispravno radio s < modul snažnog>Google autentifikatora.

Na sustavima temeljenim na RedHatu instalirajte paket ‘pam-devel’ pomoću sljedeće naredbe yum.

yum install google-authenticator -y

Na sustavima temeljenim na Debianu instalirajte paket ‘libpam0g-dev’ pomoću sljedeće apt naredbe.

sudo apt install libpam-google-authenticator -y

Generirajte Google tokene za autentifikaciju

Nakon što pokrenete naredbu ‘google-authenticator’, postavit će vam niz pitanja.

google-authenticator

Jednostavno upišite “y” (da) kao odgovor u većini situacija. Ako nešto pođe po zlu, možete ponovno upisati naredbu ‘google-authenticator’ da poništite postavke.

  • Želite li da se tokeni za provjeru autentičnosti temelje na vremenu (y/n) y

Nakon ovog pitanja dobit ćete svoj ‘tajni ključ’ i ‘kodove za hitne slučajeve’. Zapišite te detalje negdje, kasnije ćemo 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” (da) kao što je prikazano u nastavku.

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-a za korištenje Google Autentifikatora u Linuxu

Otvorite PAM konfiguracijsku datoteku '/etc/pam.d/sshd' i dodajte sljedeći redak 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 kako biste pronašli redak koji kaže.

ChallengeResponseAuthentication no

Promijenite u "da". Dakle, postaje ovako.

ChallengeResponseAuthentication yes

Na kraju ponovno pokrenite uslugu SSH da biste poduzeli 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 postavljanje“. 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 'tajni ključ' koji ste ranije generirali.

Generirati će jednokratnu lozinku (kontrolni 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 kod Google Autentifikatora (Kod za provjeru) i lozinka kad god se pokušate prijaviti putem SSH. Imate samo 30 sekundi za unos ovog kontrolnog koda, ako ga propustite, ponovno će se generirati novi kontrolni 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, također možete koristiti Firefox dodatak koji se zove Autentifikator za provjeru autentičnosti u dva faktora.

Važno: dvofaktorska provjera autentičnosti radi sa SSH prijavom temeljenom na lozinci. Ako koristite bilo koju SSH sesiju s privatnim/javnim ključem, ona će zanemariti dvofaktorsku provjeru autentičnosti i izravno vas prijaviti.