Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

Jednoduché heslá neposkytujú ochranu, zatiaľ čo zložité si nikto nemôže zapamätať. Preto sa často nachádzajú na nálepkách pod klávesnicou alebo na monitore. Aby sa heslá udržali v mysliach „zabudlivých“ používateľov a zabezpečenie zostalo silné, je na mieste dvojfaktorová autentifikácia (2FA).

Vďaka kombinácii faktora vlastníctva zariadenia a znalosti jeho PIN kódu môže byť samotný PIN kód jednoduchší a ľahšie zapamätateľný. Nedostatky v dĺžke alebo náhodnosti PIN kódu sú kompenzované požiadavkou fyzického vlastníctva a obmedzeniami na hádanie PIN kódu.

Okrem toho, v štátnych inštitúciách môžu požadovať, aby všetko fungovalo podľa GOST. O takomto variante 2FA pre prístup do Linuxu sa bude rozprávať. Začnem z ďaleka.

PAM moduly

Pripojiteľné autentifikačné moduly (Pluggable Authentication Modules, PAM) sú moduly so štandardným API a realizáciami rôznych autentifikačných mechanizmov v aplikáciách.
Všetky nástroje a aplikácie, ktoré dokážu pracovať s PAM, ich zachytávajú a môžu ich používať na autentifikáciu používateľa.
V praxi to funguje takto: príkaz login sa obracia na PAM, ktorý vykoná všetky potrebné kontroly pomocou modulov uvedených v konfiguračnom súbore a vráti výsledok späť príkazu login.

librtpam

Modul vyvinutý spoločnosťou „Aktiv“ pridáva dvojfaktorovú autentifikáciu používateľov pomocou smart kariet alebo USB tokenov s využitím asymetrických kľúčov podľa najnovších štandardov domácej kryptografie.

Preskúmajme princíp jeho fungovania:

  • na tokene je uložený certifikát používateľa a jeho súkromný kľúč;
  • certifikát je uložený v domovskom adresári používateľa ako dôveryhodný.

Proces autentifikácie prebieha nasledovne:

  1. Na Rutokene sa vyhľadáva osobný certifikát používateľa.
  2. Žiada sa PIN kód tokenu.
  3. Prebieha podpisovanie náhodných údajov súkromným kľúčom priamo v čipe Rutokenu.
  4. Získaný podpis je overený pomocou verejného kľúča z certifikátu používateľa.
  5. Modul vracia volajúcej aplikácii výsledok overenia podpisu.

Môžete sa autentifikovať podľa kľúčov GOST R 34.10-2012 (dĺžky 256 alebo 512 bitov) alebo zastaraného GOST R 34.10-2001.

O bezpečnosť kľúčov sa netreba obávať – sú generované priamo v Rutokene a nikdy neopúšťajú jeho pamäť počas kryptografických operácií.

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

Rutoken ECP 2.0 je certifikovaný FSB a FSTEK podľa Návodov 4, preto môže byť použitý v informačných systémoch, ktoré spracovávajú dôverné informácie.

Praktické použitie

Vyhovuje prakticky každému modernému Linuxu, na príklade budeme používať xUbuntu 18.10.

1) Inštalujeme potrebné balíky

sudo apt-get install libccid pcscd opensc
Ak chcete pridať blokovanie pracovnej plochy pomocou spoza obrazovky – dodatočne nainštalujte balík libpam-pkcs11.

2) Pridáme PAM modul s podporou GOST-ov

Načítať knižnicu s https://download.rutoken.ru/Rutoken/PAM/
Skopírujte obsah priečinka PAM librtpam.so.1.0.0 do systémového priečinka
/usr/lib/ alebo /usr/lib/x86_64-linux-gnu/alebo /usr/lib64

3) Nainštalujte balík s librtpkcs11ecp.so

Načítajte a nainštalujte DEB alebo RPM balík podľa odkazu: https://www.rutoken.ru/support/download/pkcs/

4) Skontrolujte, či Rutoken ECP 2.0 funguje v systéme

V termináli vykonajte
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ak uvidíte riadok Rutoken ECP – znamená to, že všetko je v poriadku.

5) Prečítame certifikát

