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:

  1. URL adresu autentizačního serveru, proti kterému budeme hesla ověřovat.
  2. Naše client ID na daném autentizačním serveru.
  3. 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:

  1. 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:

  1. auth       requisite    pam_deny.so
  2.  
  3. auth       include     system-remote-login
  4. account    include      system-remote-login
  5. password   include      system-remote-login
  6. session    include      system-remote-login
Do souboru doplníme tuhle řádku:
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

prodává oficiální zastoupení YUBICO v ČR na www.yubikeys.cz