Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

Nenosiri rahisi si salama, na zile ngumu haziwezekani kukumbuka. Ndiyo maana mara nyingi huishia kwenye noti yenye kunata chini ya kibodi au kwenye kifuatiliaji. Ili kuhakikisha kuwa nywila zinabaki katika akili za watumiaji "waliosahau" na uaminifu wa ulinzi haupotee, kuna uthibitishaji wa mambo mawili (2FA).

Kutokana na mchanganyiko wa kumiliki kifaa na kujua PIN yake, PIN yenyewe inaweza kuwa rahisi na rahisi kukumbuka. Hasara za urefu wa PIN au kubahatisha hutatuliwa na hitaji la umiliki na vizuizi vya nguvu ya kikatili ya PIN.

Kwa kuongeza, hutokea katika mashirika ya serikali kwamba wanataka kila kitu kufanya kazi kulingana na GOST. Chaguo hili la 2FA la kuingia kwenye Linux litajadiliwa. Nitaanza kutoka mbali.

Sehemu za PAM

Moduli za Uthibitishaji Zinazoweza Kuchomekwa (PAM) ni moduli zilizo na API ya kawaida na utekelezaji wa mbinu mbalimbali za uthibitishaji katika programu.
Huduma zote na programu zinazoweza kufanya kazi na PAM zichukue na zinaweza kuzitumia kwa uthibitishaji wa mtumiaji.
Kwa mazoezi, inafanya kazi kama hii: amri ya kuingia inaita PAM, ambayo hufanya ukaguzi wote muhimu kwa kutumia moduli zilizoainishwa kwenye faili ya usanidi na inarudisha matokeo kwa amri ya kuingia.

librtpam

Moduli iliyotengenezwa na kampuni ya Aktiv inaongeza uthibitishaji wa vipengele viwili vya watumiaji wanaotumia kadi mahiri au tokeni za USB kwa kutumia vitufe vya ulinganifu kulingana na viwango vya hivi karibuni vya kriptografia ya nyumbani.

Wacha tuangalie kanuni ya uendeshaji wake:

  • Ishara huhifadhi cheti cha mtumiaji na ufunguo wake wa kibinafsi;
  • Cheti huhifadhiwa katika saraka ya nyumbani ya mtumiaji kama inavyoaminika.

Mchakato wa uthibitishaji hutokea kama ifuatavyo:

  1. Rutoken hutafuta cheti cha kibinafsi cha mtumiaji.
  2. PIN ya tokeni imeombwa.
  3. Data ya nasibu imetiwa saini kwenye ufunguo wa faragha moja kwa moja kwenye chipu ya Rutoken.
  4. Sahihi inayotokana inathibitishwa kwa kutumia ufunguo wa umma kutoka kwa cheti cha mtumiaji.
  5. Moduli inarejesha matokeo ya uthibitishaji wa saini kwa programu ya kupiga simu.

Unaweza kuthibitisha kwa kutumia funguo za GOST R 34.10-2012 (urefu wa 256 au 512 bits) au GOST R 34.10-2001 iliyopitwa na wakati.

Huna haja ya kuwa na wasiwasi juu ya usalama wa funguo - zinazalishwa moja kwa moja katika Rutoken na kamwe kuacha kumbukumbu yake wakati wa shughuli za cryptographic.

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

Rutoken EDS 2.0 imeidhinishwa na FSB na FSTEC kulingana na NDV 4, kwa hivyo inaweza kutumika katika mifumo ya habari inayochakata taarifa za siri.

Matumizi ya vitendo

Karibu Linux yoyote ya kisasa itafanya, kwa mfano tutatumia xUbuntu 18.10.

1) Weka vifurushi muhimu

sudo apt-get install libccid pcscd opensc
Ikiwa ungependa kuongeza kufuli ya eneo-kazi kwa kutumia kihifadhi skrini, sakinisha kifurushi zaidi libpam-pkcs11.

2) Ongeza moduli ya PAM na usaidizi wa GOST

Inapakia maktaba kutoka https://download.rutoken.ru/Rutoken/PAM/
Nakili yaliyomo kwenye folda ya PAM librtpam.so.1.0.0 kwenye folda ya mfumo
/usr/lib/ au /usr/lib/x86_64-linux-gnu/au /usr/lib64

3) Sakinisha kifurushi na librtpkcs11ecp.so

Pakua na usakinishe kifurushi cha DEB au RPM kutoka kwa kiungo: https://www.rutoken.ru/support/download/pkcs/

4) Angalia kuwa Rutoken EDS 2.0 inafanya kazi kwenye mfumo

