Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

Preprosta gesla niso varna, zapletenih pa si je nemogoče zapomniti. Zato se tako pogosto znajdejo na lepljivem listku pod tipkovnico ali na monitorju. Za zagotovitev, da gesla ostanejo v glavah »pozabljivih« uporabnikov in da se zanesljivost zaščite ne izgubi, obstaja dvofaktorska avtentikacija (2FA).

Zaradi kombinacije lastništva naprave in poznavanja njenega PIN-a je lahko sam PIN preprostejši in si ga je lažje zapomniti. Pomanjkljivosti v dolžini PIN-a ali naključnosti se izravnajo z zahtevo po fizičnem posedovanju in omejitvami glede nasilne uporabe PIN-a.

Poleg tega se v državnih agencijah dogaja, da želijo, da vse deluje po GOST. O tej možnosti 2FA za prijavo v Linux bomo razpravljali. Začel bom od daleč.

PAM moduli

Pluggable Authentication Modules (PAM) so moduli s standardnim API-jem in implementacijami različnih mehanizmov za preverjanje pristnosti v aplikacijah.
Vsi pripomočki in aplikacije, ki lahko delujejo s PAM, jih poberejo in lahko uporabijo za avtentikacijo uporabnikov.
V praksi deluje nekako takole: ukaz za prijavo pokliče PAM, ki izvede vsa potrebna preverjanja z uporabo modulov, navedenih v konfiguracijski datoteki, in vrne rezultat nazaj ukazu za prijavo.

librtpam

Modul, ki ga je razvilo podjetje Aktiv, dodaja dvofaktorsko avtentikacijo uporabnikov s pametnimi karticami ali USB žetoni z uporabo asimetričnih ključev po najnovejših standardih domače kriptografije.

Oglejmo si načelo njegovega delovanja:

  • Žeton shranjuje uporabnikovo potrdilo in njegov zasebni ključ;
  • Potrdilo je shranjeno v uporabnikovem domačem imeniku kot zaupanja vredno.

Postopek preverjanja pristnosti poteka na naslednji način:

  1. Rutoken išče osebni certifikat uporabnika.
  2. Zahtevan je žeton PIN.
  3. Naključni podatki so podpisani na zasebnem ključu neposredno v čipu Rutoken.
  4. Dobljeni podpis se preveri z javnim ključem iz potrdila uporabnika.
  5. Modul vrne rezultat preverjanja podpisa klicni aplikaciji.

Preverjanje lahko izvedete s ključi GOST R 34.10-2012 (dolžine 256 ali 512 bitov) ali zastarelim GOST R 34.10-2001.

Za varnost ključev vam ni treba skrbeti - generirajo se neposredno v Rutokenu in nikoli ne zapustijo njegovega pomnilnika med kriptografskimi operacijami.

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

Rutoken EDS 2.0 je certificiran s strani FSB in FSTEC v skladu z NDV 4, zato se lahko uporablja v informacijskih sistemih, ki obdelujejo zaupne informacije.

Praktična uporaba

Skoraj vsak sodoben Linux bo zadostoval, na primer uporabili bomo xUbuntu 18.10.

1) Namestite potrebne pakete

sudo apt-get install libccid pcscd opensc
Če želite dodati zaklepanje namizja z ohranjevalnikom zaslona, ​​dodatno namestite paket libpam-pkcs11.

2) Dodajte modul PAM s podporo GOST

Nalaganje knjižnice iz https://download.rutoken.ru/Rutoken/PAM/
Kopirajte vsebino mape PAM librtpam.so.1.0.0 v sistemsko mapo
/usr/lib/ ali /usr/lib/x86_64-linux-gnu/ali /usr/lib64

3) Namestite paket z librtpkcs11ecp.so

Prenesite in namestite paket DEB ali RPM s povezave: https://www.rutoken.ru/support/download/pkcs/

4) Preverite, ali Rutoken EDS 2.0 deluje v sistemu

V terminalu izvajamo
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Če vidite črto Rutoken ECP <no label> - pomeni, da je vse v redu.

5) Preberite potrdilo

Preverjanje, ali ima naprava certifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Če za vrstico:
Using slot 0 with a present token (0x0)

  • se prikažejo informacije o ključih in certifikatih morate prebrati certifikat in ga shraniti na disk. Če želite to narediti, zaženite naslednji ukaz, kjer morate namesto {id} nadomestiti ID potrdila, ki ste ga videli v izhodu prejšnjega ukaza:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Če je bila datoteka cert.crt ustvarjena, nadaljujte s korakom 6).
  • tam ni ničesar, potem je naprava prazna. Obrnite se na skrbnika ali ustvarite ključe in potrdilo sami, tako da sledite naslednjemu koraku.

5.1) Ustvarite testno potrdilo

Pozor! Opisane metode za ustvarjanje ključev in potrdil so primerne za testiranje in niso namenjene uporabi v bojnem načinu. Če želite to narediti, morate uporabiti ključe in potrdila, ki jih je izdal zaupanja vreden certifikacijski organ vaše organizacije ali akreditiran certifikacijski organ.
Modul PAM je zasnovan za zaščito lokalnih računalnikov in je zasnovan za delo v majhnih organizacijah. Ker je uporabnikov malo, lahko skrbnik spremlja preklic certifikatov in ročno blokira račune ter rok veljavnosti certifikatov. Modul PAM še ne zna preverjati certifikatov s CRL-ji in graditi verige zaupanja.

Enostaven način (prek brskalnika)

Za pridobitev potrdila o preizkusu uporabite spletna storitev "Registracijski center Rutoken". Postopek ne bo trajal več kot 5 minut.

