Linux 2FA: Jak zabezpečit SSH přihlášení pomocí Google Authenticator a Yubikey
Služby připojené k internetu jsou obzvláště zranitelné vůči útokům na přihlášení, protože kdokoli na světě se může přihlásit k vašemu účtu z pohodlí své vlastní pohovky. V průběhu let bylo vyvinuto několik autentizačních doplňků, které bojují proti této inherentní slabosti standardního modelu autentizace uživatele/hesla. Nejběžnější je Dvoufaktorová autentizace (2FA), protože 2FA vyžaduje, abyste kromě znalosti uživatelského jména a hesla prokázali, že něco vlastníte. Další dobře známá metoda vyžaduje, aby uživatelé vlastnili hardwarové zařízení, které poskytuje rotující hesla.
V tomto článku vám ukážu, jak uzamknout server Linux SSH pomocí obou metod – k zadání hesla je vyžadován Yubikey a k dokončení přihlášení je vyžadován token Google Authenticator.
Yubikey je hardwarové zařízení, které poskytuje různé kryptografické ověřovací mechanismy, jako jsou One Time Passwords (OTP) a Šifrování veřejného klíče (PKI). Google Authenticator je softwarová aplikace, která poskytuje jednorázová hesla pro použití jako druhý faktor ověřování.
Používání aplikace Google Authenticator k zabezpečení přihlášení k systému Linux SSH
První věc je první – stáhněte si mobilní aplikaci Google Authenticator pro svůj telefon nebo tablet. Jakmile to budete mít, můžeme se pustit do práce. Je k dispozici od obou Obchod Play a Obchod s aplikacemi .
Ověřování přihlášení k Linuxu je obvykle zajišťováno moduly Pluggable Authentication Modules (PAM) knihovny . Jak název napovídá, PAM podporuje přidávání libovolných ověřovacích modulů. V tomto případě se chystáme „připojit“ vrstvu Google Authenticator k normálnímu přihlášení SSH, abychom požádali o kód poté, co uživatel zadá své heslo.
K tomu musíme začít instalací potřebných knihoven PAM:
|_+_|A poprvé spusťte autentizátor:
|_+_|
Zkopírujte si tyto kódy někde v bezpečí. Pokud někdy ztratíte telefon nebo máte nějaký jiný problém, ze kterého nemůžete získat kód, budete k přihlášení potřebovat jeden z těchto nouzových stíracích kódů.
Nyní musíme nastavit toto přihlášení do vaší aplikace Google Authenticator. Chcete-li to provést, stiskněte tlačítko+přihlaste se do aplikace Google Authenticator a poté se rozhodněte, zda chcete naskenovat QR kód nebo zadat tajný klíč. Každá metoda bude fungovat. Jakmile jej přidáte, ve vaší aplikaci Google Authenticator se objeví nový záznam, který vypadá asi takto:
Nyní odpovězte |_+_| kChcete, abych aktualizoval váš soubor ~/.google_authenticator (y/n)otázka, která vás vyzve k dalším otázkám.
|_+_|Můžete si vybrat odpovědi, které vám dávají největší smysl. Rozhodl jsem se zakázat vícenásobné použití tokenů a povolit omezení rychlosti. Rozhodl jsem se nepovolit čtyřminutový časový posun, protože můj počítač i telefon pravidelně aktualizují svůj čas, takže je těžké si představit, jak by se hodiny mohly tak strašně nesynchronizovat. Pokud se zamýšlíte přihlásit ke vzdálenému systému s velkou latencí, možná budete chtít povolit delší časový posun.
Ze zvědavosti, když se podíváme na naši novinku.google-authenticatorsoubor, můžeme vidět tyto volby tam uložené spolu s našimi nouzovými tokeny.
|_+_|Je dobré zajistit, aby tento soubor mohl číst pouze váš uživatel, což je výchozí nastavení:
|_+_|Nyní máme Google Authenticator nastaven, ale náš systém ještě netuší, že jej má používat pro přihlášení. K tomu potřebujeme aktualizovat konfiguraci Pluggable Authentication Module (PAM).
Upravte konfigurační soubor PAM ssh jako root:
|_+_|
Přidejte tento řádek někam, já ho dal dole:
|_+_|Je potřeba ještě jedna změna; upravte své nastavení výzvy a odpovědi v |_+_| soubor přepnutím |_+_| do |_+_|:
|_+_|Nyní restartujte svého démona SSH a vyzkoušejte to:
|_+_|
Neodhlašujte se. Nechte se přihlášeni pro případ, že byste se z nějakého důvodu nemohli znovu přihlásit. Spusťte jiný terminál a SSH do svého nově nakonfigurovaného počítače.
Po zadání hesla se zobrazí výzva k zadání aktuálního kódu aplikace Google Authenticator. Správné zadání obou vám umožní přihlásit se:
|_+_|Použití Yubikey k zabezpečení vašich Linuxových SSH přihlášení
Nyní máme systém, který k přihlášení vyžaduje uživatelské jméno, heslo a token Google Authenticator. To je docela bezpečné, ale umíme to ještě lépe. Můžeme nakonfigurovat systém tak, aby přijímal pouze náhodně vygenerované heslo z Yubikey.
Ze tří údajů potřebných k přihlášení (uživatelské jméno, heslo, autentizační kód) by nikdo nemohl znát poslední dva předem nebo je v případě zjištění znovu použít.
Pěkně popořádku - získejte Yubikey buď přímo od Yubico nebo z místa, jako je Amazon. K tomu budu používat Yubikey Nano.
Dále nainstalujme potřebné balíčky. Přidejte Yubico PPA (Personal Product Archive) a nainstalujte |_+_| PAM knihovna.
|_+_|Samotný soubor knihovny se jmenuje |_+_| a měl by být nainstalován do |_+_|
|_+_|Budeme potřebovat sadu pověření Yubi API. Navštivte Stránka Yubico API zde.
A postupujte podle pokynů. Jakmile zadáte svůj e-mail a OTP Yubikey, stránka vám poskytne ID klienta a tajný klíč, který můžete použít:
Poslední informace, kterou budete potřebovat, je váš token Yubikey. To je jen prvních 12 číslic jakéhokoli jednorázového hesla (OTP), které váš Yubikey vyplivne. Chcete-li to provést, zaměřte kurzor do okna terminálu nebo textového editoru – nějaké místo, které bude přebírat vstup. Poté vložte Yubikey do USB disku. Pokud má tlačítko, stiskněte ho. Pokud tomu tak není, jako například model Nano, pak jen lehce zatlačte samotný Yubikey do USB portu. Měl by vypsat jednorázové heslo ve formě dlouhého řetězce znaků. Prvních dvanáct číslic je vše, co pro tuto část potřebujeme. V mém případě je to toto:
|_+_|
Dále nakonfigurujte |_+_| soubor vyžadovat přihlášení yubikey přidáním tohoto řádku na začátek souboru pomocí |_+_| a |_+_| které jste obdrželi z webu Yubi API:
|_+_|
Musíme také říci démonovi sshd, že by již neměl přijímat hesla. Pokud tak neučiníme, bude stále přijímat kromě OTP Yubikey i normální hesla, což ve skutečnosti není to, co chceme. Chcete-li to provést, okomentujte tento řádek vložením |_+_| před ním:
|_+_|
Nyní potřebujeme přiřadit vašeho uživatele k vašemu Yubikey. Chcete-li to provést, upravte |_+_| soubor a přidejte své uživatelské jméno a svůj 12znakový token Yubikey oddělené dvojtečkou:
|_+_|
Pokud máte více Yubikey, můžete přidat další pouhým připojením dalších Yubikey tokenů na stejný řádek, oddělených dvojtečkou. Kdybych měl tři Yubikey, moje linie by vypadala nějak takto:
|_+_|
Nakonec restartujte relaci ssh a vyzkoušejte to. Pamatujte, že byste měli zůstat přihlášeni ke své pracovní relaci ssh pro případ, že to nebude fungovat.
|_+_|
Když jsem vyzván k zadání hesla, stisknu místo toho Yubikey a přihlásí mě to. Protože jsem zahrnul |_+_| možnost v |_+_| soubor, dostávám hodně výstupu, ale u tohoto úryvku jsem to omezil, protože je opravdu užitečný pouze v případě, že se něco pokazilo:
|_+_|To je vše. Obě tyto technologie jsou velmi technické povahy, ale těžká břemena provádějí knihovny PAM dodávané jednotlivými prodejci. To znamená, že jsme schopni zajistit ssh přístup k našim linuxovým systémům s relativně malým počtem změn v konfiguraci.
Backgrounder na SMS a 2FA
I když není nutné dokončit tento tutoriál, může být užitečné několik informací o tom, proč je SMS 2FA slabá. Existuje důvod, proč jsou věci jako Yubikeys a ověřovací aplikace vhodnější než SMS 2FA.
Dvoufaktorová autentizace SMS je slabá
Nejrozšířenější definicí 2FA je „něco, co znáte, a něco, co máte“. „Něco, co znáte“, je heslo. „Něco, co máte“ obvykle znamená šestimístný kód, který poskytnete z nějakého zařízení, ke kterému máte přístup pouze vy. Poskytnutí správného kódu je dostatečným důkazem, že něco „máte“.
Nejběžnější formou 2FA na internetu je dnes použití textových zpráv SMS k odeslání kódů 2FA při přihlášení. Kvůli slabinám v protokolu SS7 a špatnému ověření zákazníků v týmech mobilní podpory ano poměrně snadné přesměrování textové zprávy na libovolný telefon, který chcete . V metodě SMS 2FA jsou běžně využívány dvě slabiny: Za prvé, telefonní číslo není trvale svázáno s telefonem, takže SMS zprávu s kódem může obdržet kdokoli. Za druhé, SMS ověřovací kód je vám zaslán prostřednictvím nedůvěryhodného a nešifrovaného média. Podle své definice to nesplňuje požadavek být „něčím, co máte“. Je to vlastně „něco, co jsem ti právě dal“, což není totéž.
Aplikace Authenticator a hardwarové tokeny jsou silnější
Lepším řešením je použití mobilní aplikace pro ověřování, jako je Google Authenticator nebo Authy. Ještě lepším řešením je spojit tento typ 2FA s rotujícím, nepředvídatelným heslem ze zařízení, jako je Yubikey. Aplikace ani hardwarové tokeny nepřenášejí žádná data přes internet nebo mobilní systém, což odstraňuje tento vektor zachycení. Nevýhodou je, že se hůře nastavují, což znamená, že se nejčastěji používá slabší metoda SMS.
Příbuzný:
Zdroje šifrování: Velký seznam nástrojů a průvodců
Co je útok hrubou silou?
Průvodce zabezpečením počítače a internetu bez žargonu
Dokonalý průvodce zabezpečením desktopového Linuxu