Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

Ang yano nga mga password dili luwas, ug ang mga komplikado imposible nga mahinumduman. Mao nga kanunay sila nga naa sa usa ka sticky note sa ilawom sa keyboard o sa monitor. Aron masiguro nga ang mga password magpabilin sa mga hunahuna sa "makalimtan" nga mga tiggamit ug ang kasaligan sa proteksyon dili mawala, adunay duha ka hinungdan nga pag-authenticate (2FA).

Tungod sa kombinasyon sa pagpanag-iya sa usa ka device ug pagkahibalo sa PIN niini, ang PIN mismo mahimong mas simple ug mas sayon ​​hinumdoman. Ang mga disbentaha sa PIN nga gitas-on o randomness gibawi sa pisikal nga kinahanglanon sa pagpanag-iya ug mga pagdili sa PIN brute force.

Dugang pa, kini mahitabo sa mga ahensya sa gobyerno nga gusto nila nga ang tanan molihok sumala sa GOST. Kini nga opsyon sa 2FA alang sa pag-log in sa Linux pagahisgutan. Magsugod ko sa layo.

Mga module sa PAM

Ang Pluggable Authentication Modules (PAM) maoy mga module nga adunay standard API ug mga pagpatuman sa nagkalain-laing mekanismo sa authentication sa mga aplikasyon.
Ang tanan nga mga utilities ug mga aplikasyon nga makatrabaho sa PAM kuhaon kini ug magamit kini alang sa pag-authenticate sa user.
Sa praktis, kini molihok sama niini: ang login command nagtawag sa PAM, nga naghimo sa tanan nga gikinahanglan nga mga pagsusi gamit ang mga module nga gitakda sa configuration file ug ibalik ang resulta balik sa login command.

librtpam

Ang module nga gimugna sa kompanya nga Aktiv nagdugang sa duha ka hinungdan nga pag-authenticate sa mga tiggamit gamit ang mga smart card o USB token gamit ang mga asymmetric nga yawe sumala sa pinakabag-o nga mga sumbanan sa domestic cryptography.

Atong tan-awon ang prinsipyo sa operasyon niini:

  • Ang token nagtipig sa sertipiko sa tiggamit ug sa pribadong yawe niini;
  • Ang sertipiko gitipigan sa direktoryo sa balay sa tiggamit ingon nga kasaligan.

Ang proseso sa pag-authenticate mahitabo sama sa mosunod:

  1. Ang Rutoken nangita alang sa personal nga sertipiko sa tiggamit.
  2. Gihangyo ang token PIN.
  3. Ang random nga datos gipirmahan sa pribadong yawe direkta sa Rutoken chip.
  4. Ang resulta nga pirma gipamatud-an gamit ang publiko nga yawe gikan sa sertipiko sa tiggamit.
  5. Ibalik sa module ang resulta sa pag-verify sa pirma sa aplikasyon sa pagtawag.

Mahimo nimong pamatud-an gamit ang GOST R 34.10-2012 nga mga yawe (gitas-on 256 o 512 bits) o ang karaan nga GOST R 34.10-2001.

Dili nimo kinahanglan nga mabalaka bahin sa seguridad sa mga yawe - direkta kini nga gihimo sa Rutoken ug dili gyud biyaan ang panumduman niini sa panahon sa mga operasyon sa cryptographic.

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

Ang Rutoken EDS 2.0 gipamatud-an sa FSB ug FSTEC sumala sa NDV 4, busa kini magamit sa mga sistema sa impormasyon nga nagproseso sa kompidensyal nga impormasyon.

Praktikal nga paggamit

Halos bisan unsang modernong Linux ang buhaton, pananglitan gamiton namon ang xUbuntu 18.10.

1) I-install ang gikinahanglan nga mga pakete

sudo apt-get install libccid pcscd opensc
Kung gusto nimong idugang ang lock sa desktop gamit ang screensaver, i-install ang package nga dugang libpam-pkcs11.

2) Pagdugang ug PAM module nga adunay suporta sa GOST

Nagkarga sa librarya gikan sa https://download.rutoken.ru/Rutoken/PAM/
Kopyaha ang sulod sa PAM folder librtpam.so.1.0.0 ngadto sa system folder
/usr/lib/ o /usr/lib/x86_64-linux-gnu/o /usr/lib64

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

I-download ug i-install ang DEB o RPM nga pakete gikan sa link: https://www.rutoken.ru/support/download/pkcs/

4) Susiha nga ang Rutoken EDS 2.0 nagtrabaho sa sistema

Sa terminal mi nag execute
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Kung makita nimo ang linya Rutoken ECP <no label> - kini nagpasabot nga ang tanan OK ra.

5) Basaha ang sertipiko

Pagsusi nga ang aparato adunay sertipiko
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Kung pagkahuman sa linya:
Using slot 0 with a present token (0x0)

  • impormasyon gipakita bahin sa mga yawe ug mga sertipiko, kinahanglan nimo nga basahon ang sertipiko ug i-save kini sa disk. Aron mahimo kini, padagana ang mosunod nga sugo, diin imbes nga {id} kinahanglan nimong ilisan ang certificate ID nga imong nakita sa output sa miaging command:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Kung ang cert.crt file nahimo na, ipadayon ang lakang 6).
  • walay bisan unsa, unya walay sulod ang device. Kontaka ang imong tigdumala o paghimo sa mga yawe ug sertipiko sa imong kaugalingon pinaagi sa pagsunod sa sunod nga lakang.

5.1) Paghimo usa ka sertipiko sa pagsulay

Atensyon! Ang gihulagway nga mga pamaagi alang sa paghimo sa mga yawe ug mga sertipiko angay alang sa pagsulay ug dili gituyo alang sa paggamit sa combat mode. Aron mahimo kini, kinahanglan nimong gamiton ang mga yawe ug mga sertipiko nga gi-isyu sa kasaligan nga awtoridad sa sertipikasyon sa imong organisasyon o usa ka akreditado nga awtoridad sa sertipikasyon.
Ang module sa PAM gidesinyo sa pagpanalipod sa mga lokal nga kompyuter ug gidesinyo sa pagtrabaho sa gagmay nga mga organisasyon. Tungod kay adunay pipila ka mga tiggamit, ang Administrator mahimong magmonitor sa pagbawi sa mga sertipiko ug mano-mano nga pag-block sa mga account, ingon man ang panahon sa balido sa mga sertipiko. Ang module sa PAM wala pa mahibal-an kung unsaon pag-verify ang mga sertipiko gamit ang mga CRL ug magtukod mga kadena sa pagsalig.

Ang sayon ​​nga paagi (pinaagi sa browser)

Aron makakuha usa ka sertipiko sa pagsulay, gamita serbisyo sa web "Rutoken Registration Center". Ang proseso dili molapas sa 5 ka minuto.

Ang paagi sa geek (pinaagi sa console ug posible sa compiler)

Susiha ang bersyon sa OpenSC
$ opensc-tool --version
Kung ang bersyon dili mubu sa 0.20, dayon i-update o paghimo pkcs11-tool branch nga adunay suporta sa GOST-2012 gikan sa among GitHub (sa panahon sa pagmantala niini nga artikulo, ang pagpagawas sa 0.20 wala pa gipagawas) o gikan sa master nga sanga sa nag-unang proyekto sa OpenSC sa dili pa ulahi pasalig 8cf1e6f

Paghimo usa ka yawe nga pares nga adunay mga musunud nga parameter:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: object identifier (CKA_ID) isip duha ka digit nga hex character nga numero gikan sa ASCII table. Gamita lang ang mga ASCII code para sa maimprinta nga mga karakter, tungod kay... id kinahanglan nga ipasa sa OpenSSL ingon usa ka hilo. Pananglitan, ang ASCII code "3132" katumbas sa string "12". Alang sa kasayon, mahimo nimong gamiton online nga serbisyo alang sa pag-convert sa mga string ngadto sa ASCII codes.

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

Sunod maghimo kami usa ka sertipiko. Duha ka mga paagi ang ihulagway sa ubos: ang una pinaagi sa usa ka CA (gamiton namon ang mga pagsulay nga CA), ang ikaduha gipirmahan sa kaugalingon. Aron mahimo kini, kinahanglan nimo nga i-install ug i-configure ang OpenSSL nga bersyon 1.1 o sa ulahi aron magtrabaho kauban ang Rutoken pinaagi sa usa ka espesyal nga module sa rtengine gamit ang manwal. Pag-instalar ug pag-configure sa OpenSSL.
Pananglitan: alang sa '--id 3132' sa OpenSSL kinahanglan nimo ipiho "pkcs11:id=12".

Mahimo nimong gamiton ang mga serbisyo sa usa ka pagsulay nga CA, diin adunay daghan, pananglitan, tan-awa, tan-awa и tan-awa, alang niini maghimo kami usa ka hangyo alang sa usa ka sertipiko

Ang laing kapilian mao ang paghatag sa pagkatapulan ug paghimo sa usa ka self-signed
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

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

6) Irehistro ang sertipiko sa sistema

Siguroha nga ang imong sertipiko morag base64 file:

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

Kung ang imong sertipiko ingon niini:

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

unya kinahanglan nimo nga i-convert ang sertipiko gikan sa DER format sa PEM format (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Atong susihon pag-usab nga ang tanan naa na karon.

Idugang ang sertipiko sa lista sa kasaligan nga mga sertipiko
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Ang kataposang linya nanalipod sa listahan sa kasaligang mga sertipiko gikan sa aksidente o tinuyo nga pag-usab sa ubang mga tiggamit. Kini nagpugong sa usa ka tawo sa pagdugang sa ilang sertipiko dinhi ug makahimo sa pag-log in alang kanimo.

7) I-set up ang authentication

Ang pag-set up sa among PAM module hingpit nga sukaranan ug gihimo sa parehas nga paagi sa pag-set up sa ubang mga module. Paghimo sa file /usr/share/pam-configs/rutoken-gost-pam nga naglangkob sa tibuok nga ngalan sa module, kon kini gi-enable ba pinaagi sa default, ang prayoridad sa module, ug authentication parameters.
Ang mga parameter sa pag-authenticate adunay mga kinahanglanon alang sa kalampusan sa operasyon:

  • gikinahanglan: Ang maong mga modulo kinahanglang magbalik ug positibong tubag. Kung ang resulta sa usa ka module nga tawag adunay negatibo nga tubag, kini moresulta sa usa ka sayup sa pag-authenticate. Ang hangyo ihulog, apan ang nahabilin nga mga module tawgon.
  • gikinahanglan: Susama sa gikinahanglan, apan diha-diha dayon napakyas pag-ila ug wala magtagad sa ubang mga modules.
  • igo: Kung walay bisan usa sa gikinahanglan o igo nga mga module sa wala pa ang maong module mibalik og negatibo nga resulta, nan ang module mobalik og positibo nga tubag. Ang nahabilin nga mga module dili tagdon.
  • opsyonal: Kung walay gikinahanglan nga mga module sa stack ug walay bisan usa sa mga igo nga modules nga makabalik ug positibo nga resulta, nan labing menos usa sa mga opsyonal nga modules kinahanglang magbalik ug positibong resulta.

Bug-os nga sulod sa 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

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

i-save ang file, dayon i-execute
$ sudo pam-auth-update
sa bintana nga makita, pagbutang ug asterisk tupad niini Rutoken PAM GOST ug i-klik OK

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

8) Susiha ang mga setting

Aron masabtan nga ang tanan na-configure, apan sa samang higayon dili mawad-an sa abilidad sa pag-log in sa sistema, isulod ang sugo
$ sudo login
Pagsulod sa imong username. Ang tanan na-configure sa husto kung ang sistema nanginahanglan usa ka PIN code sa aparato.

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

9) I-configure ang kompyuter nga ma-block kung makuha ang token

Apil sa package libpam-pkcs11 gilakip ang utility pkcs11_eventmgr, nga nagtugot kanimo sa paghimo sa lain-laing mga aksyon kung mahitabo ang PKCS#11 nga mga panghitabo.
Alang sa mga setting pkcs11_eventmgr nagsilbi nga configuration file: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Para sa lain-laing mga distribusyon sa Linux, magkalahi ang sugo nga maoy hinungdan nga ma-lock ang usa ka account kung kuhaon ang smart card o token. Cm. event card_remove.
Ang usa ka pananglitan sa configuration file gipakita sa ubos:

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

Pagkahuman idugang ang aplikasyon pkcs11_eventmgr sa pagsugod. Aron mahimo kini, usba ang .bash_profile file:
$ nano /home/<имя_пользователя>/.bash_profile
Idugang ang linya nga pkcs11_eventmgr sa katapusan sa file ug i-reboot.

Ang gihulagway nga mga lakang alang sa pag-set up sa operating system mahimong gamiton isip mga instruksyon sa bisan unsang modernong distribusyon sa Linux, lakip ang mga domestic.

Giunsa paggamit ang mga module sa PAM alang sa lokal nga panghimatuud sa Linux gamit ang GOST-2012 nga mga yawe sa Rutoken

konklusyon

Ang mga Linux PC nahimong mas popular sa mga ahensya sa gobyerno sa Russia, ug ang pagpahimutang sa kasaligan nga two-factor authentication niini nga OS dili kanunay sayon. Malipay kami nga tabangan ka nga masulbad ang "problema sa password" sa kini nga giya ug kasaligan nga mapanalipdan ang pag-access sa imong PC nga wala’y paggasto og daghang oras niini.

Source: www.habr.com

Idugang sa usa ka comment