Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

Jednoduchá hesla nejsou bezpečná a složitá si nelze zapamatovat. Proto tak často končí na lepícím papírku pod klávesnicí nebo na monitoru. Aby bylo zajištěno, že hesla zůstanou v myslích „zapomnětlivých“ uživatelů a nedojde ke ztrátě spolehlivosti ochrany, existuje dvoufaktorová autentizace (2FA).

Díky kombinaci vlastnictví zařízení a znalosti jeho PIN může být samotný PIN jednodušší a snadněji zapamatovatelný. Nevýhody v délce nebo náhodnosti PIN jsou kompenzovány požadavkem fyzického držení a omezením hrubé síly PIN.

Ve státních úřadech se navíc stává, že chtějí, aby vše fungovalo podle GOST. Tato možnost 2FA pro přihlášení do Linuxu bude diskutována. Začnu z dálky.

moduly PAM

Pluggable Authentication Modules (PAM) jsou moduly se standardním API a implementacemi různých autentizačních mechanismů v aplikacích.
Všechny utility a aplikace, které mohou pracovat s PAM, je vyzvednou a mohou je použít pro autentizaci uživatele.
V praxi to funguje asi takto: příkaz login zavolá PAM, který provede všechny potřebné kontroly pomocí modulů uvedených v konfiguračním souboru a výsledek vrátí zpět příkazu login.

librtpam

Modul vyvinutý společností Aktiv přidává dvoufaktorovou autentizaci uživatelů pomocí čipových karet nebo USB tokenů pomocí asymetrických klíčů podle nejnovějších standardů tuzemské kryptografie.

Podívejme se na princip jeho fungování:

  • Token uchovává certifikát uživatele a jeho soukromý klíč;
  • Certifikát je uložen v domovském adresáři uživatele jako důvěryhodný.

Proces ověřování probíhá následovně:

  1. Rutoken hledá osobní certifikát uživatele.
  2. Je požadován PIN tokenu.
  3. Náhodná data se podepisují na soukromý klíč přímo v čipu Rutoken.
  4. Výsledný podpis je ověřen pomocí veřejného klíče z certifikátu uživatele.
  5. Modul vrátí výsledek ověření podpisu volající aplikaci.

Můžete se ověřit pomocí klíčů GOST R 34.10-2012 (délka 256 nebo 512 bitů) nebo zastaralého GOST R 34.10-2001.

O bezpečnost klíčů se nemusíte starat – jsou generovány přímo v Rutokenu a nikdy neopouštějí jeho paměť během kryptografických operací.

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

Rutoken EDS 2.0 je certifikován FSB a FSTEC podle NDV 4, lze jej proto použít v informačních systémech zpracovávajících důvěrné informace.

Praktické použití

Bude stačit téměř každý moderní Linux, například použijeme xUbuntu 18.10.

1) Nainstalujte potřebné balíčky

sudo apt-get install libccid pcscd opensc
Pokud chcete přidat zámek plochy se spořičem obrazovky, nainstalujte si balíček dodatečně libpam-pkcs11.

2) Přidejte modul PAM s podporou GOST

Načítání knihovny z https://download.rutoken.ru/Rutoken/PAM/
Zkopírujte obsah složky PAM librtpam.so.1.0.0 do systémové složky
/usr/lib/ nebo /usr/lib/x86_64-linux-gnu/nebo /usr/lib64

3) Nainstalujte balíček pomocí librtpkcs11ecp.so

Stáhněte a nainstalujte balíček DEB nebo RPM z odkazu: https://www.rutoken.ru/support/download/pkcs/

4) Zkontrolujte, zda v systému funguje Rutoken EDS 2.0

V terminálu provedeme
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Pokud vidíte čáru Rutoken ECP <no label> - to znamená, že je vše v pořádku.

5) Přečtěte si certifikát

Kontrola, zda má zařízení certifikát
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Pokud po řádku:
Using slot 0 with a present token (0x0)

  • zobrazí se informace o klíčích a certifikátech je potřeba si certifikát přečíst a uložit na disk. Chcete-li to provést, spusťte následující příkaz, kde místo {id} musíte nahradit ID certifikátu, které jste viděli ve výstupu předchozího příkazu:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Pokud byl soubor cert.crt vytvořen, pokračujte krokem 6).
  • nic tu není, pak je zařízení prázdné. Kontaktujte svého správce nebo si klíče a certifikát vytvořte sami podle následujícího kroku.

5.1) Vytvořte testovací certifikát

Pozornost! Popsané způsoby vytváření klíčů a certifikátů jsou vhodné pro testování a nejsou určeny pro použití v bojovém režimu. K tomu je třeba použít klíče a certifikáty vydané důvěryhodnou certifikační autoritou vaší organizace nebo akreditovanou certifikační autoritou.
Modul PAM je určen k ochraně místních počítačů a je navržen pro práci v malých organizacích. Vzhledem k malému počtu uživatelů může Administrátor sledovat zneplatnění certifikátů a ručně blokovat účty a také dobu platnosti certifikátů. Modul PAM zatím neví, jak ověřovat certifikáty pomocí CRL a budovat řetězce důvěry.

Snadný způsob (přes prohlížeč)

Chcete-li získat zkušební certifikát, použijte webová služba "Rutoken Registration Center". Proces nebude trvat déle než 5 minut.

Cesta geeka (přes konzoli a případně kompilátor)

Zkontrolujte verzi OpenSC
$ opensc-tool --version
Pokud je verze nižší než 0.20, aktualizujte nebo sestavte pkcs11-tool branch s podporou GOST-2012 z našeho GitHubu (v době publikace tohoto článku ještě nebyla vydána verze 0.20) nebo z hlavní větve hlavního projektu OpenSC nejpozději spáchat 8cf1e6f

Vygenerujte pár klíčů s následujícími parametry:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identifikátor objektu (CKA_ID) jako dvoumístná čísla hexadecimálních znaků z tabulky ASCII. Pro tisknutelné znaky používejte pouze kódy ASCII, protože... id bude nutné předat OpenSSL jako řetězec. Například ASCII kód ​​„3132“ odpovídá řetězci „12“. Pro pohodlí můžete použít online služba pro převod řetězců na kódy ASCII.

$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132

Dále vytvoříme certifikát. Níže budou popsány dva způsoby: první je prostřednictvím CA (použijeme testovací CA), druhý je self-signed. Chcete-li to provést, musíte nejprve nainstalovat a nakonfigurovat OpenSSL verze 1.1 nebo novější pro práci s Rutokenem prostřednictvím speciálního modulu rtengine pomocí návodu Instalace a konfigurace OpenSSL.
Například: pro '--id 3132' v OpenSSL musíte zadat "pkcs11:id=12".

Můžete využít služeb testovací CA, kterých je celá řada, např. zde, zde и zde, k tomu vytvoříme žádost o certifikát

Další možností je podlehnout lenosti a vytvořit si self-signed
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Nahrání certifikátu do zařízení
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Zaregistrujte certifikát do systému

Ujistěte se, že váš certifikát vypadá jako soubor base64:

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

Pokud váš certifikát vypadá takto:

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

poté musíte převést certifikát z formátu DER do formátu PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Znovu zkontrolujeme, že je nyní vše v pořádku.

Přidejte certifikát do seznamu důvěryhodných certifikátů
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Poslední řádek chrání seznam důvěryhodných certifikátů před náhodnou nebo záměrnou změnou jinými uživateli. To zabrání tomu, aby sem někdo přidal svůj certifikát a mohl se přihlásit vaším jménem.

7) Nastavte ověřování

