Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

Il-passwords sempliċi mhumiex sikuri, u dawk kumplessi huma impossibbli li tiftakar. Huwa għalhekk li ħafna drabi jispiċċaw fuq nota li twaħħal taħt it-tastiera jew fuq il-monitor. Biex jiġi żgurat li l-passwords jibqgħu fl-imħuħ ta 'utenti "minsihom" u l-affidabilità tal-protezzjoni ma tintilifx, hemm awtentikazzjoni b'żewġ fatturi (2FA).

Minħabba l-kombinazzjoni ta 'pussess ta' apparat u jafu l-PIN tiegħu, il-PIN innifsu jista 'jkun aktar sempliċi u aktar faċli biex tiftakar. L-iżvantaġġi fit-tul tal-PIN jew ir-randomness huma kkumpensati mir-rekwiżit tal-pussess fiżiku u r-restrizzjonijiet fuq il-forza bruta tal-PIN.

Barra minn hekk, jiġri fl-aġenziji tal-gvern li jridu li kollox jaħdem skont GOST. Din l-għażla 2FA biex tidħol fil-Linux se tiġi diskussa. Nibda mill-bogħod.

Moduli PAM

Moduli ta 'Awtentikazzjoni Pluggable (PAM) huma moduli b'API standard u implimentazzjonijiet ta' diversi mekkaniżmi ta 'awtentikazzjoni fl-applikazzjonijiet.
L-utilitajiet u l-applikazzjonijiet kollha li jistgħu jaħdmu mal-PAM jtellgħuhom u jistgħu jużawhom għall-awtentikazzjoni tal-utent.
Fil-prattika, taħdem xi ħaġa bħal din: il-kmand tal-login isejjaħ PAM, li jwettaq il-kontrolli kollha meħtieġa billi juża l-moduli speċifikati fil-fajl tal-konfigurazzjoni u jirritorna r-riżultat lura lill-kmand tal-login.

librtpam

Il-modulu żviluppat mill-kumpanija Aktiv iżid awtentikazzjoni b'żewġ fatturi ta 'utenti li jużaw smart cards jew tokens USB li jużaw ċwievet asimmetriċi skont l-aħħar standards ta' kriptografija domestika.

Ejja nħarsu lejn il-prinċipju tat-tħaddim tiegħu:

  • It-token jaħżen iċ-ċertifikat tal-utent u ċ-ċavetta privata tiegħu;
  • Iċ-ċertifikat jiġi ffrankat fid-direttorju tad-dar tal-utent bħala fiduċja.

Il-proċess ta' awtentikazzjoni jseħħ kif ġej:

  1. Rutoken ifittex iċ-ċertifikat personali tal-utent.
  2. Il-PIN tat-token huwa mitlub.
  3. Id-dejta każwali hija ffirmata fuq iċ-ċavetta privata direttament fiċ-ċippa Rutoken.
  4. Il-firma li tirriżulta hija vverifikata bl-użu taċ-ċavetta pubblika miċ-ċertifikat tal-utent.
  5. Il-modulu jirritorna r-riżultat tal-verifika tal-firma lill-applikazzjoni tas-sejħa.

Tista' tivverifika billi tuża ċwievet GOST R 34.10-2012 (tul 256 jew 512 bit) jew il-GOST R 34.10-2001 skaduti.

M'għandekx għalfejn tinkwieta dwar is-sigurtà taċ-ċwievet - huma ġġenerati direttament f'Rutoken u qatt ma jħallu l-memorja tiegħu waqt operazzjonijiet kriptografiċi.

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

Rutoken EDS 2.0 huwa ċċertifikat mill-FSB u l-FSTEC skont NDV 4, għalhekk jista 'jintuża f'sistemi ta' informazzjoni li jipproċessaw informazzjoni kunfidenzjali.

Użu prattiku

Kważi kull Linux moderna se tagħmel, pereżempju se nużaw xUbuntu 18.10.

1) Installa l-pakketti meħtieġa

sudo apt-get install libccid pcscd opensc
Jekk trid iżżid lock tad-desktop bi screensaver, installa l-pakkett addizzjonalment libpam-pkcs11.

2) Żid modulu PAM b'appoġġ GOST

Tagħbija tal-librerija minn https://download.rutoken.ru/Rutoken/PAM/
Ikkopja l-kontenut tal-folder PAM librtpam.so.1.0.0 fil-folder tas-sistema
/usr/lib/ jew /usr/lib/x86_64-linux-gnu/jew /usr/lib64

3) Installa l-pakkett b'librtpkcs11ecp.so

Niżżel u installa l-pakkett DEB jew RPM mill-link: https://www.rutoken.ru/support/download/pkcs/

4) Iċċekkja li Rutoken EDS 2.0 jaħdem fis-sistema

