Dvoufaktorová autentizace pro SSH

„Bezpečný shell“ SSH je síťový protokol pro zabezpečené spojení mezi hostiteli, standardně na portu 22 (který je lepší změnit). SSH klienti a SSH servery jsou k dispozici pro většinu operačních systémů. Uvnitř SSH může fungovat prakticky jakýkoliv jiný síťový protokol, což znamená, že je možné pracovat vzdáleně na jiném počítači, přenášet zvukový nebo video tok prostřednictvím šifrovaného kanálu atd. Kromě toho, přes SOCKS proxy na vzdáleném hostu můžete se připojit k dalším hostitelům již jménem tohoto vzdáleného hosta.

Autentizace probíhá prostřednictvím hesla, ale vývojáři a systémoví administrátoři tradičně používají SSH klíče. Problém je v tom, že tajný klíč může být ukraden. Přidání heslové fráze teoreticky chrání proti krádeži tajného klíče, ale v praxi při přeposílání a cachování klíčů se stejně mohou používat bez potvrzení. Dvoufaktorová autentizace tento problém řeší.

Jak implementovat dvoufaktorovou autentizaci

Vývojáři z firmy Honeycomb nedávno zveřejnili podrobný návod, jak realizovat odpovídající infrastrukturu na klientovi a serveru.

Návod předpokládá, že máte základní host, který je přístupný na internetu (bastion). Chcete se k tomuto hostu připojit z notebooků nebo počítačů přes internet a získat přístup ke všem ostatním zařízením, která se nacházejí za ním. 2FA zajišťuje, že útočník nebude moci udělat totéž, i když získá přístup k vašemu notebooku, například instalací malware.

První možnost — OTP

OTP — jednorázové digitální kódy, které budou v tomto případě použity pro SSH autentizaci spolu s klíčem. Vývojáři uvádějí, že to není ideální volba, protože útočník může postavit falešný bastion, zachytit váš OTP a použít ho. Ale to je lepší než nic.

V tomto případě se na serverové straně do konfigurace Chef zapisují následující řádky:

  • metadata.rb
  • attributes/default.rb (při attributes.rb)
  • files/sshd
  • recipes/default.rb (kopie z recipe.rb)
  • templates/default/users.oath.erb

Na klientské straně se nainstaluje jakákoliv OTP aplikace: Google Authenticator, Authy, Duo, Lastpass, instalace brew install oath-toolkit nebo apt install oathtool openssl, poté se vygeneruje náhodný řetězec base16 (klíč). Ten se převede do formátu Base32, který využívají mobilní autentifikátory, a importuje se přímo do aplikace.

Nakonec se můžete připojit k bastionu a ověřit, že nyní vyžaduje nejen heslo, ale také OTP kód pro autentifikaci:

➜ ssh -A bastion
Zadejte heslo pro klíč '[snip]': 
Jednorázové heslo (OATH) pro '[user]': 
Vítejte v Ubuntu 18.04.1 LTS...

Druhá možnost — hardwarová autentifikace

V tomto případě není nutné, aby uživatel pokaždé zadával OTP kód, protože druhým faktorem se stává hardwarové zařízení nebo biometrie.

Konfigurace Chef je zde o něco složitější a konfigurace klientů závisí na operačním systému. Ale po provedení všech akcí mohou klienti na MacOS potvrzovat autentifikaci v SSH pomocí hesla a aplikace prstem na senzoru (druhý faktor).

Majitelé iOS a Android potvrzují přihlášení stisknutím jednoho tlačítka na smartphonu. To je speciální technologie od Krypt.co, která je dokonce bezpečnější než OTP.

Na Linuxu/ChromeOS existuje možnost práce s USB tokeny YubiKey. Samozřejmě, že útočník by mohl ukrást váš token, ale i tak nezná heslo.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster