Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

ʻAʻole paʻa nā ʻōlelo huna maʻalahi, a ʻaʻole hiki ke hoʻomanaʻo ʻia nā mea paʻakikī. ʻO ia ke kumu e hoʻopau pinepine ai lākou i kahi leka paʻa ma lalo o ka papa keyboard a i ʻole ma ka monitor. No ka hōʻoia ʻana i ka waiho ʻana o nā huaʻōlelo i loko o ka manaʻo o nā mea hoʻohana "poina" a ʻaʻole nalowale ka hilinaʻi o ka pale, aia ʻelua-factor authentication (2FA).

Ma muli o ka hui pū ʻana o ka loaʻa ʻana o kahi hāmeʻa a me ka ʻike ʻana i kāna PIN, hiki i ka PIN ponoʻī ke maʻalahi a maʻalahi hoʻi e hoʻomanaʻo. Hoʻopau ʻia nā hemahema o ka lōʻihi o PIN a i ʻole ka randomness e ka pono o ka waiwai kino a me nā kaohi i ka PIN brute force.

Eia kekahi, hiki i nā keʻena aupuni ke makemake lākou e hana nā mea āpau e like me GOST. E kūkākūkā ʻia kēia koho 2FA no ke komo ʻana i Linux. E hoʻomaka wau mai kahi mamao aku.

PAM modules

Pluggable Authentication Modules (PAM) he mau modula me kahi API maʻamau a me ka hoʻokō ʻana i nā ʻano hana hōʻoia like ʻole i nā noi.
ʻO nā pono āpau a me nā noi e hiki ke hana pū me PAM e kiʻi iā lākou a hiki ke hoʻohana iā lākou no ka hōʻoia ʻana o ka mea hoʻohana.
Ma ka hoʻomaʻamaʻa, hana ia e like me kēia: kāhea ke kauoha login PAM, e hana ana i nā loiloi pono āpau me ka hoʻohana ʻana i nā modules i kuhikuhi ʻia i ka faila hoʻonohonoho a hoʻihoʻi i ka hopena i ke kauoha login.

librtpam

Hoʻohui ka module i hoʻomohala ʻia e ka hui ʻo Aktiv i ka hōʻoia ʻelua kumu o nā mea hoʻohana e hoʻohana ana i nā kāleka akamai a i ʻole nā ​​hōʻailona USB e hoʻohana ana i nā kī asymmetric e like me nā kūlana hou o ka cryptography home.

E nānā kākou i ke kumu o kāna hana:

  • Mālama ka token i ka palapala hōʻoia o ka mea hoʻohana a me kāna kī pilikino;
  • Mālama ʻia ka palapala hōʻoia ma ka papa kuhikuhi home o ka mea hoʻohana e like me ka hilinaʻi.

ʻO ke kaʻina hana hōʻoia penei:

  1. Huli ʻo Rutoken i ka palapala pilikino o ka mea hoʻohana.
  2. Noi ʻia ka PIN hōʻailona.
  3. Hoʻopaʻa inoa ʻia ka ʻikepili random ma ke kī pilikino ma ka chip Rutoken.
  4. Ua hōʻoia ʻia ka pūlima i hoʻohana ʻia me ke kī lehulehu mai ka palapala hōʻoia o ka mea hoʻohana.
  5. Hoʻihoʻi ka module i ka hopena hōʻoia hōʻailona i ka palapala kelepona.

Hiki iā ʻoe ke hōʻoia me ka hoʻohana ʻana i nā kī GOST R 34.10-2012 (lōʻihi 256 a i ʻole 512 bits) a i ʻole GOST R 34.10-2001 kahiko.

ʻAʻole ʻoe e hopohopo e pili ana i ka palekana o nā kī - ua hana pololei ʻia lākou ma Rutoken a ʻaʻole haʻalele i kona hoʻomanaʻo i ka wā o nā hana cryptographic.

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

Ua hōʻoia ʻia ʻo Rutoken EDS 2.0 e ka FSB a me FSTEC e like me NDV 4, no laila hiki ke hoʻohana ʻia i nā ʻōnaehana ʻike e hoʻoponopono i ka ʻike huna.

