Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

Ang mga simpleng password ay hindi secure, at ang mga kumplikado ay imposibleng matandaan. Iyon ang dahilan kung bakit madalas silang napupunta sa isang sticky note sa ilalim ng keyboard o sa monitor. Upang matiyak na ang mga password ay mananatili sa isipan ng mga "makakalimutin" na mga gumagamit at ang pagiging maaasahan ng proteksyon ay hindi mawawala, mayroong dalawang-factor na pagpapatunay (2FA).

Dahil sa kumbinasyon ng pagmamay-ari ng device at pag-alam sa PIN nito, ang PIN mismo ay maaaring maging mas simple at mas madaling matandaan. Ang mga kawalan sa haba ng PIN o randomness ay binabayaran ng pisikal na kinakailangan sa pagmamay-ari at mga paghihigpit sa PIN brute force.

Bilang karagdagan, nangyayari sa mga ahensya ng gobyerno na nais nilang gumana ang lahat ayon sa GOST. Ang pagpipiliang 2FA na ito para sa pag-log in sa Linux ay tatalakayin. Magsisimula ako sa malayo.

Mga module ng PAM

Ang Pluggable Authentication Modules (PAM) ay mga module na may karaniwang API at mga pagpapatupad ng iba't ibang mekanismo ng pagpapatunay sa mga application.
Ang lahat ng mga utility at application na maaaring gumana sa PAM ay kunin ang mga ito at magagamit ang mga ito para sa pagpapatunay ng user.
Sa pagsasagawa, ito ay gumagana tulad nito: ang login command ay tumatawag sa PAM, na nagsasagawa ng lahat ng kinakailangang pagsusuri gamit ang mga module na tinukoy sa configuration file at ibinalik ang resulta pabalik sa login command.

librtpam

Ang module na binuo ng kumpanya ng Aktiv ay nagdaragdag ng two-factor authentication ng mga user gamit ang mga smart card o USB token gamit ang mga asymmetric key ayon sa pinakabagong mga pamantayan ng domestic cryptography.

Tingnan natin ang prinsipyo ng pagpapatakbo nito:

  • Iniimbak ng token ang certificate ng user at ang pribadong key nito;
  • Ang certificate ay naka-save sa home directory ng user bilang pinagkakatiwalaan.

Ang proseso ng pagpapatunay ay nangyayari tulad ng sumusunod:

  1. Hinahanap ng Rutoken ang personal na certificate ng user.
  2. Hinihiling ang token PIN.
  3. Ang random na data ay nilagdaan sa pribadong key nang direkta sa Rutoken chip.
  4. Ang resultang lagda ay na-verify gamit ang pampublikong susi mula sa sertipiko ng user.
  5. Ibinabalik ng module ang resulta ng pag-verify ng lagda sa application ng pagtawag.

Maaari mong patotohanan gamit ang GOST R 34.10-2012 key (haba 256 o 512 bits) o ang lumang GOST R 34.10-2001.

Hindi mo kailangang mag-alala tungkol sa seguridad ng mga susi - ang mga ito ay direktang nabuo sa Rutoken at hindi kailanman iniiwan ang memorya nito sa panahon ng mga cryptographic na operasyon.

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

Ang Rutoken EDS 2.0 ay pinatunayan ng FSB at FSTEC ayon sa NDV 4, samakatuwid maaari itong magamit sa mga sistema ng impormasyon na nagpoproseso ng kumpidensyal na impormasyon.

Praktikal na paggamit

Halos anumang modernong Linux ang gagawin, halimbawa, gagamitin namin ang xUbuntu 18.10.

1) I-install ang mga kinakailangang pakete

sudo apt-get install libccid pcscd opensc
Kung gusto mong magdagdag ng desktop lock na may screensaver, i-install din ang package libpam-pkcs11.

2) Magdagdag ng PAM module na may suporta sa GOST

Nilo-load ang library mula sa https://download.rutoken.ru/Rutoken/PAM/
Kopyahin ang mga nilalaman ng folder ng PAM na librtpam.so.1.0.0 sa folder ng system
/usr/lib/ o /usr/lib/x86_64-linux-gnu/o /usr/lib64

3) I-install ang package gamit ang librtpkcs11ecp.so

I-download at i-install ang DEB o RPM package mula sa link: https://www.rutoken.ru/support/download/pkcs/

4) Tingnan kung gumagana ang Rutoken EDS 2.0 sa system

Sa terminal kami nag-execute
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Kung nakikita mo ang linya Rutoken ECP <no label> - ibig sabihin ay okay na ang lahat.

5) Basahin ang sertipiko

Sinusuri kung ang aparato ay may sertipiko
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Kung pagkatapos ng linya:
Using slot 0 with a present token (0x0)

  • ipinapakita ang impormasyon tungkol sa mga susi at sertipiko, kailangan mong basahin ang sertipiko at i-save ito sa disk. Upang gawin ito, patakbuhin ang sumusunod na command, kung saan sa halip na {id} kailangan mong palitan ang certificate ID na nakita mo sa output ng nakaraang command:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Kung ang cert.crt file ay nagawa na, magpatuloy sa hakbang 6).
  • walang kahit ano, pagkatapos ay walang laman ang device. Makipag-ugnayan sa iyong administrator o ikaw mismo ang gumawa ng mga key at certificate sa pamamagitan ng pagsunod sa susunod na hakbang.

5.1) Lumikha ng sertipiko ng pagsubok

Pansin! Ang inilarawan na mga pamamaraan para sa paglikha ng mga susi at sertipiko ay angkop para sa pagsubok at hindi inilaan para sa paggamit sa mode ng labanan. Para magawa ito, kailangan mong gumamit ng mga key at certificate na ibinigay ng pinagkakatiwalaang awtoridad sa certification ng iyong organisasyon o ng isang accredited na awtoridad sa certification.
Ang module ng PAM ay idinisenyo upang protektahan ang mga lokal na computer at idinisenyo upang gumana sa maliliit na organisasyon. Dahil kakaunti ang mga user, masusubaybayan ng Administrator ang pagbawi ng mga certificate at manu-manong i-block ang mga account, pati na rin ang validity period ng mga certificate. Hindi pa alam ng module ng PAM kung paano i-verify ang mga certificate gamit ang mga CRL at bumuo ng mga chain of trust.

Ang madaling paraan (sa pamamagitan ng browser)

Para makakuha ng test certificate, gamitin serbisyo sa web na "Rutoken Registration Center". Ang proseso ay tatagal ng hindi hihigit sa 5 minuto.

Paraan ng geek (sa pamamagitan ng console at posibleng compiler)

Suriin ang bersyon ng OpenSC
$ opensc-tool --version
Kung ang bersyon ay mas mababa sa 0.20, pagkatapos ay i-update o bumuo pkcs11-tool branch na may suporta sa GOST-2012 mula sa aming GitHub (sa oras ng paglalathala ng artikulong ito, ang release 0.20 ay hindi pa nailalabas) o mula sa master branch ng pangunahing proyekto ng OpenSC sa ibang pagkakataon gumawa ng 8cf1e6f

Bumuo ng key pair na may mga sumusunod na parameter:
--key-type: GOSTR3410-2012-512:А (Π“ΠžΠ‘Π’-2012 512 Π±ΠΈΡ‚ c парамсСтом А), GOSTR3410-2012-256:A (Π“ΠžΠ‘Π’-2012 256 Π±ΠΈΡ‚ с парамсСтом A)

--id: object identifier (CKA_ID) bilang dalawang-digit na hex na numero ng character mula sa ASCII table. Gumamit lamang ng mga ASCII code para sa mga napi-print na character, dahil... id ay kailangang maipasa sa OpenSSL bilang isang string. Halimbawa, ang ASCII code na "3132" ay tumutugma sa string na "12". Para sa kaginhawahan, maaari mong gamitin online na serbisyo para sa pag-convert ng mga string sa mga ASCII code.

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

Susunod na gagawa kami ng isang sertipiko. Dalawang paraan ang ilalarawan sa ibaba: ang una ay sa pamamagitan ng CA (gagamitin namin ang mga pagsubok na CA), ang pangalawa ay self-signed. Upang gawin ito, kailangan mo munang i-install at i-configure ang bersyon ng OpenSSL 1.1 o mas bago upang gumana sa Rutoken sa pamamagitan ng isang espesyal na rtengine module gamit ang manual Pag-install at pag-configure ng OpenSSL.
Halimbawa: para sa '--id 3132' sa OpenSSL kailangan mong tukuyin ang "pkcs11:id=12".

Maaari mong gamitin ang mga serbisyo ng isang pagsubok na CA, kung saan marami, halimbawa, dito, dito ΠΈ dito, para dito gagawa kami ng kahilingan para sa isang sertipiko

Ang isa pang pagpipilian ay ang sumuko sa katamaran at lumikha ng isang self-signed
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Pag-upload ng certificate sa device
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Irehistro ang sertipiko sa system

Tiyaking mukhang base64 file ang iyong certificate:

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

Kung ganito ang hitsura ng iyong certificate:

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

pagkatapos ay kailangan mong i-convert ang certificate mula sa DER format sa PEM format (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Muli naming suriin na ang lahat ay nasa ayos na ngayon.

Idagdag ang certificate sa listahan ng mga pinagkakatiwalaang certificate
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Pinoprotektahan ng huling linya ang listahan ng mga pinagkakatiwalaang certificate mula sa hindi sinasadya o sinasadyang pagbabago ng ibang mga user. Pinipigilan nito ang isang tao na magdagdag ng kanilang sertipiko dito at makapag-log in sa ngalan mo.

7) I-set up ang pagpapatunay

Ang pag-set up ng aming module ng PAM ay ganap na pamantayan at ginagawa sa eksaktong parehong paraan tulad ng pagse-set up ng iba pang mga module. Lumikha upang mag-file /usr/share/pam-configs/rutoken-gost-pam naglalaman ng buong pangalan ng module, kung ito ay pinagana bilang default, ang priyoridad ng module, at mga parameter ng pagpapatunay.
Ang mga parameter ng pagpapatunay ay naglalaman ng mga kinakailangan para sa tagumpay ng operasyon:

  • kinakailangan: Ang mga naturang module ay dapat magbalik ng positibong tugon. Kung ang resulta ng isang module na tawag ay naglalaman ng negatibong tugon, magreresulta ito sa isang error sa pagpapatunay. Ang kahilingan ay ibababa, ngunit ang natitirang mga module ay tatawagin.
  • kinakailangan: Katulad ng kinakailangan, ngunit agad na nabigo sa pagpapatunay at hindi pinapansin ang iba pang mga module.
  • sapat: Kung wala sa mga kinakailangan o sapat na mga module bago ang naturang module ay nagbalik ng negatibong resulta, ang module ay magbabalik ng positibong tugon. Ang natitirang mga module ay hindi papansinin.
  • opsyonal: Kung walang kinakailangang mga module sa stack at wala sa mga sapat na module ang nagbabalik ng positibong resulta, dapat isa man lang sa mga opsyonal na module ang magbalik ng positibong resulta.

Buong nilalaman ng file /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

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

i-save ang file, pagkatapos ay i-execute
$ sudo pam-auth-update
sa lalabas na window, maglagay ng asterisk sa tabi nito Rutoken PAM GOST at i-click OK

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

8) Suriin ang mga setting

Upang maunawaan na ang lahat ay na-configure, ngunit sa parehong oras ay hindi mawawala ang kakayahang mag-log in sa system, ipasok ang command
$ sudo login
Ilagay ang iyong username. Na-configure nang tama ang lahat kung nangangailangan ang system ng PIN code ng device.

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

9) I-configure ang computer na ma-block kapag na-extract ang token

Kasama sa package libpam-pkcs11 kasama ang utility pkcs11_eventmgr, na nagbibigay-daan sa iyong magsagawa ng iba't ibang pagkilos kapag nangyari ang mga kaganapan sa PKCS#11.
Para sa mga setting pkcs11_eventmgr nagsisilbing configuration file: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Para sa iba't ibang distribusyon ng Linux, mag-iiba ang command na nagiging sanhi ng pag-lock ng isang account kapag inalis ang isang smart card o token. Cm. event card_remove.
Ang isang halimbawa ng configuration file ay ipinapakita sa ibaba:

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

Pagkatapos nito, idagdag ang application pkcs11_eventmgr sa startup. Upang gawin ito, i-edit ang .bash_profile file:
$ nano /home/<имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>/.bash_profile
Idagdag ang linyang pkcs11_eventmgr sa dulo ng file at i-reboot.

Ang mga inilarawang hakbang para sa pag-set up ng operating system ay maaaring gamitin bilang mga tagubilin sa anumang modernong pamamahagi ng Linux, kabilang ang mga domestic.

Paano gamitin ang mga module ng PAM para sa lokal na pagpapatunay sa Linux gamit ang GOST-2012 key sa Rutoken

Konklusyon

Ang mga Linux PC ay lalong nagiging popular sa mga ahensya ng gobyerno ng Russia, at ang pag-set up ng maaasahang two-factor authentication sa OS na ito ay hindi laging madali. Ikalulugod naming tulungan kang lutasin ang "problema sa password" sa gabay na ito at mapagkakatiwalaang protektahan ang pag-access sa iyong PC nang hindi gumugugol ng maraming oras dito.

Pinagmulan: www.habr.com

Magdagdag ng komento