YubiKey a PAM
Další pokračování návodu s používáním YubiKey tokenů. Tentokrát se podíváme na PAM modul pam_yubico, který v rámci PAMu umožňuje ověřovat yubikey jednorázová hesla. Konkrétně to vyzkoušíme na SSH, nicméně tím, že je to PAM modul, nic nebrání tomu využít OTP autentizaci jinde - přímo do systému, na screensaver, atd.
Jako první ze všeho je potřeba do systému doinstalovat modul pam_yubico. Ten už se dnes dost často v běžných distribucích nachází v repozitáři, jeho instalace by tak měla být triviální (např. na Debianu apt-get install libpam-yubico, na Gentoo emerge pam_yubico).
Pro konfiguraci samotného PAM modulu budeme potřebovat ještě 3 věci:
- URL adresu autentizačního serveru, proti kterému budeme hesla ověřovat.
- Naše client ID na daném autentizačním serveru.
- Mapování YubiKey tokenů na jednotlivé uživatele.
Pro zjednodušení jako autentizační server použijeme YubiCloud - tedy server přímo Yubica. Po obdržení YubiKey je přednahrátý seed v YubiCloudu již uložen, pokud se seed na tokenu přehraje, lze ho do YubiCloudu opět dodat. Jako adresu tedy použijeme https://api.yubico.com/wsapi/2.0/verify?id=%d&otp=%s (%d a %s už jsou place holdery, PAM zde automaticky potom doplní client ID a jednorázové heslo, které ověřuje). Client ID do YubiCloudu získáme na adrese: https://upgrade.yubico.com/getapikey/.
Soubor s mapováním tokenů si musíme vytvořit sami. Soubor slouží čistě jenom k tomu, že říká který uživatel (identifikovaný uživatelským jménem) vlastní který token (nebo více tokenů) - identifikovaný ID tokenu (ten se u YubiKey OTP vyskytuje v každém OTP hesle). Vytvoříme tedy soubor /etc/yubikeys. Soubor má formát uživatel:id_tokenu:id_tokenu2:... (samozřejmě další ID nepíšeme, když máme jeden klíč). Tedy například nějak takto:
- spm:ccccccbubdgt
ID tokenu získáme jednoduše - ID je dlouhé 12 znaků a je v každém jednorázovém hesle na začátku. Otevřeme si tedy libovolný textový editor, vložíme YubiKey a necháme ho vypsat heslo. Vezmem prvních 12 znaků z hesla a použijeme je jako ID do mapovacího souboru. Nyní už můžeme přistoupit ke konfiguraci samotného PAMu.
Pokusíme se tedy použít YubiKey pro přihlašování přes SSH, otevřeme si tedy soubor /etc/pam.d/sshd - nicméně PAM se na Linuxu používá k autentizaci téměř ke všemu, klidně tedy můžeme zeditovat xlock pro odemykání screensaveru a podobně. Původní soubor (alespoň na Gentoo) vypadal takto:
- auth requisite pam_deny.so
- auth include system-remote-login
- account include system-remote-login
- password include system-remote-login
- session include system-remote-login
auth sufficient pam_yubico.so debug id=získané_client_id authfile=/etc/yubikeys url=https://api.yubico.com/wsapi/2.0/verify?id=%d&otp=%s
Tím by pro SSH měla fungovat vícefaktorová autentizace - pro přihlášení bude vyžadováno jako jednorázové heslo z YubiKey, tak heslo uživatele. Můžeme to tedy vyzkoušet - pokud to nastavujeme vzdáleně na serveru, doporučuji si otevřít nové SSH spojení a stávající nechat - čistě pro jistotu :-)
Pokud se budeme chtít přihlašovat pouze jednorázovým heslem bez zadávání hesla uživatele, zakomentujeme řádek *auth include system-remote-login*. Nicméně je potřeba si uvědomit, že v tu chvíli neznámé osobě pro přihlášení k našemu účtu stačí, když si fyzicky "vypůjčí" náš token.
Komentáře
yubikey v ČR
prodává oficiální zastoupení YUBICO v ČR na www.yubikeys.cz