Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

Ienfâldige wachtwurden binne net feilich, en komplekse binne ûnmooglik te ûnthâlden. Dêrom komme se sa faak op in plakbriefke ûnder it toetseboerd of op de monitor telâne. Om te soargjen dat wachtwurden bliuwe yn 'e tinzen fan "ferjitlike" brûkers en de betrouberens fan beskerming net ferlern giet, is d'r twa-faktor-autentikaasje (2FA).

Troch de kombinaasje fan it besit fan in apparaat en it kennen fan syn PIN, kin de PIN sels ienfâldiger en makliker te ûnthâlden wêze. Neidielen yn PIN lingte of willekeurich wurde kompensearre troch de fysike besit eask en beheinings op PIN brute krêft.

Boppedat komt it yn oerheidsynstânsjes foar dat se wolle dat alles neffens GOST wurket. Dizze 2FA-opsje foar ynloggen yn Linux sil wurde besprutsen. Ik sil fan fierren begjinne.

PAM modules

Pluggable Authentication Modules (PAM) binne modules mei in standert API en ymplemintaasjes fan ferskate autentikaasjemeganismen yn applikaasjes.
Alle nutsbedriuwen en applikaasjes dy't mei PAM kinne wurkje, helje se op en kinne se brûke foar brûkersferifikaasje.
Yn 'e praktyk wurket it sa'n ding: it oanmeldkommando ropt PAM, dy't alle nedige kontrôles útfiert mei de modules oantsjutte yn it konfiguraasjetriem en it resultaat werombringt nei it oanmeldkommando.

librtpam

De module ûntwikkele troch de Aktiv bedriuw foeget twa-faktor autentikaasje fan brûkers mei help fan smart cards of USB tokens mei help fan asymmetryske kaaien neffens de lêste noarmen fan ynlânske kryptografy.

Litte wy nei it prinsipe fan syn wurking sjen:

  • De token bewarret it sertifikaat fan de brûker en syn privee kaai;
  • It sertifikaat wurdt bewarre yn de thúsmap fan de brûker as fertroud.

It autentikaasjeproses bart as folget:

  1. Rutoken siket nei it persoanlike sertifikaat fan de brûker.
  2. De token PIN wurdt frege.
  3. Willekeurige gegevens wurde tekene op 'e privee kaai direkt yn' e Rutoken-chip.
  4. De resultearjende hantekening wurdt ferifiearre mei de iepenbiere kaai fan it sertifikaat fan de brûker.
  5. De module jout it resultaat fan hantekeningferifikaasje werom nei de opropapplikaasje.

Jo kinne authentisearje mei GOST R 34.10-2012-kaaien (lingte 256 of 512 bits) of de ferâldere GOST R 34.10-2001.

Jo hoege jo gjin soargen te meitsjen oer de feiligens fan 'e kaaien - se wurde direkt generearre yn Rutoken en ferlitte har ûnthâld noait by kryptografyske operaasjes.

Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

Rutoken EDS 2.0 is sertifisearre troch de FSB en FSTEC neffens NDV 4, dêrom kin it brûkt wurde yn ynformaasjesystemen dy't fertroulike ynformaasje ferwurkje.

Praktyske gebrûk

Hast elke moderne Linux sil dwaan, bygelyks sille wy xUbuntu 18.10 brûke.

1) Ynstallearje de nedige pakketten

sudo apt-get install libccid pcscd opensc
As jo ​​​​in buroblêdslot taheakje wolle mei in skermbefeiliging, ynstallearje dan it pakket ek libpam-pkcs11.

2) Foegje in PAM-module ta mei GOST-stipe

It laden fan de bibleteek út https://download.rutoken.ru/Rutoken/PAM/
Kopiearje de ynhâld fan 'e PAM-map librtpam.so.1.0.0 nei de systeemmap
/usr/lib/ of /usr/lib/x86_64-linux-gnu/of /usr/lib64

3) Ynstallearje it pakket mei librtpkcs11ecp.so

Download en ynstallearje it DEB- as RPM-pakket fanôf de keppeling: https://www.rutoken.ru/support/download/pkcs/

4) Kontrolearje dat Rutoken EDS 2.0 wurket yn it systeem

Yn de terminal wy útfiere
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
As jo ​​sjogge de line Rutoken ECP <no label> - it betsjut dat alles goed is.

5) Lês it sertifikaat

Kontrolearje dat it apparaat in sertifikaat hat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
As nei de rigel:
Using slot 0 with a present token (0x0)

  • ynformaasje wurdt werjûn oer kaaien en sertifikaten moatte jo it sertifikaat lêze en bewarje op skiif. Om dit te dwaan, útfiere it folgjende kommando, wêryn ynstee fan {id} jo de sertifikaat-ID moatte ferfange dy't jo seagen yn 'e útfier fan it foarige kommando:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    As it cert.crt-bestân oanmakke is, gean dan troch nei stap 6).
  • dêr is neat, dan is it apparaat leech. Nim kontakt op mei jo behearder of meitsje de kaaien en sertifikaat sels troch de folgjende stap te folgjen.

5.1) Meitsje in testsertifikaat

Oandacht! De beskreaune metoaden foar it meitsjen fan kaaien en sertifikaten binne geskikt foar testen en binne net bedoeld foar gebrûk yn fjochtsmodus. Om dit te dwaan, moatte jo kaaien en sertifikaten brûke útjûn troch de fertroude sertifisearringsautoriteit fan jo organisaasje as in akkrediteare sertifisearingsautoriteit.
De PAM-module is ûntworpen om lokale kompjûters te beskermjen en is ûntworpen om te wurkjen yn lytse organisaasjes. Om't d'r in pear brûkers binne, kin de behearder it ynlûken fan sertifikaten kontrolearje en akkounts manuell blokkearje, lykas de jildigensperioade fan sertifikaten. De PAM-module wit noch net hoe't jo sertifikaten kinne ferifiearje mei CRL's en keatlingen fan fertrouwen bouwe.

De maklike manier (fia browser)

Om in testsertifikaat te krijen, brûk webtsjinst "Rutoken Registration Center". It proses sil net mear as 5 minuten nimme.

De manier fan 'e geek (fia de konsole en mooglik de gearstaller)

Kontrolearje de OpenSC-ferzje
$ opensc-tool --version
As de ferzje minder is dan 0.20, dan bywurkje of bouwe pkcs11-ark-tûke mei GOST-2012-stipe fan ús GitHub (op it momint fan publikaasje fan dit artikel, release 0.20 is noch net frijjûn) of fan 'e mastertûke fan it haad OpenSC-projekt net letter oer 8cf1e6f

Generearje in kaaipaar mei de folgjende parameters:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: foarwerp identifier (CKA_ID) as twa-sifers hex karakter nûmers út de ASCII tabel. Brûk allinich ASCII-koades foar printbere tekens, om't ... id sil moatte wurde trochjûn oan OpenSSL as in tekenrige. Bygelyks, de ASCII-koade "3132" komt oerien mei de tekenrige "12". Foar gemak kinne jo gebrûk meitsje online tsjinst foar it konvertearjen fan snaren nei ASCII-koades.

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