Skontrolujte, či je na zariadení certifikát
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ak sa po riadku:
Using slot 0 with a present token (0x0)

  • zobrazí informácia o kľúčoch a certifikátoch, je potrebné prečítať certifikát a uložiť ho na disk. Na to vykonajte nasledujúci príkaz, kde namiesto {id} vložte ID certifikátu, ktoré ste videli v predchádzajúcom výstupe:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    V prípade, že súbor cert.crt bol vytvorený, prejdite k bodu 6).
  • nič, znamená to, že zariadenie je prázdne. Obráťte sa na administrátora alebo si sami vytvorte kľúče a certifikát podľa nasledujúceho bodu.

5.1) Vytvorte testovací certifikát

Pozor! Opísané spôsoby vytvárania kľúčov a certifikátov sú vhodné na testovanie a nie sú určené na použitie v reálnych podmienkach. Na to je potrebné použiť kľúče a certifikáty, ktoré vydal dôveryhodný certifikačný úrad vašej organizácie alebo akreditovaný certifikačný úrad.
PAM modul je vytvorený na ochranu miestnych počítačov a predpokladá prácu v malých organizáciách. Keďže je málo používateľov, administrátor môže sám sledovať odvolanie certifikátov a manuálne blokovať účty, ako aj termíny platnosti certifikátov. PAM modul zatiaľ nevie overovať certifikáty cez CRL a budovať reťazce dôvery.

Jednoduchý spôsob (cez prehliadač)

Na získanie testovacieho certifikátu použite webovú službu „Centrum registrácie Rutoken“. Proces zaberie nie viac ako 5 minút.

Cesta geeka (cez konzolu a možno aj kompilátor)

Skontrolujte verziu OpenSC
$ opensc-tool --version
Ak je verzia nižšia ako 0.20, aktualizujte sa alebo zostavte vetvu pkcs11-tool s podporou GOST-2012 z nášho GitHubu (v čase vydania tohto článku verzia 0.20 ešte nebola vydaná) alebo z vetvy master hlavného projektu OpenSC najneskôr komitu 8cf1e6f

Generujeme kľúčový pár s parametrami:
--key-type: GOSTR3410-2012-512:A (GOST-2012 512 bit s parametrami A), GOSTR3410-2012-256:A (GOST-2012 256 bit s parametrami A)

--id: identifikátor objektu (CKA_ID) vo forme dvojciferných čísiel v hex zo tabuľky ASCII. Použite iba ASCII kódy tlačených znakov, pretože id bude potrebné odovzdať OpenSSL vo forme reťazca. Napríklad, ASCII kódom „3132“ zodpovedá reťazec „12“. Pre pohodlie môžete využiť online službu na konverziu reťazca na ASCII kódy.

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

Ďalej budeme vytvárať certifikát. Nižšie budú opísané dva spôsoby: prvý cez CA (použijeme testovacie CA), druhý – samo-podpisaný. Na to najprv musíme nainštalovať a nastaviť OpenSSL verzie 1.1 alebo novšej na prácu s Rutokenom cez špeciálny modul rtengine podľa príručky. Inštalácia a nastavenie OpenSSL.
Napríklad: pre ‚--id 3132‘ v OpenSSL je potrebné uvádzať „pkcs11:id=12«.

Môžete využiť služby testovacieho CA, ktorých je veľa, napríklad, tu, tu a tu, preto vytvoríme žiadosť o certifikát

Inou možnosťou je vzdať sa lenivosti a vytvoriť samo-podpisaný
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Nahrávame certifikát na zariadenie
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registrujeme certifikát v systéme

Uistite sa, že váš certifikát vyzerá ako base64 súbor:

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

Ak váš certifikát vyzerá takto:

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

je potrebné konvertovať certifikát z formátu DER do PEM formátu (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Znova kontrolujeme, že teraz je všetko v poriadku.

Pridáme certifikát do zoznamu dôveryhodných certifikátov
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Posledný riadok chráni zoznam dôveryhodných certifikátov pred náhodnou alebo úmyselnou zmenou inými používateľmi. To vylučuje situáciu, kedy niekto pridá svoj certifikát a môže sa prihlásiť do systému vaším menom.

7) Nastavujeme autentifikáciu

Nastavenie nášho modulu PAM je úplne štandardné a robí sa presne tak, ako nastavenia iných modulov. Vytvoríme súbor /usr/share/pam-configs/rutoken-gost-pam obsahujúci úplný názov modulu, či je predvolene povolený, prioritu modulu a parametre autentifikácie.
V parametroch autentifikácie sú požiadavky na úspešnosť operácie:

  • required (povinný): takéto moduly musia vrátiť kladnú odpoveď. Ak výsledok volania modulu obsahuje zápornú odpoveď, vedie to k chybe autentifikácie. Požiadavka bude zamietnutá, ale ostatné moduly sa budú volať.
  • requisite (nevyhnutný): podobný ako required, ale okamžite vedie k zlyhaniu autentifikácie a ignoruje ostatné moduly.
  • sufficient (postačujúci): ak pred takýmto modulom žiaden z povinných alebo postačujúcich modulov nevrátil záporný výsledok, modul vráti kladnú odpoveď. Zvyšné moduly budú ignorované.
  • optional (ďalší): ak v zásobníku nie sú moduly required a žiaden z modulov sufficient nevrátil kladný výsledok, aspoň jeden z modulov optional musí vrátiť kladnú odpoveď.

Úplný obsah súboru /usr/share/pam-configs/rutoken-gost-pam:
Názov: Rutoken PAM GOST
Predvolené: áno
Priorita: 800
Typ autentifikácie: Primárny
Autentifikácia: dostatočná /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

uložíme súbor, potom vykonáme
$ sudo pam-auth-update
v objave okne umiestnime hviezdičku vedľa Rutoken PAM GOST a klikneme na OK

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

8) Kontrolujeme nastavenie

Aby sme si overili, že je všetko nastavené, ale zároveň nestratili možnosť prihlásenia, zadajte príkaz
$ sudo login
Zadajte meno používateľa. Všetko je správne nastavené, ak systém vyžaduje PIN kód zariadenia.

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

9) Nastavujeme blokovanie počítača pri vybratí tokenu

Súčasťou balíka libpam-pkcs11 je nástroj pkcs11_eventmgr, ktorý umožňuje vykonávať rôzne akcie pri vzniku udalostí PKCS#11.
Na nastavenie pkcs11_eventmgr slúži konfiguračný súbor: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Pre rôzne distribúcie Linuxu sa bude príkaz, ktorý vyvoláva zablokovanie účtu pri vybratí smart kariet alebo tokenu, líšiť. Pozri. event card_remove.
Príklad konfiguračného súboru je uvedený nižšie:

pkcs11_eventmgr
{
    # Spustenie na pozadí
    daemon = true;
     
    # Nastavenie správ o ladení
    debug = false;
 
    # Čas polling v sekundách
    polling_time = 1;
 
    # Nastavenie timeoutu na odstránenie karty
    # Predvolene 0
    expire_time = 0;
 
    # Výber pkcs11 knižnice na prácu s RUTOKEN
    pkcs11_module = usr/lib/librtpkcs11ecp.so;
 
    # Akcie s kartou
    # Karta bola vložená:
    event card_insert {
        # Necháme predvolené hodnoty (nič sa nedeje)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # Karta bola vybraná
    event card_remove {
        on_error = ignore;
         
        # Vyvoláme funkciu blokovania obrazovky
        
        # Pre GNOME 
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
        
        # Pre XFCE
        # action = "xflock4";
        
        # Pre Astra Linux (FLY)
        # action = "fly-wmfunc FLYWM_LOCK";
    }
 
    # Karta bola dlhú dobu vybraná
    event expire_time {
        # Necháme predvolené hodnoty (nič sa nedeje)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

Potom pridajte aplikáciu pkcs11_eventmgr do automatického spúšťania. Na to upravte súbor .bash_profile:
$ nano /home//.bash_profile
Na koniec súboru pridajte riadok pkcs11_eventmgr a reštartujte sa.

Opísané kroky na nastavenie operačného systému môžu byť použité ako návod v akomkoľvek modernom distribúte Linuxu, vrátane domácich.

Ako používať PAM moduly na lokálnu autentifikáciu v Linuxe pomocou kľúčov GOST-2012 na Rutoken.

Záver

PC s Linuxom v ruských štátnych štruktúrach sa stávajú stále populárnejšími a nastaviť spoľahlivú dvojfaktorovú autentifikáciu v tejto OS nie je vždy jednoduché. Radi by sme touto príručkou pomohli vyriešiť "problém hesiel" a spoľahlivo ochrániť prístup k PC bez veľkých časových nárokov.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster