Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

Eenvoudige wagwoorde is nie veilig nie, en komplekse wagwoorde is onmoontlik om te onthou. Daarom beland hulle so dikwels op 'n plaknota onder die sleutelbord of op die monitor. Om te verseker dat wagwoorde in die gedagtes van "vergeetlike" gebruikers bly en die betroubaarheid van beskerming nie verlore gaan nie, is daar twee-faktor-verifikasie (2FA).

As gevolg van die kombinasie van die besit van 'n toestel en om sy PIN te ken, kan die PIN self eenvoudiger en makliker wees om te onthou. Nadele in PIN-lengte of ewekansigheid word geneutraliseer deur die fisiese besitvereiste en beperkings op PIN brute force.

Boonop gebeur dit in staatsinstansies dat hulle wil hê alles moet volgens GOST werk. Hierdie 2FA-opsie om by Linux aan te meld sal bespreek word. Ek sal van ver af begin.

PAM modules

Pluggable Authentication Modules (PAM) is modules met 'n standaard API en implementering van verskeie verifikasiemeganismes in toepassings.
Alle nutsprogramme en toepassings wat met PAM kan werk, tel hulle op en kan dit vir gebruikersverifikasie gebruik.
In die praktyk werk dit iets soos volg: die login-opdrag roep PAM, wat al die nodige kontroles uitvoer met behulp van die modules wat in die konfigurasielêer gespesifiseer is en die resultaat terugstuur na die login-opdrag.

librtpam

Die module wat deur die Aktiv-maatskappy ontwikkel is, voeg twee-faktor-verifikasie by van gebruikers wat slimkaarte of USB-tokens gebruik met behulp van asimmetriese sleutels volgens die nuutste standaarde van huishoudelike kriptografie.

Kom ons kyk na die beginsel van die werking daarvan:

  • Die token stoor die gebruiker se sertifikaat en sy private sleutel;
  • Die sertifikaat word in die gebruiker se tuisgids gestoor as vertrou.

Die verifikasieproses vind soos volg plaas:

  1. Rutoken soek na die gebruiker se persoonlike sertifikaat.
  2. Die token-PIN word versoek.
  3. Willekeurige data word direk in die Rutoken-skyfie op die private sleutel onderteken.
  4. Die gevolglike handtekening word geverifieer met behulp van die publieke sleutel van die gebruiker se sertifikaat.
  5. Die module stuur die handtekeningverifikasieresultaat terug na die oproeptoepassing.

U kan verifieer met GOST R 34.10-2012-sleutels (lengte 256 of 512 bisse) of die verouderde GOST R 34.10-2001.

U hoef nie bekommerd te wees oor die sekuriteit van die sleutels nie - hulle word direk in Rutoken gegenereer en verlaat nooit sy geheue tydens kriptografiese bewerkings nie.

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

Rutoken EDS 2.0 is gesertifiseer deur die RFD en FSTEC volgens NDV 4, daarom kan dit gebruik word in inligtingstelsels wat vertroulike inligting verwerk.

Praktiese gebruik

Byna enige moderne Linux sal doen, byvoorbeeld ons sal xUbuntu 18.10 gebruik.

1) Installeer die nodige pakkette

sudo apt-get install libccid pcscd opensc
As jy 'n lessenaarslot met 'n skermbewaarder wil byvoeg, installeer die pakket addisioneel libpam-pkcs11.

2) Voeg 'n PAM-module met GOST-ondersteuning by

Laai tans die biblioteek vanaf https://download.rutoken.ru/Rutoken/PAM/
Kopieer die inhoud van die PAM-lêergids librtpam.so.1.0.0 na die stelsellêergids
/usr/lib/ of /usr/lib/x86_64-linux-gnu/of /usr/lib64

3) Installeer die pakket met librtpkcs11ecp.so

Laai die DEB- of RPM-pakket af en installeer dit vanaf die skakel: https://www.rutoken.ru/support/download/pkcs/

4) Kontroleer dat Rutoken EDS 2.0 in die stelsel werk