Fit-terminal aħna tesegwixxi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Jekk tara l-linja Rutoken ECP <no label> - dan ifisser kollox huwa OK.

5) Aqra ċ-ċertifikat

Iċċekkja li l-apparat għandu ċertifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Jekk wara l-linja:
Using slot 0 with a present token (0x0)

  • tintwera informazzjoni dwar ċwievet u ċertifikati, għandek bżonn taqra ċ-ċertifikat u ssejvjah fuq disk. Biex tagħmel dan, ħaddem il-kmand li ġej, fejn minflok {id} għandek bżonn tissostitwixxi l-ID taċ-ċertifikat li rajt fl-output tal-kmand preċedenti:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Jekk il-fajl cert.crt inħoloq, ipproċedi għall-pass 6).
  • m'hemm xejn, allura l-apparat ikun vojt. Ikkuntattja lill-amministratur tiegħek jew oħloq iċ-ċwievet u ċ-ċertifikat lilek innifsek billi ssegwi l-pass li jmiss.

5.1) Oħloq ċertifikat tat-test

Attenzjoni! Il-metodi deskritti għall-ħolqien ta 'ċwievet u ċertifikati huma adattati għall-ittestjar u mhumiex maħsuba għall-użu fil-mod ta' ġlieda. Biex tagħmel dan, trid tuża ċwievet u ċertifikati maħruġa mill-awtorità ta' ċertifikazzjoni fdata tal-organizzazzjoni tiegħek jew awtorità ta' ċertifikazzjoni akkreditata.
Il-modulu PAM huwa ddisinjat biex jipproteġi kompjuters lokali u huwa ddisinjat biex jaħdem f'organizzazzjonijiet żgħar. Peress li hemm ftit utenti, l-Amministratur jista 'jissorvelja r-revoka taċ-ċertifikati u jimblokka manwalment il-kontijiet, kif ukoll il-perjodu ta' validità taċ-ċertifikati. Il-modulu PAM għadu ma jafx kif jivverifika ċ-ċertifikati billi juża CRLs u jibni ktajjen ta' fiduċja.

Il-mod faċli (permezz tal-browser)

Biex tikseb ċertifikat tat-test, uża servizz tal-web "Ċentru ta' Reġistrazzjoni Rutoken". Il-proċess se jieħu mhux aktar minn 5 minuti.

Il-mod tal-geek (permezz tal-console u possibbilment il-kompilatur)

Iċċekkja l-verżjoni OpenSC
$ opensc-tool --version
Jekk il-verżjoni hija inqas minn 0.20, imbagħad aġġorna jew ibni fergħa pkcs11-għodda b'appoġġ GOST-2012 minn GitHub tagħna (fil-ħin tal-pubblikazzjoni ta 'dan l-artikolu, ir-rilaxx 0.20 għadu ma ġiex rilaxxat) jew mill-fergħa prinċipali tal-proġett prinċipali OpenSC mhux aktar tard jikkommettu 8cf1e6f

Iġġenera par ta 'ċavetta bil-parametri li ġejjin:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identifikatur tal-oġġett (CKA_ID) bħala numri ta' karattri hex b'żewġ ċifri mit-tabella ASCII. Uża biss kodiċi ASCII għal karattri stampabbli, għaliex... id se jeħtieġ li jiġi mgħoddi lil OpenSSL bħala string. Pereżempju, il-kodiċi ASCII "3132" jikkorrispondi għas-sekwenza "12". Għall-konvenjenza, tista 'tuża servizz onlajn għall-konverżjoni ta' kordi għal kodiċijiet ASCII.

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

Sussegwentement noħolqu ċertifikat. Żewġ modi se jiġu deskritti hawn taħt: l-ewwel huwa permezz ta 'CA (se nużaw CAs tat-test), it-tieni huwa ffirmat waħdu. Biex tagħmel dan, l-ewwel trid tinstalla u tikkonfigura OpenSSL verżjoni 1.1 jew aktar tard biex taħdem ma 'Rutoken permezz ta' modulu rtengine speċjali billi tuża l-manwal. Installazzjoni u konfigurazzjoni ta' OpenSSL.
Per eżempju: għal '--id 3132' f'OpenSSL trid tispeċifika "pkcs11:id=12".

Tista' tuża s-servizzi ta' CA tat-test, li minnhom hemm ħafna, pereżempju, hawn, hawn и hawn, għal dan se noħolqu talba għal ċertifikat

Għażla oħra hija li tagħti fil-għażż u toħloq awto-firma
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Tlugħ taċ-ċertifikat fuq l-apparat
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Irreġistra ċ-ċertifikat fis-sistema

Kun żgur li ċ-ċertifikat tiegħek jidher qisu fajl base64:

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

Jekk iċ-ċertifikat tiegħek jidher bħal dan:

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

imbagħad trid tikkonverti ċ-ċertifikat mill-format DER għal format PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Aħna nerġgħu niċċekkjaw li kollox huwa fl-ordni issa.

Żid iċ-ċertifikat mal-lista ta 'ċertifikati ta' fiduċja
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

L-aħħar linja tipproteġi l-lista ta 'ċertifikati fdati milli jiġu mibdula aċċidentalment jew intenzjonalment minn utenti oħra. Dan jipprevjeni lil xi ħadd milli jżid iċ-ċertifikat tiegħu hawn u li jkun jista' jidħol f'ismek.

7) Twaqqaf l-awtentikazzjoni

It-twaqqif tal-modulu PAM tagħna huwa kompletament standard u jsir eżattament bl-istess mod bħall-istabbiliment ta 'moduli oħra. Oħloq għall-fajl /usr/share/pam-configs/rutoken-gost-pam li jkun fih l-isem sħiħ tal-modulu, kemm jekk huwa attivat awtomatikament, il-prijorità tal-modulu, u parametri ta 'awtentikazzjoni.
Il-parametri tal-awtentikazzjoni fihom rekwiżiti għas-suċċess tal-operazzjoni:

  • meħtieġa: Moduli bħal dawn għandhom jirritornaw rispons pożittiv. Jekk ir-riżultat ta' sejħa ta' modulu jkun fih rispons negattiv, dan jirriżulta fi żball ta' awtentikazzjoni. It-talba se titwarrab, iżda l-moduli li fadal se jissejħu.
  • meħtieġ: Simili għal meħtieġ, iżda immedjatament jonqos l-awtentikazzjoni u jinjora moduli oħra.
  • biżżejjed: Jekk l-ebda wieħed mill-moduli meħtieġa jew suffiċjenti qabel tali modulu ma rritorna riżultat negattiv, allura l-modulu se jirritorna rispons pożittiv. Il-moduli li fadal se jiġu injorati.
  • fakultattiv: Jekk ma jkun hemm l-ebda moduli meħtieġa fuq il-munzell u l-ebda modulu suffiċjenti ma jirritorna riżultat pożittiv, allura mill-inqas wieħed mill-moduli fakultattivi għandu jirritorna riżultat pożittiv.

Kontenut sħiħ tal-fajl /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

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

ħlief il-fajl, imbagħad tesegwixxi
$ sudo pam-auth-update
fit-tieqa li tidher, poġġi asterisk ħdejha Rutoken PAM GOST u kklikkja OK

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

8) Iċċekkja s-settings

Biex tifhem li kollox huwa kkonfigurat, iżda fl-istess ħin ma titlifx il-ħila li tidħol fis-sistema, daħħal il-kmand
$ sudo login
Daħħal l-isem tal-utent tiegħek. Kollox huwa kkonfigurat b'mod korrett jekk is-sistema teħtieġ kodiċi PIN tal-apparat.

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

9) Ikkonfigura l-kompjuter biex jiġi mblukkat meta t-token jiġi estratt

Inkluż fil-pakkett libpam-pkcs11 utilità inkluża pkcs11_eventmgr, li jippermettilek twettaq diversi azzjonijiet meta jseħħu avvenimenti PKCS#11.
Għal settings pkcs11_eventmgr iservi bħala fajl ta' konfigurazzjoni: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Għal distribuzzjonijiet Linux differenti, il-kmand li jikkawża li kont jissakkar meta titneħħa smart card jew token se jkun differenti. Cm. event card_remove.
Eżempju ta' fajl ta' konfigurazzjoni jidher hawn taħt:

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

Wara dan żid l-applikazzjoni pkcs11_eventmgr għall-istartjar. Biex tagħmel dan, editja l-fajl .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Żid il-linja pkcs11_eventmgr fl-aħħar tal-fajl u reboot.

Il-passi deskritti għat-twaqqif tas-sistema operattiva jistgħu jintużaw bħala struzzjonijiet fi kwalunkwe distribuzzjoni Linux moderna, inklużi dawk domestiċi.

Kif tuża moduli PAM għall-awtentikazzjoni lokali fil-Linux billi tuża ċwievet GOST-2012 fuq Rutoken

Konklużjoni

PCs Linux qed isiru dejjem aktar popolari fl-aġenziji tal-gvern Russu, u t-twaqqif ta 'awtentikazzjoni affidabbli b'żewġ fatturi f'dan l-OS mhux dejjem faċli. Inkunu kuntenti li ngħinuk issolvi l-"problema tal-password" b'din il-gwida u nipproteġu b'mod affidabbli l-aċċess għall-PC tiegħek mingħajr ma tonfoq ħafna ħin fuqha.

Sors: www.habr.com

Żid kumment