GNU/Linux >> Znalost Linux >  >> Ubuntu

Nastavte SSH dvoufaktorové ověřování (2FA) na serveru Ubuntu

Tento tutoriál vám ukáže, jak nastavit dvoufaktorové ověřování SSH na serveru Ubuntu pomocí známého nástroje Google Authenticator. Výrazně to zlepší zabezpečení služby SSH na vašem serveru Ubuntu.

Jak funguje dvoufaktorová autentizace

Normálně stačí zadat heslo nebo použít klíč SSH pro vzdálené přihlášení k serveru Ubuntu. Dvoufaktorová autentizace (2FA) vyžaduje zadání dvou informací, abyste se mohli přihlásit. Budete tedy také muset zadat časové jednorázové heslo pro přihlášení k vašemu SSH serveru. Toto jednorázové heslo je vypočítáno pomocí algoritmu TOTP, což je standard IETF. V dnešní době mnoho webů a služeb (Facebook, Google, Twitter atd.) nabízí uživatelům 2FA k zabezpečení jejich účtů a je dobré povolit 2FA také na vašem SSH serveru.

Tento tutoriál vám ukáže, jak nastavit

  • Ověření hesla pomocí 2FA
  • Ověření veřejným klíčem pomocí 2FA

Poznámka :Serverový software s otevřeným zdrojovým kódem, který použijeme v tomto článku, se nazývá libpam-google-authenticator , který se instaluje z výchozího úložiště Ubuntu. Společnost Google se do procesu ověřování nezapojuje v žádné podobě nebo formě. Serverový software a mobilní aplikace nepotřebují přístup k síti.

Krok 1:Instalace a konfigurace aplikace Google Authenticator na serveru Ubuntu

Přihlaste se na svůj server Ubuntu a spusťte následující příkaz k instalaci aplikace Google Authenticator z výchozího úložiště balíčků Ubuntu.

sudo apt install -y libpam-google-authenticator

Poté spusťte google-authenticator příkaz k vytvoření nového tajného klíče ve vašem domovském adresáři.

google-authenticator

Na otázku „Chcete, aby byly ověřovací tokeny založené na čase?“ Odpovězte y .

Poté se vám zobrazí QR kód, který můžete naskenovat pomocí aplikace TOTP ve vašem telefonu. Doporučuji dvě aplikace:

  • Google Authenticator je nejznámější mobilní aplikace TOTP. Můžete si ji nainstalovat přes Google Play nebo Apple App Store do svého mobilního telefonu.
  • Google Authenticator mobilní aplikace není open source. Pokud nedůvěřujete Googlu, můžete použít FreeOTP, mobilní aplikaci TOTP s otevřeným zdrojovým kódem vyvinutou společností Red Hat.

Naskenujte QR kód pomocí Google Authenticator nebo FreeOTP na svém mobilním telefonu. Pamatujte, že pro naskenování celého QR kódu musíte zvětšit okno terminálu.

QR kód představuje tajný klíč, který zná pouze váš server SSH a vaše mobilní aplikace TOTP. Po naskenování QR kódu uvidíte na svém telefonu šestimístné jednorázové heslo. Ve výchozím nastavení se mění každých 30 sekund. Toto jednorázové heslo budete muset zadat později, abyste se mohli přihlásit k serveru Ubuntu přes SSH.

V okně terminálu můžete vidět tajný klíč, ověřovací kód a nouzový stírací kód. Doporučujeme, abyste si tyto informace uložili na bezpečné místo pro pozdější použití.

Poté můžete zadat y odpovědět na všechny zbývající otázky. Tím se aktualizuje konfigurační soubor aplikace Google Authenticator, zakáže se více použití stejného ověřovacího tokenu, prodlouží se časové okno a povolí se omezení rychlosti pro ochranu před pokusy o přihlášení hrubou silou.

Krok 2:Konfigurace démona SSH pro použití aplikace Google Authenticator

  • Ověření hesla pomocí 2FA
  • Ověření veřejným klíčem pomocí 2FA

Ověření hesla pomocí 2FA

Pokud klíč SSH nepoužíváte, postupujte podle pokynů níže.

Otevřete konfigurační soubor serveru SSH.

sudo nano /etc/ssh/sshd_config

Najděte v souboru následující dva parametry a ujistěte se, že jsou oba nastaveny na ano .

UsePAM yes

ChallengeResponseAuthentication yes

PAM je zkratka pro zásuvný autentizační modul. Poskytuje snadný způsob, jak zapojit různé metody ověřování do vašeho systému Linux. Chcete-li aktivovat Google Authenticator s SSH, musí být povoleno ověřování PAM a Challenge-Response.

Pokud chcete uživateli root povolit používat 2FA, vyhledejte PermitRootLogin parametr a nastavte jeho hodnotu na yes . Nemůže to být PermitRootLogin no nebo PermitRootLogin prohibit-password .

PermitRootLogin yes

Uložte a zavřete soubor. Dále upravte soubor pravidel PAM pro démona SSH.

sudo nano /etc/pam.d/sshd