In die terminale voer ons uit
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
As jy die lyn sien Rutoken ECP <no label> - dit beteken alles is reg.

5) Lees die sertifikaat

Kontroleer dat die toestel 'n sertifikaat het
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
As na die reël:
Using slot 0 with a present token (0x0)

  • inligting vertoon word oor sleutels en sertifikate, moet jy die sertifikaat lees en op skyf stoor. Om dit te doen, voer die volgende opdrag uit, waar jy in plaas van {id} die sertifikaat-ID moet vervang wat jy in die uitvoer van die vorige opdrag gesien het:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    As die cert.crt-lêer geskep is, gaan voort na stap 6).
  • daar is niks, dan is die toestel leeg. Kontak jou administrateur of skep self die sleutels en sertifikaat deur die volgende stap te volg.

5.1) Skep 'n toetssertifikaat

Aandag! Die beskryfde metodes vir die skep van sleutels en sertifikate is geskik vir toetsing en is nie bedoel vir gebruik in gevegsmodus nie. Om dit te doen, moet jy sleutels en sertifikate gebruik wat uitgereik is deur jou organisasie se betroubare sertifiseringsowerheid of 'n geakkrediteerde sertifiseringsowerheid.
Die PAM-module is ontwerp om plaaslike rekenaars te beskerm en is ontwerp om in klein organisasies te werk. Aangesien daar min gebruikers is, kan die administrateur die herroeping van sertifikate monitor en rekeninge handmatig blokkeer, sowel as die geldigheidstydperk van sertifikate. Die PAM-module weet nog nie hoe om sertifikate met behulp van CRL's te verifieer en vertroueskettings te bou nie.

Die maklike manier (via blaaier)

Om 'n toetssertifikaat te bekom, gebruik webdiens "Rutoken Registrasiesentrum". Die proses sal nie meer as 5 minute neem nie.

Die geek se manier (via die konsole en moontlik die samesteller)

Gaan die OpenSC-weergawe na
$ opensc-tool --version
As die weergawe minder as 0.20 is, werk dan op of bou pkcs11-gereedskaptak met GOST-2012-ondersteuning vanaf ons GitHub (ten tyde van publikasie van hierdie artikel is vrystelling 0.20 nog nie vrygestel nie) of vanaf die hooftak van die hoof OpenSC-projek nie later nie pleeg 8cf1e6f

Genereer 'n sleutelpaar met die volgende parameters:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: objek-identifiseerder (CKA_ID) as tweesyfer-hexkarakternommers uit die ASCII-tabel. Gebruik slegs ASCII-kodes vir drukbare karakters, want... ID sal as 'n string na OpenSSL oorgedra moet word. Byvoorbeeld, die ASCII-kode "3132" stem ooreen met die string "12". Vir gerief kan jy gebruik aanlyn diens vir die omskakeling van stringe na ASCII-kodes.

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

