GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit Multi-Factor Authentication pro SSH v Linuxu

V této příručce se naučíme, co je vícefaktorová autentizace a její význam, a konečně, jak nastavit vícefaktorové ověřování pro SSH v Linuxu pomocí aplikace Google Authenticator.

Úvod

Bezpečnost je vážná věc. Počet kompromisů den ode dne výrazně roste a odhaduje se, že do roku 2025 kyberzločin způsobí společnostem 10,5 bilionu USD.

Je důležité, aby byla ve všech vrstvách technologického zásobníku implementována silná vrstva zabezpečení. V tomto článku se podíváme na jednu takovou implementaci zabezpečení pro ssh pomocí vícefaktorové autentizace.

SSH, což je zkratka pro Secure Shell, je síťový protokol, který uživatelům umožňuje připojit se ke vzdáleným strojům (serverům) a přistupovat ke zdrojům.

Protokol ssh implementuje dva typy zabezpečení, jmenovitě Autentizace na základě hesla a Autentizace na základě klíče .

Ověřování založené na klíči (veřejné -> soukromé) je považováno za bezpečnější ve srovnání s ověřováním pomocí hesla a většina pokynů pro zpřísnění SSH doporučovala deaktivovat ověřování založené na hesle a povolit pouze ověřování založené na klíči.

Bez ohledu na to, jaký autentizační mechanismus si vyberete, můžete ssh zvýšit zabezpečení implementací nastavení vícefaktorové autentizace.

Co je vícefaktorová autentizace?

Vícefaktorové ověřování (krátce MFA ) je bezpečný proces ověřování, který vyžaduje více než jednu autentizační techniku ​​vybranou z nezávislých kategorií přihlašovacích údajů.

Vícefaktorové ověřování se také někdy nazývá "dvoufaktorové ověřování (2FA)" .

Existují dva faktory, které ovlivňují ověření toho, kdo říkáte, že jste. Prvním faktorem bude heslo, které se vytvoří při vytvoření vašeho uživatelského účtu.

Druhým faktorem bude jakákoli aplikace, která generuje OTP, nebo jakýkoli protokol, který vám posílá textové zprávy nebo volá na vaše zařízení.

Způsob autentizace se liší v závislosti na tom, jak je aplikace implementována. Některé běžné nástroje, které používáte pro MFA, jsou:

  • Aplikace nainstalovaná v mobilním zařízení, která generuje tokeny.
  • Externí zařízení, jako je Yubikey.
  • Otisk prstu.
  • Rozpoznání obličeje.
  • Heslo jednorázového hesla založeného na textové zprávě nebo zavolání.

K aktivaci vícefaktorového ověřování pro ssh budeme používat „Google Authenticator“ aplikace, která používá protokol OATH-TOTP. Existují další alternativní nástroje, jako je Twilio Authy nebo FreeOTP kterou si můžete nainstalovat a vyzkoušet.

Začneme instalací aplikace Google Authenticator na server i mobilní zařízení a pokusíme se povolit MFA a ověřit.

Nainstalujte aplikaci Google Authenticator

Nejprve nainstalujte aplikaci Google Authenticator do zařízení Android nebo IOS prostřednictvím obchodu Play /Itunes .

Nyní nainstalujte aplikaci Google Authenticator do systému Linux.

V závislosti na vaší distribuci spusťte následující instalační příkazy.

V Ubuntu a jeho odvozené distribuce spustí následující příkaz.

$ sudo apt install libpam-google-authenticator

V RHEL založené distribuce spustí následující příkaz.

$ sudo dnf install google-authenticator -y

Pro Arch založená distribuce spusťte následující příkaz.

$ sudo pacman -S libpam-google-authenticator

Vygenerovat počáteční token pro uživatele

Jako první krok v nastavení MFA musíte z terminálu spustit následující příkaz. To se postará o počáteční nastavení vygenerováním klíče TOTP. Tento klíč je pro uživatele, který spouští příkaz, a není použitelný pro všechny uživatele v systému.

$ google-authenticator

Existuje několik posloupností kroků, kdy budete vyzváni pomocí (y /n ).

KROK 1 - Vyzve vás k výběru autentizačních tokenů na základě času. Ověřovací tokeny založené na čase vygenerují nový kód každých 30 sekund. Stiskněte "y" pokračovat.

KROK 2 - Tajný token bude vygenerován spolu s QR kódem. Otevřete mobilní aplikaci Google Authenticator a naskenujte QR kód nebo ručně zadejte tajný klíč pro registraci zařízení. Jakmile bude hotovo, aplikace nyní začne generovat tokeny každých 30 sekund.

KROK 3 – V tomto kroku vás vyzve k aktualizaci .google_authenticator soubor ve vašem domovském adresáři. V tomto souboru jsou uloženy všechny tajné klíče, ověřovací kód, nouzové stírací kódy. Stiskněte "y" pokračovat.

KROK 4 - Výběr "y" v tomto kroku vyprší platnost tokenu okamžitě, jakmile jej použijete k ověření. V tomto případě, i když někteří hackeři získají váš token, jeho platnost vyprší.

KROK 5 - Tento krok určuje, kolik tokenů bude povoleno a časový rámec. Když zvolím "n" , umožní to 3 tokeny za 90 sekund okno. Pokud stisknu "y" , umožní 17 tokenů za 240 sekund časové okno.

KROK 6 - Tento krok vás požádá o povolení omezení rychlosti. Omezení rychlosti umožňuje útočníkovi zkusit pouze 3 pokusy o přihlášení každých 30 sekund . Pokud jsou tokeny špatné, musí počkat na N čas to zkusit znovu.

Dokončili jsme první krok. Otevřete soubor ~/.google_authenticator a můžete najít všechna nastavení a tajné kódy, které jsme provedli všemi těmito kroky.

$ cat ~/.google_authenticator

Můžete také předat argumenty příkazu google-authenticator, který vytvoří klíče a další nastavení, aniž byste museli projít touto posloupností kroků.

$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3

Co tyto argumenty udělají, naleznete v části nápovědy k aplikaci Google Authenticator.

$ google-authenticator –-help

Nakonfigurujte SSH pro vícefaktorovou autentizaci

Musíme provést nějaké změny v konfiguraci openSSH, abychom mohli začít používat MFA.

Poznámka:

  • Doporučeným postupem je vždy zálohovat konfigurační soubory před provedením jakýchkoli změn. Pokud je něco špatně, změny lze vrátit zpět.
  • Vzhledem k tomu, že provádíte změny v konfiguračních souborech SSH, ujistěte se, že máte relaci otevřenou samostatně, abyste nebyli náhodně uzamčeni.

Spusťte následující příkazy pro zálohování konfiguračních souborů SSH.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup

Nejprve povolte SSH používat MFA nastavením ChallengeResponseAuthentication možnost "ano" .

Dále upravte /etc/pam.d/sshd soubor:

$ sudo vi /etc/pam.d/sshd

A přidejte následující řádky na konec souboru.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Pokud chcete, aby MFA byla povinná pro všechny uživatele, odstraňte slovo "nullok" .

Restartujte službu ssh, aby se změny projevily.

$ sudo systemctl restart sshd

Test dvoufaktorové autentizace

Je čas otestovat, zda jsou změny, které jsme provedli, účinné.

Připojte se k serveru přes SSH a budete požádáni o heslo jako první faktor, po kterém bude následovat ověřovací kód jako ověření druhého faktoru, jak je znázorněno na obrázku níže.

$ ssh [email protected]/IPaddress

Jakmile zadáte heslo SSH a ověřovací kód, budete se moci přihlásit.

Pamatovali jste si, že jsme nepovolili MFA jako povinné pro všechny uživatele? Pojďme to otestovat a uvidíme, jestli se dokážu spojit s jiným uživatelem, kde nemám vygenerované a nastavené tokeny.

Mám testusera a mohu se úspěšně připojit bez výzvy k zadání ověřovacího kódu.

Vidět? Mohu se přihlásit i bez ověřovacího kódu.

Vícefaktorové ověřování pro ověřování na základě klíče

Pokud jste nastavili autentizaci na základě klíče, nebudete povýšeni kvůli heslu ani ověřovacím kódům. Proč?

Protože ssh ve výchozím nastavení nejprve používá autentizaci pomocí veřejného klíče, a pokud je klíč nalezen, ověřuje se pomocí něj. V případě, že klíč nebude nalezen, použije se ověření na základě hesla.

Můžete použít podrobné režim pro kontrolu.

$ ssh -v [email protected]/IPaddress ## With verbose

Přidejte následující řádek na konec /etc/ssh/sshd_config soubor:

AuthenticationMethods publickey,password publickey,keyboard-interactive

Dále otevřete /etc/pam.d/sshd a zakomentujte následující řádek.

Pokud nekomentujete "@include common-auth" , pak umožní ověření více než dvěma faktorům. Nejprve se ověří pomocí klíčů následovaných heslem a tokeny. Vše, co potřebuji, je klíč a token pro svou autentizaci, takže to deaktivuji.

Restartujte sshd servis a otestujte, zda změny fungují správně.

$ sudo systemctl restart sshd

Nyní, když se pokusím připojit, používá veřejný klíč jako první faktor a ověřovací kód jako druhý faktor k ověření.

Kroky obnovení

Mohou nastat situace, kdy můžete ztratit nebo vyměnit své mobilní zařízení. V takovém případě musíte znovu nainstalovat aplikaci google-authenticator a zaregistrovat tajný klíč, abyste mohli začít generovat tokeny.

Pokud jste vyloučeni ze systému, musíte se obrátit na správce systému, aby vám poskytl nové tajné klíče k registraci a používání. Existuje však alternativní přístup, kdy se můžete přihlásit a generovat klíče sami.

Pamatujete si kódy, které se generují během úvodního kroku? Můžete použít nouzový stírací kód jako token pro přihlášení. Každý stírací kód lze použít pouze jednou. Uložte si to na bezpečné místo takže jej lze použít, když je to nejvíce potřeba.

Kódy jsou uloženy v ~/.google_authenticator soubor.

$ cat ~/.google_authenticator

Nyní můžete znovu vygenerovat své vlastní klíče spuštěním následujícího příkazu.

$ google-authenticator

Závěr

V tomto článku jsem vám ukázal, jak nainstalovat google authenticator a povolit vícefaktorové ověřování pro SSH s různými konfiguracemi.

Jako správce můžete také psát bash skripty k automatizaci procesu generování tajných klíčů a jejich sdílení s uživatelem. Před nastavením MFA byste také měli zpevnit ssh, aby byl váš systém bezpečnější. Těm se plánujeme věnovat v samostatných článcích. Zůstaňte naladěni!

Související čtení:

  • Jak nakonfigurovat ověřování pomocí klíče SSH v systému Linux
  • Zjistit, zda uživatel používá ověřování SSH na základě hesla nebo klíče
  • Jak povolit nebo zakázat přístup SSH konkrétnímu uživateli nebo skupině v systému Linux
  • Zakažte ověřování hesla SSH pro konkrétního uživatele nebo skupinu

Linux
  1. Jak nastavit Rsync s SSH na UNIX / Linux (rsync bez hesla)

  2. Jak nastavit Reverse SSH Tunnel v Linuxu

  3. Jak nastavit Linux Etherchannel Bonding pro síťové rozhraní HA

  1. Jak nainstalovat server Kerberos 5 KDC v systému Linux pro ověřování

  2. Jak nastavit klíče SSH pro přihlášení k ssh „bez hesla“ v systému Linux

  3. Jak nastavit klíče SSH pro přihlášení pomocí „veřejného/soukromého klíče“ SSH v systému Linux

  1. Jak změnit port SSH v Linuxu

  2. Jak nakonfigurovat ověřování na základě klíče SSH v systému Linux

  3. Jak nastavit oprávnění Sudo pro uživatele v Linuxu