Na začátku tohoto souboru můžete vidět následující řádek, který umožňuje ověření hesla při ChallengeResponseAuthentication je nastaveno na yes .

@include common-auth

Chcete-li povolit 2FA v SSH, přidejte následující dva řádky.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Uložte a zavřete soubor. Poté restartujte démona SSH, aby se změna projevila.

sudo systemctl restart ssh

Od této chvíle bude SSH démon vyžadovat zadání uživatelského hesla a ověřovacího kódu (jednorázové heslo vygenerované aplikací Google Authenticator). Následující snímek obrazovky ukazuje relaci přihlášení SSH z boxu CentOS na server Ubuntu 20.04.

Ověření pomocí veřejného klíče pomocí 2FA

Pokud pro přihlášení k serveru SSH používáte klíč SSH, postupujte podle pokynů níže.

Otevřete konfigurační soubor serveru SSH.

sudo nano /etc/ssh/sshd_config

Najděte v souboru následující dva parametry a ujistěte se, že jsou oba nastaveny na ano .

UsePAM yes

ChallengeResponseAuthentication yes

PAM je zkratka pro zásuvný autentizační modul. Poskytuje snadný způsob, jak zapojit různé metody ověřování do vašeho systému Linux. Chcete-li aktivovat Google Authenticator s SSH, musí být povoleno ověřování PAM a Challenge-Response.

Pokud chcete uživateli root povolit používat 2FA, vyhledejte PermitRootLogin parametr a nastavte jeho hodnotu na yes . Nemůže to být PermitRootLogin no nebo PermitRootLogin prohibit-password .

PermitRootLogin yes

Dále přidejte následující řádek na konec tohoto souboru. To říká démonu SSH, že uživatel musí předat jak ověřování pomocí veřejného klíče, tak ověřování typu výzva-odpověď.

AuthenticationMethods publickey,keyboard-interactive

Uložte a zavřete soubor. Dále upravte soubor pravidel PAM pro démona SSH.

sudo nano /etc/pam.d/sshd

Na začátku tohoto souboru můžete vidět následující řádek, který umožňuje ověření hesla při ChallengeResponseAuthentication je nastaveno na yes . Tento řádek musíme zakomentovat, protože místo hesla použijeme klíč SSH.

@include common-auth

Chcete-li povolit 2FA v SSH, přidejte následující dva řádky.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Uložte a zavřete soubor. Poté restartujte démona SSH, aby se změna projevila.

sudo systemctl restart ssh

Od této chvíle musíte k přihlášení používat klíč SSH a ověřovací kód Google Authenticator.

Poznámky

  • Každý uživatel na vašem serveru Ubuntu musí spustit google-authenticator příkaz a naskenujte QR kód, abyste mohli použít dvoufaktorové ověření. Pokud uživatel neprovedl nastavení a pokusí se přihlásit, zobrazí se chybová zpráva „Oprávnění odepřeno (interaktivní klávesnice) “ se zobrazí.
  • Nouzový stírací kód je váš záložní kód. Pokud ztratíte telefon, můžete místo jednorázového hesla zadat jeden z pěti nouzových stíracích kódů a dokončit dvoufázové ověření. Tyto kódy jsou pouze pro jednorázové použití.
  • Pokud chcete změnit tajný klíč, jednoduše se přihlaste na svůj server a spusťte google-authenticator dalším příkazem aktualizujte ~/.google_authenticator soubor.
  • Vzhledem k tomu, že jednorázové heslo se vypočítává pomocí sdíleného tajného klíče a aktuálního času, je vhodné povolit synchronizaci času NTP na vašem serveru Ubuntu, abyste udrželi přesný čas, ačkoli dříve jsme povolovali časový posun o 4 minuty. mezi serverem Ubuntu a mobilní aplikací. Váš server Ubuntu a mobilní aplikace TOTP mohou používat různá časová pásma.

Jak deaktivovat dvoufaktorové ověřování SSH

Upravte soubor pravidel PAM pro démona SSH.

sudo nano /etc/pam.d/sshd

Zakomentujte následující řádek.

auth   required   pam_google_authenticator.so

Uložte a zavřete soubor. Pokud jste přidali následující řádek do /etc/ssh/sshd_config soubor,

AuthenticationMethods publickey,keyboard-interactive

Odstraňte keyboard-interactive metoda ověřování.

AuthenticationMethods publickey

Uložte a zavřete soubor. Poté restartujte démona SSH.

sudo systemctl restart ssh

Ubuntu
  1. Jak nainstalovat a nastavit sftp server v Ubuntu 20.04

  2. Zabezpečte SSH pomocí dvoufaktorové autentizace na Ubuntu 16.04

  3. Nastavte vícefaktorové ověřování pro SSH na Ubuntu 20.04

  1. Jak vygenerovat klíče SSH na Ubuntu 18.04

  2. Server Ubuntu 20.04 SSH

  3. Nastavte dvoufaktorové ověřování pomocí Google Authenticator

  1. Nainstalujte SSH server Ubuntu 22.04

  2. Jak nastavit klíče SSH na Ubuntu 18.04

  3. Jak nastavit server OpenVPN na Ubuntu 18.04