Vyhledávání na webu

Jak nastavit dvoufaktorové ověřování pro SSH v Linuxu


Ve výchozím nastavení již SSH používá zabezpečenou datovou komunikaci mezi vzdálenými počítači, ale pokud chcete ke svým připojením SSH přidat další vrstvu zabezpečení, můžete přidat Google Authenticator (< moduldvoufaktorová autentizace), který vám umožňuje zadat náhodný ověřovací kód jednorázového hesla (TOTP) při připojování k serverům SSH. Při připojování budete muset zadat ověřovací kód ze svého chytrého telefonu nebo PC.

Google Authenticator je modul s otevřeným zdrojovým kódem, který zahrnuje implementace ověřovacích tokenů jednorázových hesel (TOTP) vyvinutých Googlem.

Podporuje několik mobilních platforem a také PAM (Pluggable Authentication Module). Tyto jednorázové přístupové kódy jsou generovány pomocí otevřených standardů vytvořených OATH Initiative for Open Authentication).

V tomto článku vám ukážu, jak nastavit a nakonfigurovat SSH pro dvoufaktorovou autentizaci v distribucích Linuxu založených na RedHat a Debianu, jako je Fedora, CentOS Stream, Rocky Linux a AlmaLinux, Ubuntu, Debian a Mint.

Instalace aplikace Google Authenticator v systému Linux

Otevřete počítač, na kterém chcete nastavit dvoufaktorové ověřování, a nainstalujte následující knihovny PAM spolu s vývojovými knihovnami, které jsou potřebné pro správnou funkci modulu PAM s < modulAutentizátor Google.

Na systémech založených na RedHat nainstalujte balíček „pam-devel“ pomocí následujícího příkazu yum.

yum install google-authenticator -y

Na systémech založených na Debianu nainstalujte balíček „libpam0g-dev“ pomocí následujícího příkazu apt.

sudo apt install libpam-google-authenticator -y

Vygenerujte ověřovací tokeny Google

Jakmile spustíte příkaz „google-authenticator“, vyzve vás řadou otázek.

google-authenticator

Ve většině situací jednoduše zadejte jako odpověď „y“ (ano). Pokud se něco pokazí, můžete znovu zadat příkaz „google-authenticator“ a resetovat nastavení.

  • Chcete, aby byly autentizační tokeny založené na čase (y/n) y

Po této otázce obdržíte svůj „tajný klíč“ a „nouzové kódy“. Tyto podrobnosti si někam zapište, ‘tajný klíč‘ budeme později potřebovat k nastavení aplikace 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

Dále postupujte podle průvodce nastavením a ve většině případů zadejte odpověď jako „y“ (ano), jak je uvedeno níže.

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

Konfigurace SSH pro použití Google Authenticator v Linuxu

Otevřete konfigurační soubor PAM/etc/pam.d/sshd“ a na konec souboru přidejte následující řádek.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Dále otevřete konfigurační soubor SSH/etc/ssh/sshd_config“ a přejděte dolů, abyste našli řádek, který říká.

ChallengeResponseAuthentication no

Změňte jej na „ano“. Takže to dopadne takhle.

ChallengeResponseAuthentication yes

Nakonec restartujte službu SSH, abyste provedli nové změny.

systemctl restart sshd
Or
sudo systemctl restart sshd

Konfigurace aplikace Google Authenticator

Spusťte na svém smartphonu aplikaci Google Authenticator. Stiskněte + a vyberte „Zadejte klíč nastavení“. Pokud tuto aplikaci nemáte, můžete si stáhnout a nainstalovat aplikaci Google Authenticator do zařízení Android/iPhone/Blackberry.

Přidejte svůj účet „Jméno“ a zadejte „tajný klíč“ vygenerovaný dříve.

Vygeneruje jednorázové heslo (ověřovací kód), které se bude v telefonu každých 30 sekund neustále měnit.

Nyní se zkuste přihlásit pomocí SSH, budete vyzváni k zadání kódu Google Authenticator (Ověřovací kód) a hesla kdykoli se pokusíte přihlásit pomocí SSH. Na zadání tohoto ověřovacího kódu máte pouze 30 sekund. Pokud jej zmeškáte, vygeneruje se nový ověřovací kód.

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

Pokud nemáte chytrý telefon, můžete také použít doplněk Firefox s názvem Authenticator k provedení dvoufaktorového ověření.

Důležité: Dvoufaktorová autentizace funguje s přihlašováním SSH na základě hesla. Pokud používáte jakoukoli relaci SSH soukromého/veřejného klíče, bude ignorovat dvoufaktorovou autentizaci a přihlásí vás přímo.