Browsed by
Tag: totp

Keepass a 2FA bezpečnost – část třetí

Keepass a 2FA bezpečnost – část třetí

Dnešní článek bude o dvoufaktorovém zabezpeční pomocí TOTP kódů. Článek navazuje na ten minulý, kde jsem ukázal, jak si pomocí Yubikey, Keepassu a Dropboxu udělat bezpečné a zálohované úložiště.

Nejprve trochu o tom, co je TOTP.  TOTP je zkratka “Time-based One-time Password” a jsou to takové ty klasické 2FA kódy, které Vám generuje mobil nebo nějaké zařízení a vy je přepisujete do aplikací a webových stránek. Jak už jsem totiž zmiňoval dříve, ačkoli jsou tu mnohem lepší způsoby zabezpečení (například challenge-response z minulého článku), když už nějaká služba podporuje 2FA, tak většinou využívá právě tyto časové kódy.

Úvod do těchto 2FA kódů a toho, jak fungují, jsem se věnoval v jednom z dřívějších článků, kde jsem také doporučoval aplikaci Authy. Ta sama o sobě nění špatná, ale znamená to věřit externí službě. A i když neříkám, že je Authy špatné, je vždy lepší mít 100% kontrolu nad tím, jak a kde jsou moje data skladována. A o tom bude dneční článek. Jak si udělat náhradu Authy, jak tyto kódy synchronizovat, jak je uchovávat a jak zálohovat.

Celé řešení staví na aplikaci Keepass představenou minule. Za pomocí dvou dalších pluginů rozšíříme Keepass tak, že nejen, že si do něj uložíme zálohovací kódy k 2FA generátorům, ale také Keepass naučíme tyto kódy generovat, ale především, naučíme Keepass generovat QR kódy, které pak můžete vyfotit například mobilem, abyste si tento generátor přenesli i tam. A o tomto si dovolím tvrdit, že nikdo jiný zatím nemá a nenapadlo ho to :).

Standardní postup s 2FA kódy je, že Vás web vyzve, abyste si do mobilu vyfotili QR kód, někam bokem zapsali záložní kód a pak do webu vyplnili pro kontrolu vygenerovaný 2FA kód z mobilní aplikace.

Celý tenhle postup má hned několik nedostatků. Pokud budete chtít kódy synchronizovat mezi více zařízeními, nebo si pořídíte nové zařízení, znamená to ručně bezpečnostní kód přepsat. U jednoho kódu o nic nejde, ale pokud jich máte 20+, je to opruz. Další problém je s bezpečným uložením těchto záložních kódů. A třetí problém je, že pokud používáte 2FA na desktopu, tak se buď upíšete, protože neustále přepisujete kódy z mobilu do počítače, nebo budete mít Authy na počítači, kterému ale co se týká zabezpečení a bezpečnosti uložených dat moc nevěřím.

A nyní, jak to vyřešit lépe.

Jak nascanovat QR kód na počítači

Jako první budeme potřebovat ještě jednu aplikaci. A tou je ShareX. Krom toho, že je ShareX snad nejlepší aplikace na screenshoty na Windows, umí ještě jednu supr věc. Umí vyfotit QR kód, který je kdekoli na PC a přeložit ho do textové podoby. A tady začíná to kouzlo :).

Klikněte pravým tlačítkem na ikonce ShareX, vyberte “Tools” a “QR Code”.

Ukáže se Vám okno, které umí překládat QR kód na text a dokonce i opačně. Vyberte záložku “Decode” a stiskněte tlačítko “Decode from screen”. Ukáže se vám výběrový obdélník, pomocí kterého označíte QR kód na obrazovce.

Takto vyfocený QR kód se Vám přeloží na uri adresu. Pokud například vyfotíte kód, který je na obrázku výše, získáte kód otpauth://totp/me2%40example.com?secret=RLVSCIGF5GOFGW6OEX6F34N432IJKGW3&issuer=DevMovieManager.

QR kódy a KeePass

Jako další si do KeePassu nainstalujte KeePassQRCodeView (link na přímé stažení zde). Po stažení nahrajte soubor KeePassQRCodeView.plgx  do adresáře KeePass/Plugins/KeePassQRCodeView.plgx

Restartujte KeePass a vytvořte novou položku, do které si chcete službu uložit. Po vyplnění základních údajů se přepněte na záložku Advanced a stiskněte Add.