Hoʻohana maʻamau

Ma kahi kokoke i nā Linux hou e hana, no ka laʻana e hoʻohana mākou i xUbuntu 18.10.

1) E hoʻouka i nā pūʻolo pono

sudo apt-get install libccid pcscd opensc
Inā makemake ʻoe e hoʻohui i ka laka pākaukau me kahi pale pale, e hoʻokomo pū i ka pūʻolo libpam-pkcs11.

2) Hoʻohui i kahi module PAM me ke kākoʻo GOST

Ke hoʻouka nei i ka waihona mai https://download.rutoken.ru/Rutoken/PAM/
E kope i nā mea o ka waihona PAM librtpam.so.1.0.0 i ka waihona ʻōnaehana
/usr/lib/ ai ole ia, /usr/lib/x86_64-linux-gnu/ai ole ia, /usr/lib64

3) E hoʻouka i ka pūʻolo me librtpkcs11ecp.so

Hoʻoiho a hoʻokomo i ka pūʻolo DEB a i ʻole RPM mai ka loulou: https://www.rutoken.ru/support/download/pkcs/

4) E nānā i ka hana ʻana o Rutoken EDS 2.0 i ka ʻōnaehana

Ma ka terminal mākou e hana ai
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Inā ʻike ʻoe i ka laina Rutoken ECP <no label> - ʻo ia hoʻi ua maikaʻi nā mea a pau.

5) Heluhelu i ka palapala

E hōʻoia ana he palapala hōʻoia ka mea
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Inā ma hope o ka laina:
Using slot 0 with a present token (0x0)

  • hōʻike ʻia ka ʻike e pili ana i nā kī a me nā palapala hōʻoia, pono ʻoe e heluhelu i ka palapala hōʻoia a mālama iā ia i ka disk. No ka hana ʻana i kēia, e holo i kēia kauoha, ma kahi o {id} pono ʻoe e hoʻololi i ka ID palapala āu i ʻike ai ma ka puka o ke kauoha mua:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Inā ua hana ʻia ka faila cert.crt, e hele i ka ʻanuʻu 6).
  • ʻaʻohe mea, a laila nele ka mea hana. E hoʻokaʻaʻike i kāu luna hoʻomalu a i ʻole e hana i nā kī a me ka palapala hōʻoia iā ʻoe iho ma ka hahai ʻana i ka pae aʻe.

5.1) E hana i kahi palapala hōʻoia

Nānā! ʻO nā ala i wehewehe ʻia no ka hana ʻana i nā kī a me nā palapala hōʻoia kūpono no ka hoʻāʻo ʻana a ʻaʻole i manaʻo ʻia no ka hoʻohana ʻana i ke ʻano hakakā. No ka hana ʻana i kēia, pono ʻoe e hoʻohana i nā kī a me nā palapala hōʻoia i hāʻawi ʻia e ka mana hōʻoia hilinaʻi o kāu hui a i ʻole kahi mana hōʻoia i ʻae ʻia.
Hoʻolālā ʻia ka module PAM e pale i nā kamepiula kūloko a ua hoʻolālā ʻia e hana i nā hui liʻiliʻi. Ma muli o ka liʻiliʻi o nā mea hoʻohana, hiki i ka Luna Hoʻokele ke nānā i ka hoʻopau ʻana i nā palapala hōʻoia a hoʻopaʻa lima i nā moʻokāki, a me ka manawa kūpono o nā palapala hōʻoia. ʻAʻole ʻike ka module PAM pehea e hōʻoia ai i nā palapala hōʻoia me ka hoʻohana ʻana i nā CRL a kūkulu i nā kaulahao hilinaʻi.

ʻO ke ala maʻalahi (ma o ka polokalamu kele pūnaewele)

No ka loaʻa ʻana o kahi palapala hōʻoia, hoʻohana lawelawe pūnaewele "Rutoken Registration Center". ʻAʻole ʻoi aku ka lōʻihi o ke kaʻina hana ma mua o 5 mau minuke.