Nastavení našeho modulu PAM je zcela standardní a provádí se úplně stejným způsobem jako nastavení jiných modulů. Vytvořit do souboru /usr/share/pam-configs/rutoken-gost-pam obsahující úplný název modulu, zda je ve výchozím nastavení povolen, prioritu modulu a parametry ověřování.
Parametry ověřování obsahují požadavky na úspěch operace:

  • požadováno: Takové moduly musí vrátit kladnou odpověď. Pokud výsledek volání modulu obsahuje zápornou odpověď, bude to mít za následek chybu ověřování. Požadavek bude zrušen, ale budou volány zbývající moduly.
  • Požadováno: Podobné jako povinné, ale okamžitě selže autentizace a ignoruje ostatní moduly.
  • dostatečný: Pokud žádný z požadovaných nebo dostatečných modulů před takovým modulem nevrátil negativní výsledek, modul vrátí kladnou odpověď. Zbývající moduly budou ignorovány.
  • volitelné: Pokud v zásobníku nejsou žádné požadované moduly a žádný z dostatečného počtu modulů nevrací kladný výsledek, pak alespoň jeden z volitelných modulů musí vracet kladný výsledek.

Celý obsah souboru /usr/share/pam-configs/rutoken-gost-pam:
Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

uložte soubor a poté spusťte
$ sudo pam-auth-update
v okně, které se objeví, umístěte vedle něj hvězdičku Rutoken PAM GOST a tlačit OK

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

8) Zkontrolujte nastavení

Chcete-li pochopit, že vše je nakonfigurováno, ale zároveň neztratit možnost přihlásit se do systému, zadejte příkaz
$ sudo login
Vložte svoji přezdívku. Vše je správně nakonfigurováno, pokud systém vyžaduje PIN kód zařízení.

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

9) Nakonfigurujte počítač tak, aby byl při extrahování tokenu zablokován

Součástí balení libpam-pkcs11 utility v ceně pkcs11_eventmgr, který vám umožňuje provádět různé akce, když nastanou události PKCS#11.
Pro nastavení pkcs11_eventmgr slouží jako konfigurační soubor: /etc/pam_pkcs11/pkcs11_eventmgr.conf
U různých distribucí Linuxu se příkaz, který způsobí uzamčení účtu při odebrání čipové karty nebo tokenu, bude lišit. Cm. event card_remove.
Příklad konfiguračního souboru je uveden níže:

pkcs11_eventmgr
{
    # Запуск в бэкграунде
    daemon = true;
     
    # Настройка сообщений отладки
    debug = false;
 
    # Время опроса в секундах
    polling_time = 1;
 
    # Установка тайм-аута на удаление карты
    # По-умолчанию 0
    expire_time = 0;
 
    # Выбор pkcs11 библиотеки для работы с Рутокен
    pkcs11_module = usr/lib/librtpkcs11ecp.so;
 
    # Действия с картой
    # Карта вставлена:
    event card_insert {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # Карта извлечена
    event card_remove {
        on_error = ignore;
         
        # Вызываем функцию блокировки экрана
        
        # Для GNOME 
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
        
        # Для XFCE
        # action = "xflock4";
        
        # Для Astra Linux (FLY)
        # action = "fly-wmfunc FLYWM_LOCK";
    }
 
    # Карта долгое время извлечена
    event expire_time {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

Poté přidejte aplikaci pkcs11_eventmgr ke spuštění. Chcete-li to provést, upravte soubor .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Přidejte řádek pkcs11_eventmgr na konec souboru a restartujte počítač.

Popsané kroky pro nastavení operačního systému lze použít jako návod v jakékoli moderní distribuci Linuxu, včetně domácích.

Jak používat moduly PAM pro místní ověřování v Linuxu pomocí klíčů GOST-2012 na Rutokenu

Závěr

Počítače se systémem Linux jsou v ruských vládních agenturách stále oblíbenější a nastavení spolehlivé dvoufaktorové autentizace v tomto OS není vždy snadné. S tímto průvodcem vám rádi pomůžeme vyřešit „problém s hesly“ a spolehlivě ochráníme přístup k vašemu PC, aniž byste nad ním trávili spoustu času.

Zdroj: www.habr.com

Přidat komentář