ʻ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:
- Huli ʻo Rutoken i ka palapala pilikino o ka mea hoʻohana.
- Noi ʻia ka PIN hōʻailona.
- Hoʻopaʻa inoa ʻia ka ʻikepili random ma ke kī pilikino ma ka chip Rutoken.
- 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.
- 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.
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
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:
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
ʻ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
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
$ ./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.
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,
ʻ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:
Inā penei kāu palapala hōʻoia:
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
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
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.
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.
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