Geekov način (prek konzole in po možnosti prevajalnika)

Preverite različico OpenSC
$ opensc-tool --version
Če je različica nižja od 0.20, posodobite ali zgradite pkcs11-tool veja s podporo GOST-2012 iz našega GitHuba (v času tega članka izdaja 0.20 še ni bila izdana) ali iz glavne veje glavnega projekta OpenSC najkasneje zavezati 8cf1e6f

Ustvarite par ključev z naslednjimi parametri:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identifikator objekta (CKA_ID) kot dvomestne šestnajstiške številke znakov iz tabele ASCII. Za natisljive znake uporabljajte samo kode ASCII, ker ... id bo treba posredovati OpenSSL kot niz. Na primer, koda ASCII "3132" ustreza nizu "12". Za udobje lahko uporabite spletna storitev za pretvorbo nizov v kode ASCII.

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

Nato bomo ustvarili potrdilo. Spodaj bosta opisana dva načina: prvi je prek CA (uporabili bomo testne CA), drugi pa je samopodpisan. Če želite to narediti, morate najprej namestiti in konfigurirati OpenSSL različice 1.1 ali novejšo za delo z Rutoken prek posebnega modula rtengine z uporabo priročnika Namestitev in konfiguracija OpenSSL.
Na primer: za '--id 3132' v OpenSSL morate podati "pkcs11:id=12".

Uporabite lahko storitve testnega CA, ki jih je veliko, npr. glej, glej и glej, za to bomo ustvarili zahtevo za potrdilo

Druga možnost je, da se prepustite lenobi in ustvarite samopodpisan
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Nalaganje potrdila v napravo
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registrirajte potrdilo v sistemu

Prepričajte se, da je vaše potrdilo videti kot datoteka base64:

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

Če je vaše potrdilo videti takole:

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

potem morate potrdilo pretvoriti iz formata DER v format PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ponovno preverimo, ali je zdaj vse v redu.

Dodajte potrdilo na seznam zaupanja vrednih potrdil
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Zadnja vrstica ščiti seznam zaupanja vrednih potrdil pred nenamerno ali namerno spremembo drugih uporabnikov. To preprečuje, da bi nekdo tukaj dodal svoje potrdilo in se lahko prijavil v vašem imenu.

7) Nastavite avtentikacijo

Nastavitev našega modula PAM je popolnoma standardna in poteka na povsem enak način kot nastavitev ostalih modulov. Ustvari v datoteko /usr/share/pam-configs/rutoken-gost-pam ki vsebuje polno ime modula, ali je privzeto omogočen, prioriteto modula in parametre za preverjanje pristnosti.
Parametri avtentikacije vsebujejo zahteve za uspešnost operacije:

  • obvezno: Takšni moduli morajo vrniti pozitiven odgovor. Če rezultat klica modula vsebuje negativen odgovor, bo to povzročilo napako pri preverjanju pristnosti. Zahteva bo opuščena, vendar bodo poklicani preostali moduli.
  • Requisite: Podobno zahtevanemu, vendar takoj ne uspe preveriti pristnosti in ignorira druge module.
  • zadosten: če nobeden od zahtevanih ali zadostnih modulov pred takim modulom ni vrnil negativnega rezultata, bo modul vrnil pozitiven odgovor. Preostali moduli bodo prezrti.
  • izbirno: Če na skladu ni zahtevanih modulov in nobeden od zadostnih modulov ne vrne pozitivnega rezultata, mora vsaj eden od izbirnih modulov vrniti pozitiven rezultat.

Celotna vsebina datoteke /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

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

shranite datoteko in jo nato izvedite
$ sudo pam-auth-update
v oknu, ki se pojavi, postavite zvezdico zraven Rutoken PAM GOST in kliknite OK

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

8) Preverite nastavitve

Če želite razumeti, da je vse konfigurirano, vendar hkrati ne izgubite možnosti prijave v sistem, vnesite ukaz
$ sudo login
Vnesite svoje uporabniško ime. Vse je pravilno konfigurirano, če sistem zahteva kodo PIN naprave.

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

9) Konfigurirajte računalnik tako, da bo blokiran, ko je žeton ekstrahiran

Vključeno v paket libpam-pkcs11 pripomoček vključen pkcs11_eventmgr, ki vam omogoča izvajanje različnih dejanj, ko pride do dogodkov PKCS#11.
Za nastavitve pkcs11_eventmgr služi kot konfiguracijska datoteka: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Za različne distribucije Linuxa se bo ukaz, ki povzroči zaklepanje računa, ko odstranite pametno kartico ali žeton, razlikoval. Cm. event card_remove.
Primer konfiguracijske datoteke je prikazan spodaj:

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";
    }
}

Po tem dodajte aplikacijo pkcs11_eventmgr do zagona. Če želite to narediti, uredite datoteko .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Dodajte vrstico pkcs11_eventmgr na konec datoteke in znova zaženite sistem.

Opisani koraki za nastavitev operacijskega sistema se lahko uporabljajo kot navodila v kateri koli sodobni distribuciji Linuxa, tudi domači.

Kako uporabljati module PAM za lokalno avtentikacijo v Linuxu z uporabo ključev GOST-2012 na Rutoken

Zaključek

Osebni računalniki z operacijskim sistemom Linux postajajo vse bolj priljubljeni v ruskih vladnih agencijah in nastavitev zanesljive dvofaktorske avtentikacije v tem OS ni vedno enostavna. Z veseljem vam bomo pomagali rešiti "problem z geslom" s tem priročnikom in zanesljivo zaščititi dostop do vašega računalnika, ne da bi za to porabili veliko časa.

Vir: www.habr.com

Dodaj komentar