Katika terminal tunafanya
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ikiwa unaona mstari Rutoken ECP <no label> - ina maana kila kitu ni sawa.

5) Soma cheti

Inakagua kuwa kifaa kina cheti
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ikiwa baada ya mstari:
Using slot 0 with a present token (0x0)

  • habari inaonyeshwa kuhusu funguo na vyeti, unahitaji kusoma cheti na kuihifadhi kwenye diski. Ili kufanya hivyo, endesha amri ifuatayo, ambapo badala ya {id} unahitaji kubadilisha kitambulisho cha cheti ambacho uliona kwenye matokeo ya amri iliyotangulia:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ikiwa faili ya cert.crt imeundwa, endelea hatua ya 6).
  • hakuna kitu, basi kifaa ni tupu. Wasiliana na msimamizi wako au uunde funguo na cheti mwenyewe kwa kufuata hatua inayofuata.

5.1) Unda cheti cha mtihani

Makini! Njia zilizoelezewa za kuunda funguo na cheti zinafaa kwa majaribio na hazikusudiwa kutumika katika hali ya mapigano. Ili kufanya hivyo, unahitaji kutumia funguo na vyeti vinavyotolewa na mamlaka ya uidhinishaji inayoaminika ya shirika lako au mamlaka ya uidhinishaji iliyoidhinishwa.
Moduli ya PAM imeundwa kulinda kompyuta za ndani na imeundwa kufanya kazi katika mashirika madogo. Kwa kuwa kuna watumiaji wachache, Msimamizi anaweza kufuatilia kufutwa kwa vyeti na kuzuia akaunti kwa mikono, pamoja na muda wa uhalali wa vyeti. Sehemu ya PAM bado haijui jinsi ya kuthibitisha vyeti kwa kutumia CRL na kuunda misururu ya uaminifu.

Njia rahisi (kupitia kivinjari)

Ili kupata cheti cha mtihani, tumia huduma ya wavuti "Kituo cha Usajili cha Rutoken". Mchakato hautachukua zaidi ya dakika 5.

Njia ya geek (kupitia koni na ikiwezekana mkusanyaji)

Angalia toleo la OpenSC
$ opensc-tool --version
Ikiwa toleo ni chini ya 0.20, basi sasisha au ujenge tawi la zana ya pkcs11 na msaada wa GOST-2012 kutoka kwa GitHub yetu (wakati wa kuchapishwa kwa nakala hii, toleo la 0.20 bado halijatolewa) au kutoka kwa tawi kuu la mradi kuu wa OpenSC baadaye. fanya 8cf1e6f

Tengeneza jozi muhimu na vigezo vifuatavyo:
--key-type: GOSTR3410-2012-512:А (Π“ΠžΠ‘Π’-2012 512 Π±ΠΈΡ‚ c парамсСтом А), GOSTR3410-2012-256:A (Π“ΠžΠ‘Π’-2012 256 Π±ΠΈΡ‚ с парамсСтом A)

--id: kitambulisho cha kitu (CKA_ID) kama nambari za herufi za tarakimu mbili kutoka kwa jedwali la ASCII. Tumia misimbo ya ASCII pekee kwa herufi zinazoweza kuchapishwa, kwa sababu... id itahitaji kupitishwa kwa OpenSSL kama kamba. Kwa mfano, msimbo wa ASCII "3132" unafanana na kamba "12". Kwa urahisi, unaweza kutumia huduma ya mtandaoni ya kubadilisha mifuatano kuwa misimbo ya ASCII.

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

Ifuatayo tutaunda cheti. Njia mbili zitaelezewa hapa chini: ya kwanza ni kupitia CA (tutatumia CA za mtihani), ya pili ni kujiandikisha. Ili kufanya hivyo, kwanza unahitaji kusakinisha na kusanidi toleo la OpenSSL 1.1 au baadaye kufanya kazi na Rutoken kupitia moduli maalum ya rtengine kwa kutumia mwongozo. Kusakinisha na kusanidi OpenSSL.
Kwa mfano: kwa '--id 3132' katika OpenSSL unahitaji kutaja "pkcs11:id=12".

Unaweza kutumia huduma za mtihani wa CA, ambao kuna nyingi, kwa mfano, tazama, tazama ΠΈ tazama, kwa hili tutaunda ombi la cheti

Chaguo jingine ni kutoa kwa uvivu na kuunda saini ya kibinafsi
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Inapakia cheti kwenye kifaa
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Sajili cheti kwenye mfumo