Folgjende sille wy in sertifikaat oanmeitsje. Twa manieren sille hjirûnder beskreaun wurde: de earste is fia in CA (wy sille test CA's brûke), de twadde is sels ûndertekene. Om dit te dwaan, moatte jo earst OpenSSL ferzje 1.1 of letter ynstallearje en konfigurearje om mei Rutoken te wurkjen fia in spesjale rtengine-module mei de hânlieding Ynstallearje en konfigurearje OpenSSL.
Bygelyks: foar '--id 3132' yn OpenSSL moatte jo oantsjutte "pkcs11:id=12".

Jo kinne de tsjinsten fan in test CA brûke, wêrfan d'r in protte binne, bygelyks, sjoch, sjoch и sjoch, dêrfoar meitsje wy in fersyk foar in sertifikaat

In oare opsje is om te jaan oan luiheid en meitsje in sels-tekene
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

It opladen fan it sertifikaat nei it apparaat
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registrearje it sertifikaat yn it systeem

Soargje derfoar dat jo sertifikaat liket op in base64-bestân:

Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

As jo ​​sertifikaat der sa útsjocht:

Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

dan moatte jo it sertifikaat konvertearje fan DER-formaat nei PEM-formaat (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Wy kontrolearje nochris dat alles no yn oarder is.

Foegje it sertifikaat ta oan de list mei fertroude sertifikaten
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

De lêste rigel beskermet de list mei fertroude sertifikaten tsjin per ongelok of mei opsetsin feroare troch oare brûkers. Dit foarkomt dat immen har sertifikaat hjir tafoeget en yn jo namme oanmelde kin.

7) Stel autentikaasje yn

It ynstellen fan ús PAM-module is folslein standert en wurdt dien op krekt deselde wize as it ynstellen fan oare modules. Meitsje nei triem /usr/share/pam-configs/rutoken-gost-pam mei de folsleine namme fan 'e module, oft it standert ynskeakele is, de prioriteit fan 'e module, en autentikaasjeparameters.
De autentikaasjeparameters befetsje easken foar it sukses fan 'e operaasje:

  • fereaske: Sokke modules moatte werom in posityf antwurd. As it resultaat fan in module oprop befettet in negatyf antwurd, dit sil resultearje yn in autentikaasje flater. It fersyk sil falle, mar de oerbleaune modules wurde neamd.
  • requisite: Similar to fereaske, mar daliks mislearret autentikaasje en negearret oare modules.
  • genôch: As net ien fan de fereaske of genôch modules foar sa'n module joech in negatyf resultaat, dan sil de module in posityf antwurd werom. De oerbleaune modules wurde negearre.
  • opsjoneel: As der gjin fereaske modules op 'e steapel en net ien fan' e foldwaande modules jout in posityf resultaat, dan moat op syn minst ien fan de opsjonele modules werom in posityf resultaat.

Folsleine triem ynhâld /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 kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

bewarje de triem, dan útfiere
$ sudo pam-auth-update
set in asterisk njonken it finster dat ferskynt Rutoken PAM GOST en klikje OK

Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

8) Kontrolearje de ynstellings

Om te begripen dat alles is konfigurearre, mar tagelyk net ferlieze de mooglikheid om oan te melden by it systeem, fier it kommando
$ sudo login
Folje jo brûkersnamme yn. Alles is goed ynsteld as it systeem in apparaat PIN-koade fereasket.

Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

9) Konfigurearje de kompjûter om te blokkearjen as it token wurdt ekstrahearre

Opnaam yn it pakket libpam-pkcs11 nut ynbegrepen pkcs11_eventmgr, wêrtroch jo ferskate aksjes kinne útfiere as PKCS # 11-eveneminten foarkomme.
Foar ynstellings pkcs11_eventmgr tsjinnet as konfiguraasjetriem: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Foar ferskate Linux-distribúsjes sil it kommando dat feroarsaket dat in akkount wurdt beskoattele as in smart card of token wurdt fuortsmiten, ferskille. Cm. event card_remove.
In foarbyld fan konfiguraasjetriem wurdt hjirûnder werjûn:

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

Dêrnei foegje de applikaasje ta pkcs11_eventmgr opstarten. Om dit te dwaan, bewurkje de .bash_profile triem:
$ nano /home/<имя_пользователя>/.bash_profile
Foegje de line pkcs11_eventmgr ta oan 'e ein fan it bestân en opnij starte.

De beskreaune stappen foar it ynstellen fan it bestjoeringssysteem kinne brûkt wurde as ynstruksjes yn elke moderne Linux-distribúsje, ynklusyf ynlânske.

Hoe kinne jo PAM-modules brûke foar lokale autentikaasje yn Linux mei GOST-2012-kaaien op Rutoken

konklúzje

Linux-pc's wurde hieltyd populêrder yn Russyske regearingsynstânsjes, en it opsetten fan betroubere twa-faktor-autentikaasje yn dit OS is net altyd maklik. Wy helpe jo graach it "wachtwurdprobleem" op te lossen mei dizze hantlieding en beskermje tagong ta jo PC betrouber sûnder in protte tiid oan te besteegjen.

Boarne: www.habr.com

Add a comment