Volgende sal ons 'n sertifikaat skep. Twee maniere sal hieronder beskryf word: die eerste is deur 'n CA (ons sal toets-CA's gebruik), die tweede is selfonderteken. Om dit te doen, moet jy eers OpenSSL weergawe 1.1 of later installeer en konfigureer om met Rutoken te werk deur 'n spesiale rtengine-module met behulp van die handleiding Installeer en konfigureer OpenSSL.
Byvoorbeeld: vir '--id 3132' in OpenSSL moet jy spesifiseerpkcs11:id=12«.

U kan die dienste van 'n toets-CA gebruik, waarvan daar baie is, bv. hier, hier и hier, hiervoor sal ons 'n versoek vir 'n sertifikaat skep

Nog 'n opsie is om aan luiheid toe te gee en 'n selfondertekende te skep
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Laai tans die sertifikaat op na die toestel
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registreer die sertifikaat in die stelsel

Maak seker dat jou sertifikaat soos 'n base64-lêer lyk:

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

As jou sertifikaat so lyk:

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

dan moet jy die sertifikaat omskakel van DER-formaat na PEM-formaat (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ons kyk weer of alles nou in orde is.

Voeg die sertifikaat by die lys van vertroude sertifikate
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Die laaste reël beskerm die lys van vertroude sertifikate om per ongeluk of opsetlik deur ander gebruikers verander te word. Dit verhoed dat iemand hul sertifikaat hier byvoeg en namens jou kan aanmeld.

7) Stel verifikasie op

Die opstel van ons PAM-module is heeltemal standaard en word op presies dieselfde manier gedoen as die opstel van ander modules. Skep na lêer /usr/share/pam-configs/rutoken-gost-pam wat die volle naam van die module bevat, of dit by verstek geaktiveer is, die prioriteit van die module en verifikasieparameters.
Die verifikasieparameters bevat vereistes vir die sukses van die operasie:

  • vereis: Sulke modules moet 'n positiewe reaksie gee. As die resultaat van 'n module-oproep 'n negatiewe antwoord bevat, sal dit 'n stawingsfout tot gevolg hê. Die versoek sal laat vaar word, maar die oorblywende modules sal opgeroep word.
  • vereiste: Soortgelyk aan vereis, maar misluk onmiddellik stawing en ignoreer ander modules.
  • voldoende: Indien nie een van die vereiste of voldoende modules voor so 'n module 'n negatiewe resultaat opgelewer het nie, sal die module 'n positiewe antwoord gee. Die oorblywende modules sal geïgnoreer word.
  • opsioneel: Indien daar geen vereiste modules op die stapel is nie en nie een van die voldoende modules 'n positiewe resultaat lewer nie, moet ten minste een van die opsionele modules 'n positiewe resultaat lewer.

Volledige lêerinhoud /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

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

stoor die lêer en voer dan uit
$ sudo pam-auth-update
in die venster wat verskyn, plaas 'n asterisk langsaan Rutoken PAM GOST en druk OK

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

8) Gaan die instellings na

Om te verstaan ​​dat alles gekonfigureer is, maar terselfdertyd nie die vermoë verloor om by die stelsel aan te meld nie, voer die opdrag in
$ sudo login
Voer jou gebruikersnaam in. Alles is korrek opgestel as die stelsel 'n toestel-PIN-kode vereis.

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

9) Stel die rekenaar op om geblokkeer te word wanneer die teken onttrek word

Ingesluit in die pakkie libpam-pkcs11 nut ingesluit pkcs11_eventmgr, wat jou toelaat om verskeie aksies uit te voer wanneer PKCS#11-gebeurtenisse plaasvind.
Vir instellings pkcs11_eventmgr dien as 'n konfigurasielêer: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Vir verskillende Linux-verspreidings sal die opdrag wat veroorsaak dat 'n rekening gesluit word wanneer 'n slimkaart of token verwyder word, verskil. Cm. event card_remove.
'n Voorbeeld konfigurasielêer word hieronder getoon:

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

Voeg daarna die toepassing by pkcs11_eventmgr om te begin. Om dit te doen, wysig die .bash_profile-lêer:
$ nano /home/<имя_пользователя>/.bash_profile
Voeg die reël pkcs11_eventmgr by die einde van die lêer en herlaai.

Die beskryfde stappe vir die opstel van die bedryfstelsel kan as instruksies gebruik word in enige moderne Linux-verspreiding, insluitend huishoudelike.

Hoe om PAM-modules te gebruik vir plaaslike verifikasie in Linux met behulp van GOST-2012-sleutels op Rutoken

Gevolgtrekking

Linux-rekenaars word toenemend gewild in Russiese regeringsagentskappe, en die opstel van betroubare twee-faktor-verifikasie in hierdie bedryfstelsel is nie altyd maklik nie. Ons sal jou graag help om die "wagwoordprobleem" met hierdie gids op te los en toegang tot jou rekenaar betroubaar te beskerm sonder om baie tyd daaraan te spandeer.

Bron: will.com

Voeg 'n opmerking