ʻO ke ala o ka geek (ma o ka console a me ka mea hoʻopili paha)

E nānā i ka mana OpenSC
$ opensc-tool --version
Inā emi ka mana ma mua o 0.20, a laila hoʻohou a kūkulu paha pkcs11-mea hana lala me ke kākoʻo GOST-2012 mai kā mākou GitHub (i ka manawa i paʻi ʻia ai kēia ʻatikala, ʻaʻole i hoʻokuʻu ʻia ka 0.20) a i ʻole mai ka lālā kumu o ka papahana OpenSC nui ma hope. hana 8cf1e6f

E hana i kahi hui kī me kēia mau ʻāpana:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: mea hōʻike (CKA_ID) ma ke ʻano he helu ʻelua huahelu hex mai ka papa ASCII. E hoʻohana wale i nā code ASCII no nā huapalapala hiki ke paʻi ʻia, no ka mea... Pono e hāʻawi ʻia ka id i OpenSSL ma ke ʻano he kaula. No ka laʻana, pili ka code ASCII "3132" i ke kaula "12". No ka maʻalahi, hiki iā ʻoe ke hoʻohana lawelawe pūnaewele no ka hoʻololi ʻana i nā kaula i nā code ASCII.

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

A laila e hana mākou i palapala hōʻoia. ʻElua ala e wehewehe ʻia ma lalo nei: ʻo ka mua ma o kahi CA (e hoʻohana mākou i nā CA hoʻāʻo), ʻo ka lua o ka pūlima ponoʻī. No ka hana ʻana i kēia, pono ʻoe e hoʻokomo a hoʻonohonoho i ka OpenSSL version 1.1 a i ʻole ma hope e hana pū me Rutoken ma o kahi module rtengine kūikawā e hoʻohana ana i ka manual. Ke kau ʻana a me ka hoʻonohonoho ʻana iā OpenSSL.
No ka laʻana: no '--id 3132' ma OpenSSL pono ʻoe e kuhikuhi "pkcs11:id=12".

Hiki iā ʻoe ke hoʻohana i nā lawelawe o kahi hoʻāʻo CA, a he nui, no ka laʻana, aia hoʻi, aia hoʻi и aia hoʻi, no kēia e hana mākou i kahi noi no kahi palapala hōʻoia

ʻO kahi koho ʻē aʻe ʻo ka hāʻawi ʻana i ka palaualelo a hana i kahi pūlima ponoʻī
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Ke hoʻouka ʻana i ka palapala hōʻoia i ka hāmeʻa
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) E hoʻopaʻa inoa i ka palapala hōʻoia ma ka ʻōnaehana

E hōʻoia i kāu palapala hōʻoia e like me kahi waihona base64:

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

Inā penei kāu palapala hōʻoia:

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

a laila pono ʻoe e hoʻololi i ka palapala hōʻoia mai ka format DER i ka format PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ke nānā hou nei mākou i nā mea a pau i kēia manawa.

Hoʻohui i ka palapala hōʻoia i ka papa inoa o nā palapala hilinaʻi
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Mālama ka laina hope i ka papa inoa o nā palapala i hilinaʻi ʻia mai ka hoʻololi ʻole ʻia ʻana a i ʻole hoʻololi ʻia e nā mea hoʻohana ʻē aʻe. Mālama kēia i kekahi mai ka hoʻohui ʻana i kā lākou palapala hōʻoia ma ʻaneʻi a hiki iā ia ke komo i loko o kou inoa.

7) Hoʻonohonoho i ka hōʻoia