Do “Name” vyplňte třeba “2FA QR” a do Value vložte získaný link (otpauth://……). Zaškrtněte ještě “Enable in-memory protection” pro ještě větší bezpečnost a stiskněte OK.

Celou položku nyní uložte dalším stisknutím OK. Tím máte v KeePassu uložený secret seed (česky řečeno tajný řetězec), ze kterého se pak odvozují časové kódy.

Nyní na nové položce stiskněte pravé tlačítko a v kontextovém menu zvolte QR Code a v něm 2FA QR.

A voila…. Máte QR kód, který můžete kdykoli znovu vyfotit a máte ho bezpečně uložený v KeePassu. Takže je zálohovaný v cloudu, zároveň bezpečně šifrovaný. Dostanete se k němu jen vy, případně kdokoli další, komu dáte do KeePassu skrz Yubikey a heslo přístup.

Generování časových kódů z Keepasu

Jak by řekl Horst Fuchs “To ale to stále není vše!”.

Nyní Keepass umí generovat QR kódy, ale my bychom chtěli, aby uměl také generovat časové kódy, abychom je mohli snadno vkládat do aplikací a webových stránek bez nutnosti je přepisovat z mobilu.

Pro tyto účely nainstalujeme další plugin s názvem Tray TOTP Plugin for KeePass2 ke stažení zde. Po stažení opět nahrát do KeePass/Plugins/TrayTotp.plgx. Po restartu KeePassu se v kontextovém menu jakéhokoli záznamu objeví nová položka  “Copy TOTP” a “Selected Entries->Setup TOTP”.

Jelikož se jedná o jiný plugin, je pro něj potřeba znovu vyplnit TOTP heslo generátoru, které jsme vyfotili z QR kódu. To uděláme tak, že na zvolené položce v kontextovém menu vybereme Selected Entries->Setup TOTP.

Nyní je potřeba projít a vyplnit parametry generátoru. Na první obrazovce dáme “Next”, na další obrazovce ponechte 30 second a zase “Next”. Na další pak vyplňte “6 lenght”, jelikož v 99% budete potřebovat šestimístné kódy.

Na další obrazovce je potřeba zadat tajný kod, který jsme předtím nascanovali pomocí aplikace ShareX z QR kódu. V našem případě to bude “RLVSCIGF5GOFGW6OEX6F34N432IJKGW3″  a opět potvrďte pomocí “Next”. Na další obrazovce nic nevyplňujte (jelikož to v pluginu asi teď nefunguje) a dejte opět “Next”. Na poslední obrazovce pak dejte “Proceed”. Tím máte generátor vyplňený.

Po tomto vyplnění lze nyní TOTP kód získat dvěma možnostmi. Tou první je v okně KeePassu zvolit položku, stisknout pravé tlačítko a dát “Copy TOTP” (případně stisknout CTRL+T v tomto okně). To není špatně, ale lze to ještě snadněji.

KeePass má totiž ještě ikonku v Tray oblasti (to je to ve Windowsech vpravo dole vedle hodin, kde jsou různé malé ikonky). Na té, když kliknete pravým tlačítkem, se nyní ukáže seznam všech nakonfigurovaných TOPT kódů. Stačí tak jen vybrat ze seznamu a do clipboardu (schránky) se Vám ihned kód nakopíruje.

Samozřejmě, pokud máte úložiště uzamčeno, ke kódům se ani přes Tray ikonu dostat nedá. Je potřeba nejprve odemknout úložiště heslem a Yubikey a pak až se Vám kódy vygenerují.

QR Kódy na mobilech

A o mobilech bude poslední část článku. Občas je totiž dobré mít 2FA kódy u sebe a bohužel, k takto uloženým a zabezpečeným kódům v KeePassu se na mobilu nedostanete. Je proto potřeba udělat ještě jeden krok.

Na mobilu lze mít Google Authenticator, ale ten není nijak zabezpečen. A jelikož 2FA má fungovat jako zvýšená bezpečnost, tuto variantu bych určitěn nedoporučoval. Další je Authy, ale jak jsem už psal, musíte věřit třetí straně a hlavně, toto celé děláme proto, abychom Authy nemuseli mít. A pak je tu ještě jedna aplikace – Yubico Authenticator.

Jde o 2FA TOTP generátor kódů pro mobilní zařízení (tuším, že mají i desktopové verze, ale ty už nepotřebujem), kdy kódy jsou zabezpečeny pomoci HW klíče od Yubico s NFC přístupem. Celé to funguje tak, že jsou 2FA kódy uložené někde u nich v cloudu, ale jsou zašifrované pouze Vaším klíčem. Díky tomu, když aplikaci na mobilu spustíte, tak neuvidíte žádná data. A podle toho, jaký klíč s NFC přiložíte, tak takové klíče se Vám na mobilu ukážou. Díky tomu, když HW klíč přiložíte na jiném mobilu, stále uvidíte své kliče.

Bohužel, na druhou stranu, pokud máte klíče dva, je nutné pro oba zadat TOTP kódy znovu. To nám ale nevadí, protože KeePass umí tyto QR kódy vygenerovat, takže přidat nový klíč je hračka.

Přidat klíče do Yubico Authenticatoru je opravdu snadné. Nainstalujte si jejich aplikaci z Android Store, spustťe aplikaci a dejte “Přidat QR kód”. Pro přidání je potřeba kód potvrdit přiložením NFC klíče k mobilu (v případě Samsungu přiložit doprostřed zad mobilu). Tím se klíč zašifruje a uloží.

Zkuste si aplikaci ukončit a znovu spusťit. Po spuštění je aplikace opět prázdná. Přiložte ale klíč k zádům mobilu a najednou uvidíte všechny uložené kódy. Toto je super vlastnost, na kterou jsem přišel až později při využívání Yubikey. Bohužel se o tom člověk na webu nedočte.

V případě ztráty mobilu stačí aplikaci znovu nainstalovat a přiložit klíč. Vše máte opět k dispozici. A v případě ztráty nebo poruchy Yubikey, stačí QR kódy znovu vyfotit z KeePassu.

Závěrem

Jak vidíte, vysoké zabezpečení v dnešní době bohužel obnáší i trochu té práce navíc. Spousta z kroků by se dala zjednodušit, sjednotit funkce pluginu do jednoho, atd. Na druhou stranu, buďme rádi, že to lze aspoň takto. Dalo mi to opravdu spoustu hledání a vymýšlení, než jsem našel způsob, jak udělat vše takto uceleně a s co nejméně externími aplikacemi.

I když je uložení a nastavení trochu složité a šlo by udělat lépe, díky tomuto postupu budete mít absolutní kontrolu nad Vašimi 2FA kódy, budete mít komfort focení QR kódů z mobilu, budete mít vše zaheslované a zálohované.

A to je pro dnešek vše. Tímto třetím článkem uzavírám tuto mini sérii zabezpečení. Předal jsem Vám mé kompletní know-how v zabezpečení a ukázal, jak máme zabezpečení u nás řešeno my. A jelikož mu opravdu věřím, nebojím se ho proto takto sdílet. Pokud by někdo viděl v tomto zabezpečení nějakou slabinu, určitě napište dolů pod článek. Rád se přiučím :).

Jak jsem už několikrát zmiňoval, v případě celého řešení nešlo jen o 100% bezpečnost, ale taky o zálohování a recovery proces. Díky všem těmto krokům budete mít Vaše data a klíče v bezpečí jak před útoky, tak proti případným živelným katastrofám, či při jiných nepředvítelných událostech. Pokud někam do bezpečné schránky uložíte přístup do Dropboxu spolu s jedním záložním Yubikey (nebo jiným U2F klíčem), bude se moci kdokoli oprávněný ke všem Vašim datům v případě potřeby dostat. (Z dropboxu stáhne KeePass, tam se dostane pomoci Yubikey, kde má pak všechny hesla, 2FA kódy a případně i třeba poznámky nebo Vaši závěť 🙂 ).

Článek pak zakončím stejně jako minule prosbou o podporu našeho blogu. Pokud Vám návod pomůže, zvažte zaslání nějaké té koruny na podporu našich článků. I tentokrát si jeho výroba vzala cca 4 hodiny a to nepočítám množství času, než jsem celý systém vymyslel a dal dohromady. Proto pokud Vás článek inspiroval a pomohl Vám s Vaším zabezpečením, budu rád, když nám nějakou korunu přispějete.

Přispět lze přes BTC Lighting network tlačítkem níže, nebo zasláním na BTC adresu bc1ql36zrs6gczm7zlfwdtqdc20jdx900l6wkxqdfv, případně převodem na účet 1012036013/3030. Děkujeme.


Všechny články v sérii: