Kaksifaktorisen todennuksen määrittäminen SSH:lle Linuxissa


Oletuksena SSH käyttää jo suojattua tietoliikennettä etäkoneiden välillä, mutta jos haluat lisätä ylimääräisen suojakerroksen SSH-yhteyksiisi, voit lisätä Google Authenticatorin (kaksivaiheinen todennus) -moduuli, jonka avulla voit syöttää satunnaisen kertaluonteisen salasanan (TOTP) vahvistuskoodin muodostaessasi yhteyttä SSH-palvelimiin. Sinun on syötettävä vahvistuskoodi älypuhelimesta tai tietokoneesta, kun muodostat yhteyden.

Google Authenticator on avoimen lähdekoodin moduuli, joka sisältää Googlen kehittämien kertakäyttöisten pääsykoodien (TOTP) vahvistustunnusten toteutukset.

Se tukee useita mobiilialustoja sekä PAM:ia (Pluggable Authentication Module). Nämä kertakäyttöiset salasanat luodaan OATH Initiative for Open Authentication -aloitteen luomien avoimien standardien avulla.

Tässä artikkelissa näytän sinulle, kuinka SSH määritetään kaksivaiheista todennusta varten RedHat- ja Debian-pohjaisissa Linux-jakeluissa, kuten Fedora, CentOS Stream, Rocky Linux ja AlmaLinux, Ubuntu, Debian ja Mint.

Google Authenticatorin asentaminen Linuxiin

Avaa kone, jolle haluat määrittää kaksivaiheisen todennuksen ja asenna seuraavat PAM-kirjastot sekä kehityskirjastot, joita tarvitaan, jotta PAM-moduuli toimii oikein Google-tunnistus-moduuli.

RedHat-pohjaisissa järjestelmissä asenna pam-devel-paketti käyttämällä seuraavaa yum-komentoa.

yum install google-authenticator -y

Debian-pohjaisissa järjestelmissä asenna paketti libpam0g-dev käyttämällä seuraavaa apt-komentoa.

sudo apt install libpam-google-authenticator -y

Luo Google-todennustunnuksia

Kun suoritat google-authenticator-komennon, se kysyy useita kysymyksiä.

google-authenticator

Kirjoita vain "y" (yes) vastaukseksi useimmissa tilanteissa. Jos jokin menee pieleen, voit nollata asetukset kirjoittamalla uudelleen komennon google-authenticator.

  • Haluatko todennustunnusten olevan aikaperusteisia (y/n) y

Tämän kysymyksen jälkeen saat 'salaisen avaimen' ja 'hätäkoodin'. Kirjoita nämä tiedot muistiin jonnekin. Tarvitsemme 'salaisen avaimen' myöhemmin Google Authenticator -sovelluksen määrittämiseen.

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

Noudata seuraavaksi ohjattua asennustoimintoa ja kirjoita useimmissa tapauksissa vastaukseksi "y" (kyllä) alla olevan kuvan mukaisesti.

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

SSH:n määrittäminen käyttämään Google Authenticatoria Linuxissa

Avaa PAM-määritystiedosto /etc/pam.d/sshd ja lisää seuraava rivi tiedoston alaosaan.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Avaa seuraavaksi SSH-määritystiedosto /etc/ssh/sshd_config ja vieritä alas löytääksesi rivin, jossa lukee.

ChallengeResponseAuthentication no

Muuta sen arvoksi "kyllä". Joten siitä tulee tällainen.

ChallengeResponseAuthentication yes

Käynnistä lopuksi SSH-palvelu uudelleen tehdäksesi uusia muutoksia.

systemctl restart sshd
Or
sudo systemctl restart sshd

Google Authenticator -sovelluksen määrittäminen

Käynnistä Google Authenticator -sovellus älypuhelimellasi. Paina + ja valitse "Anna asetusnäppäin". Jos sinulla ei ole tätä sovellusta, voit ladata ja asentaa Google Authenticator -sovelluksen Android/iPhone/Blackberry-laitteillesi.

Lisää tilisi Nimi ja anna aiemmin luotu salainen avain.

Se luo kertaluonteisen salasanan (vahvistuskoodin), joka vaihtuu jatkuvasti 30 sekunnin välein puhelimessasi.

Yritä nyt kirjautua sisään SSH:n kautta. Sinulta kysytään Google Authenticator -koodia (vahvistuskoodi) ja salasanaa. > aina, kun yrität kirjautua sisään SSH:n kautta. Sinulla on vain 30 sekuntia aikaa antaa tämä vahvistuskoodi. Jos unohdat sen, se luo uuden vahvistuskoodin.

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 ~]#

Jos sinulla ei ole älypuhelinta, voit myös käyttää Firefox-lisäosaa nimeltä Authenticator kaksivaiheisen todennuksen tekemiseen.

Tärkeää: Kaksivaiheinen todennus toimii salasanapohjaisen SSH-kirjautumisen kanssa. Jos käytät mitä tahansa yksityisen/julkisen avaimen SSH-istuntoa, se jättää huomioimatta kaksivaiheisen todennuksen ja kirjaa sinut suoraan sisään.