Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

Okwuntughe dị mfe adịghị echekwabara, yana ndị mgbagwoju anya agaghị ekwe omume icheta. Ọ bụ ya mere ha ji ejedebe na ndetu nnyapade n'okpuru kiiboodu ma ọ bụ na ihe nleba anya. Iji hụ na okwuntughe dị n'uche nke ndị ọrụ "na-echefu" na ntụkwasị obi nke nchebe adịghị efu, enwere nkwenye abụọ (2FA).

N'ihi nchikota nke inwe ngwaọrụ na ịmara PIN ya, PIN n'onwe ya nwere ike ịdị mfe ma dị mfe icheta. Akwụsịghị ọghọm dị n'ogologo PIN ma ọ bụ enweghị usoro site na ihe onwunwe chọrọ yana mmachi dị na ike brute PIN.

Na mgbakwunye, ọ na-eme na ụlọ ọrụ gọọmentị na ha chọrọ ka ihe niile na-arụ ọrụ dịka GOST si dị. A ga-atụle nhọrọ 2FA a maka ịbanye na Linux. M ga-esi n'ebe dị anya malite.

PAM modul

Pluggable Authentication Modules (PAM) bụ modul nwere API ọkọlọtọ yana mmejuputa usoro nyocha dị iche iche na ngwa.
Ngwa niile na ngwa ndị nwere ike ịrụ ọrụ na PAM bulite ha ma nwee ike iji ha maka njirimara onye ọrụ.
Na omume, ọ na-arụ ọrụ dị ka nke a: iwu nbanye na-akpọ PAM, nke na-eme nyocha niile dị mkpa site na iji modul akọwapụtara na faịlụ nhazi ma weghachite nsonaazụ azụ na iwu nbanye.

librtpam

Modul nke ụlọ ọrụ Aktiv mepụtara na-agbakwụnye nkwenye abụọ nke ndị ọrụ na-eji kaadị smart ma ọ bụ akara USB na-eji igodo asymmetric dị ka ụkpụrụ ọhụrụ nke cryptography ụlọ si dị.

Ka anyị leba anya n'ụkpụrụ nke ọrụ ya:

  • Ihe nrịbama ahụ na-echekwa asambodo onye ọrụ na igodo nzuzo ya;
  • A na-echekwa asambodo ahụ na ndekọ ụlọ onye ọrụ dịka ntụkwasị obi.

Usoro nyocha na-eme dị ka ndị a:

  1. Rutoken na-achọ asambodo nke onye ọrụ.
  2. Arịrịọ PIN akara ngosi.
  3. A na-abanye data na-enweghị usoro na igodo nzuzo ozugbo na mgbawa Rutoken.
  4. A na-enyocha mbinye aka nke pụta site na iji igodo ọha sitere na asambodo onye ọrụ.
  5. Modul ahụ na-eweghachite nsonaazụ nkwenye mbinye aka na ngwa ọkpụkpọ.

Ị nwere ike nyochaa site na iji GOST R 34.10-2012 igodo (ogologo 256 ma ọ bụ 512 ibe n'ibe) ma ọ bụ ihe ochie GOST R 34.10-2001.

Don'tkwesighi ichegbu onwe gị maka nchekwa nke igodo - a na-emepụta ha ozugbo na Rutoken ma ghara ịhapụ ebe nchekwa ya n'oge ọrụ cryptographic.

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

Rutoken EDS 2.0 bụ nke FSB na FSTEC kwadoro dịka NDV 4, ya mere enwere ike iji ya na sistemụ ozi na-ahazi ozi nzuzo.

Ojiji bara uru

Ihe fọrọ nke nta ka ọ bụrụ Linux ọgbara ọhụrụ ga-eme, dịka ọmụmaatụ, anyị ga-eji xUbuntu 18.10.

1) Wụnye ngwugwu ndị dị mkpa

sudo apt-get install libccid pcscd opensc
Ọ bụrụ na ịchọrọ ịgbakwunye mkpọchi desktọpụ na ihe nchekwa ihuenyo, tinyekwa ngwugwu ahụ libpam-pkcs11.

2) Tinye modul PAM na nkwado GOST

Na-ebunye ọba akwụkwọ si https://download.rutoken.ru/Rutoken/PAM/
Detuo ọdịnaya nke nchekwa PAM librtpam.so.1.0.0 na nchekwa sistemụ
/usr/lib/ ma ọ bụ /usr/lib/x86_64-linux-gnu/ma ọ bụ /usr/lib64

3) Wụnye ngwugwu na lirtpkcs11ecp.so

Budata ma wụnye ngwugwu DEB ma ọ bụ RPM site na njikọ ahụ: https://www.rutoken.ru/support/download/pkcs/

4) Lelee na Rutoken EDS 2.0 na-arụ ọrụ na sistemụ

Na njedebe anyị na-eme ihe
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ọ bụrụ na ị na-ahụ ahịrị Rutoken ECP <no label> - ọ pụtara na ihe niile dị mma.

5) Gụọ akwụkwọ ahụ

Na-enyocha na ngwaọrụ ahụ nwere asambodo
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ọ bụrụ na mgbe akara:
Using slot 0 with a present token (0x0)

  • a na-egosipụta ozi banyere igodo na asambodo, ịkwesịrị ịgụ akwụkwọ ma chekwaa ya na diski. Iji mee nke a, mee iwu na-esonụ, ebe kama iji {id} ị ga-eji dochie ID asambodo ị hụrụ na mmepụta nke iwu gara aga:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ọ bụrụ na emepụtara faịlụ cert.crt, gaba na nzọụkwụ 6).
  • ọnweghị ihe ọ bụla, mgbe ahụ ngwaọrụ bụ efu. Kpọtụrụ onye nchịkwa gị ma ọ bụ mepụta igodo na asambodo n'onwe gị site na isoro usoro na-esote.

5.1) Mepụta akwụkwọ nyocha

Ntị! Ụzọ akọwara maka imepụta igodo na asambodo dabara adaba maka nnwale na ebughị n'obi maka ojiji na ọnọdụ ọgụ. Iji mee nke a, ịkwesịrị iji igodo na asambodo ndị ụlọ ọrụ tụkwasịrị obi nke ụlọ ọrụ gị ma ọ bụ ikike asambodo nyere.
Emebere modul PAM iji kpuchido kọmpụta mpaghara ma emebere ya ka ọ rụọ ọrụ na obere ụlọ ọrụ. Ebe ọ bụ na ndị ọrụ dị ole na ole, onye nchịkwa nwere ike nyochaa nbibi nke asambodo ma jiri aka gbochie akaụntụ, yana oge nkwado nke asambodo. Modul PAM amabeghị ka esi enyocha asambodo site na iji CRL wee wulite ụdọ ntụkwasị obi.

Ụzọ dị mfe (site na ihe nchọgharị)

Iji nweta asambodo ule, jiri ọrụ webụ "Rutoken Registration Center". Usoro ahụ agaghị ewe ihe karịrị 5 nkeji.

Ụzọ geek (site na njikwa na ikekwe onye nchịkọta)

Lelee ụdị OpenSC
$ opensc-tool --version
Ọ bụrụ na ụdị ahụ erughị 0.20, melite ma ọ bụ wuo ya pkcs11-ngwaọrụ alaka na GOST-2012 nkwado site na GitHub anyị (n'oge mbipụta nke akụkọ a, ahapụbeghị 0.20) ma ọ bụ site na ngalaba isi nke isi ọrụ OpenSC n'oge na-adịghị anya. mee 8cf1e6f

Mepụta otu ụzọ igodo nwere paramita ndị a:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: ihe nchọpụta ihe (CKA_ID) dị ka ọnụọgụ mkpụrụedemede hex nwere ọnụọgụ abụọ sitere na tebụl ASCII. Jiri naanị koodu ASCII maka mkpụrụedemede enwere ike ibipụta, n'ihi na... Ọ ga-adị mkpa ịnyefe id na OpenSSL dị ka eriri. Dịka ọmụmaatụ, koodu ASCII "3132" dabara na eriri "12". Maka mma, ị nwere ike iji ọrụ ntanetị maka ịtụgharị eriri ka ọ bụrụ koodu ASCII.

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

Ọzọ anyị ga-emepụta asambodo. A ga-akọwa ụzọ abụọ n'okpuru: nke mbụ bụ site na CA (anyị ga-eji ule CAs), nke abụọ bụ aka aka ya. Iji mee nke a, ị ga-ebu ụzọ tinye ma hazie OpenSSL ụdị 1.1 ma ọ bụ mgbe e mesịrị ka ya na Rutoken rụọ ọrụ site na modul rtengine pụrụ iche site na iji ntuziaka. Ịwụnye na ịhazi OpenSSL.
Dịka ọmụmaatụ: maka '--id 3132' na OpenSSL ịkwesịrị ịkọwapụta'pkcs11:id=12".

Ị nwere ike iji ọrụ nke ule CA, nke enwere ọtụtụ, dịka ọmụmaatụ, lee, lee и lee, maka nke a anyị ga-emepụta arịrịọ maka asambodo

Nhọrọ ọzọ bụ inyefe umengwụ ma mepụta aka onwe ya
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Na-ebugote asambodo na ngwaọrụ
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Deba aha akwụkwọ na usoro

Gbaa mbọ hụ na asambodo gị dị ka faịlụ base64:

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

Ọ bụrụ na asambodo gị dị ka nke a:

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

Mgbe ahụ ịkwesịrị ịtụgharị akwụkwọ site na usoro DER ka ọ bụrụ usoro PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Anyị na-elele ọzọ na ihe niile dị n'usoro ugbu a.

Tinye asambodo na ndepụta nke asambodo ntụkwasị obi
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Ahịrị ikpeazụ na-echebe ndepụta nke asambodo ntụkwasị obi ka ndị ọrụ ndị ọzọ gbanwee na mberede ma ọ bụ kpachapụrụ anya. Nke a na-egbochi mmadụ ịgbakwunye asambodo ha ebe a ma nwee ike ịbanye na nnọchite gị.

7) Tọọ nkwenye

Ịtọlite ​​​​modul PAM anyị bụ ọkọlọtọ zuru oke ma mee ya n'otu ụzọ ahụ dịka ịtọlite ​​​​modul ndị ọzọ. Mepụta faịlụ /usr/share/pam-configs/rutoken-gost-pam nwere aha zuru oke nke modul, ma ọ na-enyere ya aka site na ndabara, mkpa nke modul, na njirimara njirimara.
Parampat njirimara nwere ihe achọrọ maka ịga nke ọma nke ọrụ:

  • achọrọ: Modul ndị dị otú ahụ ga-eweghachi nzaghachi dị mma. Ọ bụrụ na nsonaazụ oku modul nwere nzaghachi na-adịghị mma, nke a ga-ebute njehie nyocha. A ga-ahapụ arịrịọ ahụ, mana a ga-akpọ modulu ndị fọdụrụ.
  • chọrọ: Yiri nke achọrọ, mana ọ daa ozugbo nyocha wee leghara modul ndị ọzọ anya.
  • ezuru: Ọ bụrụ na ọ nweghị nke achọrọ ma ọ bụ zuru ezu modul tupu ụdị modul ahụ weghachite nsonaazụ na-adịghị mma, mgbe ahụ modul ga-eweghachi nzaghachi dị mma. A ga-eleghara modul ndị fọdụrụ anya.
  • nhọrọ: Ọ bụrụ na ọ dịghị modul achọrọ na nchịkọta ma ọ dịghị nke ọ bụla n'ime modul zuru ezu na-eweghachi ihe dị mma, mgbe ahụ, ọ dịkarịa ala otu n'ime modulu nhọrọ ga-eweghachite nsonaazụ dị mma.

Ọdịnaya faịlụ zuru ezu /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

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

chekwaa faịlụ ahụ, wee mebie ya
$ sudo pam-auth-update
na mpio nke na-egosi, tinye akara nrịba ama n'akụkụ ya Rutoken PAM GOST wee pịa OK

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

8) Lelee ntọala

Iji ghọta na a na-ahazi ihe niile, ma n'otu oge ahụ agaghị efunahụ ikike ịbanye n'ime usoro ahụ, tinye iwu ahụ.
$ sudo login
Tinye aha njirimara gị. A na-ahazi ihe niile nke ọma ma ọ bụrụ na sistemụ chọrọ koodu PIN ngwaọrụ.

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

9) Hazie kọmpụta a ga-egbochi mgbe ewepụtara token

Agụnyere na ngwugwu libpam-pkcs11 akụrụngwa gụnyere pkcs11_eventmgr, nke na-enye gị ohere ịme omume dị iche iche mgbe ihe omume PKCS#11 mere.
Maka ntọala pkcs11_eventmgr na-eje ozi dị ka faịlụ nhazi: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Maka nkesa Linux dị iche iche, iwu na-eme ka akpọchie akaụntụ mgbe ewepụchara kaadị smart ma ọ bụ akara ga-adị iche. Cm. event card_remove.
Egosiri faịlụ nhazi ihe atụ n'okpuru:

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

Mgbe ahụ tinye ngwa pkcs11_eventmgr ibido. Iji mee nke a, dezie faịlụ .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Tinye pkcs11_eventmgr ahịrị na njedebe nke faịlụ wee malitegharịa.

Enwere ike iji usoro akọwapụtara maka ịtọlite ​​​​sistemu arụ ọrụ dị ka ntuziaka na nkesa Linux ọgbara ọhụrụ, gụnyere nke ụlọ.

Otu esi eji modul PAM maka nyocha mpaghara na Linux site na iji igodo GOST-2012 na Rutoken

nkwubi

Linux PC na-aghọwanye ewu ewu na ụlọ ọrụ gọọmentị Russia, na ịmepụta njirimara ihe abụọ a pụrụ ịdabere na ya na OS a anaghị adị mfe mgbe niile. Anyị ga-enwe obi ụtọ inyere gị aka dozie nsogbu okwuntughe site na ntuziaka a ma chekwaa ntụkwasị obi ịnweta PC gị na-etinyeghị oge dị ukwuu na ya.

isi: www.habr.com

Tinye a comment