Hakikisha cheti chako kinaonekana kama faili ya base64:

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

Ikiwa cheti chako kinaonekana kama hii:

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

basi unahitaji kubadilisha cheti kutoka umbizo la DER hadi umbizo la PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Tunaangalia tena kuwa kila kitu kiko sawa sasa.

Ongeza cheti kwenye orodha ya vyeti vinavyoaminika
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Mstari wa mwisho hulinda orodha ya vyeti vinavyoaminika dhidi ya kubadilishwa kwa bahati mbaya au kimakusudi na watumiaji wengine. Hii inazuia mtu kuongeza cheti chake hapa na kuweza kuingia kwa niaba yako.

7) Weka uthibitishaji

Kuweka moduli yetu ya PAM ni kawaida kabisa na inafanywa kwa njia sawa kabisa na kusanidi moduli zingine. Unda kwa faili /usr/share/pam-configs/rutoken-gost-pam iliyo na jina kamili la moduli, iwe imewezeshwa kwa chaguo-msingi, kipaumbele cha moduli, na vigezo vya uthibitishaji.
Vigezo vya uthibitishaji vina mahitaji ya mafanikio ya operesheni:

  • inahitajika: moduli kama hizo lazima zirudishe jibu chanya. Ikiwa matokeo ya simu ya moduli yana jibu hasi, hii itasababisha hitilafu ya uthibitishaji. Ombi litaondolewa, lakini moduli zilizobaki zitaitwa.
  • Requisite: Sawa na inavyotakiwa, lakini mara moja inashindwa uthibitishaji na kupuuza moduli zingine.
  • ya kutosha: Ikiwa hakuna moduli zinazohitajika au za kutosha kabla ya moduli kama hiyo ilileta matokeo mabaya, basi moduli itarudisha jibu chanya. Moduli zilizosalia zitapuuzwa.
  • kwa hiari: Ikiwa hakuna moduli zinazohitajika kwenye rafu na hakuna moduli ya kutosha inayoleta matokeo chanya, basi angalau moduli moja ya hiari lazima irudishe matokeo chanya.

Yaliyomo kamili ya faili /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

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

hifadhi faili, kisha utekeleze
$ sudo pam-auth-update
kwenye dirisha inayoonekana, weka nyota karibu nayo Rutoken PAM GOST na bonyeza OK

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

8) Angalia mipangilio

Ili kuelewa kuwa kila kitu kimeundwa, lakini wakati huo huo usipoteze uwezo wa kuingia kwenye mfumo, ingiza amri.
$ sudo login
Weka jina lako la mtumiaji. Kila kitu kimesanidiwa ipasavyo ikiwa mfumo unahitaji msimbo wa PIN wa kifaa.

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

9) Sanidi kompyuta ili kuzuiwa wakati ishara inatolewa

Imejumuishwa kwenye kifurushi libpam-pkcs11 shirika pamoja pkcs11_eventmgr, ambayo hukuruhusu kufanya vitendo mbalimbali wakati matukio ya PKCS#11 yanapotokea.
Kwa mipangilio pkcs11_eventmgr hutumika kama faili ya usanidi: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Kwa usambazaji tofauti wa Linux, amri inayosababisha akaunti kufungwa wakati kadi mahiri au tokeni inapoondolewa itatofautiana. Sentimita. event card_remove.
Mfano wa faili ya usanidi umeonyeshwa hapa chini:

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

Baada ya hayo ongeza programu pkcs11_eventmgr kuanza. Ili kufanya hivi, hariri faili ya .bash_profile:
$ nano /home/<имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>/.bash_profile
Ongeza mstari pkcs11_eventmgr hadi mwisho wa faili na uwashe upya.

Hatua zilizoelezewa za kusanidi mfumo wa uendeshaji zinaweza kutumika kama maagizo katika usambazaji wowote wa kisasa wa Linux, pamoja na wa nyumbani.

Jinsi ya kutumia moduli za PAM kwa uthibitishaji wa ndani katika Linux kwa kutumia funguo za GOST-2012 kwenye Rutoken

Hitimisho

Kompyuta za Linux zinazidi kuwa maarufu katika mashirika ya serikali ya Kirusi, na kuanzisha uthibitishaji wa kuaminika wa sababu mbili katika OS hii si rahisi kila wakati. Tutafurahi kukusaidia kutatua "tatizo la nenosiri" na mwongozo huu na kulinda kwa uaminifu ufikiaji wa Kompyuta yako bila kutumia muda mwingi juu yake.

Chanzo: mapenzi.com

Kuongeza maoni