
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:
- Na Rutokene sa vyhľadáva osobný certifikát používateľa.
- Žiada sa PIN kód tokenu.
- Prebieha podpisovanie náhodných údajov súkromným kľúčom priamo v čipe Rutokenu.
- Získaný podpis je overený pomocou verejného kľúča z certifikátu používateľa.
- 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í.

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
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:
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 . 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 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
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ť .
$ ./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. .
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, , a , 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:

Ak váš certifikát vyzerá takto:

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

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

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.

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.

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