ʻO ka hoʻonohonoho ʻana i kā mākou module PAM he mea maʻamau a hana ʻia e like me ka hoʻonohonoho ʻana i nā modula ʻē aʻe. Hana i ka waihona /usr/share/pam-configs/rutoken-gost-pam Loaʻa ka inoa piha o ka module, inā paha i hoʻohana ʻia ma ka paʻamau, ka mea nui o ka module, a me nā ʻāpana hōʻoia.
Aia nā ʻāpana hōʻoia i nā koi no ka holomua o ka hana:

  • pono: Pono ia mau modula e hoʻihoʻi i ka pane maikaʻi. Inā loaʻa i ka hopena o ke kelepona module kahi pane maikaʻi ʻole, e hopena kēia i kahi hewa hōʻoia. E hoʻokuʻu ʻia ka noi, akā e kāhea ʻia nā modula i koe.
  • pono: E like me ka mea i koi ʻia, akā hāʻule koke ka hōʻoia ʻana a nānā ʻole i nā modula ʻē aʻe.
  • lawa: Inā ʻaʻohe o nā modula i koi ʻia a lawa paha ma mua o ka hoʻihoʻi ʻana o ia module i kahi hopena maikaʻi ʻole, a laila e hoʻihoʻi ka module i kahi pane maikaʻi. E nānā ʻole ʻia nā modula i koe.
  • koho: Inā ʻaʻohe modules i koi ʻia ma ka waihona a ʻaʻohe o nā modules lawa e hoʻihoʻi i kahi hopena maikaʻi, a laila pono e hoʻihoʻi i kahi o nā modula koho i kahi hopena maikaʻi.

Nā waihona waihona piha /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

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

mālama i ka faila, a laila hoʻokō
$ sudo pam-auth-update
i ka puka aniani e kū mai ana, e kau i kahi asterisk ma ka ʻaoʻao ʻO Rutoken PAM GOST a kaomi OK

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

8) E nānā i nā hoʻonohonoho

No ka hoʻomaopopoʻana ua hoʻonohonohoʻia nā mea a pau, akā i ka manawa likeʻole e nalowale ka hiki ke komo i loko o ka pūnaewele, e komo i ke kauoha
$ sudo login
E hoʻokomo i kāu mea hoʻohana. Hoʻonohonoho pono ʻia nā mea āpau inā makemake ka ʻōnaehana i kahi code PIN.

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

9) E hoʻopaʻa i ke kamepiula i ka wā i unuhi ʻia ai ka hōʻailona

Hoʻokomo ʻia i loko o ka pūʻolo libpam-pkcs11 hoʻohana pū ʻia pkcs11_eventmgr, hiki iā ʻoe ke hana i nā hana like ʻole ke kū mai nā hanana PKCS#11.
No nā hoʻonohonoho pkcs11_eventmgr lawelawe ʻia ma ke ʻano he faila hoʻonohonoho: /etc/pam_pkcs11/pkcs11_eventmgr.conf
No nā māhele Linux like ʻole, ʻokoʻa ke kauoha e hoʻopaʻa ʻia kahi moʻokāki ke wehe ʻia kahi kāleka akamai a i ʻole hōʻailona. Cm. event card_remove.
Hōʻike ʻia kahi faila hoʻonohonoho hoʻohālike ma lalo nei:

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

Ma hope o kēlā hoʻohui i ka noi pkcs11_eventmgr e hoʻomaka. No ka hana ʻana i kēia, hoʻoponopono i ka faila .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Hoʻohui i ka laina pkcs11_eventmgr i ka hope o ka faila a hoʻomaka hou.

Hiki ke hoʻohana ʻia nā ʻanuʻu i wehewehe ʻia no ka hoʻonohonoho ʻana i ka ʻōnaehana hana e like me nā ʻōlelo aʻoaʻo i nā hoʻolaha Linux hou, me nā mea kūloko.

Pehea e hoʻohana ai i nā modula PAM no ka hōʻoia kūloko ma Linux me ka hoʻohana ʻana i nā kī GOST-2012 ma Rutoken

hopena

Ke ulu nui nei nā PC Linux ma nā keʻena aupuni o Rūsia, a ʻaʻole maʻalahi ka hoʻonohonoho ʻana i ka hōʻoia ʻelua kumu i kēia OS. E hauʻoli mākou e kōkua iā ʻoe e hoʻoponopono i ka "pilikia password" me kēia alakaʻi a pale pono i ke komo ʻana i kāu PC me ka ʻole o ka hoʻolilo ʻana i ka manawa nui.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka