Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

Nid yw cyfrineiriau syml yn ddiogel, ac mae'n amhosibl cofio rhai cymhleth. Dyna pam eu bod mor aml yn dod i ben ar nodyn gludiog o dan y bysellfwrdd neu ar y monitor. Er mwyn sicrhau bod cyfrineiriau yn aros ym meddyliau defnyddwyr “anghofus” ac nad yw dibynadwyedd amddiffyniad yn cael ei golli, mae yna ddilysiad dau ffactor (2FA).

Oherwydd y cyfuniad o fod yn berchen ar ddyfais a gwybod ei PIN, gall y PIN ei hun fod yn symlach ac yn haws i'w gofio. Mae anfanteision o ran hyd PIN neu hap yn cael eu gwrthbwyso gan y gofyniad meddiant corfforol a chyfyngiadau ar rym ysbeidiol PIN.

Yn ogystal, mae'n digwydd mewn asiantaethau'r llywodraeth eu bod am i bopeth weithio yn unol â GOST. Bydd yr opsiwn 2FA hwn ar gyfer mewngofnodi i Linux yn cael ei drafod. Dechreuaf o bell.

modiwlau PAM

Mae Modiwlau Dilysu Plygadwy (PAM) yn fodiwlau gydag API safonol a gweithrediad amrywiol fecanweithiau dilysu mewn cymwysiadau.
Mae pob cyfleustodau a chymhwysiad a all weithio gyda PAM yn eu codi a gallant eu defnyddio ar gyfer dilysu defnyddwyr.
Yn ymarferol, mae'n gweithio rhywbeth fel hyn: mae'r gorchymyn mewngofnodi yn galw PAM, sy'n perfformio'r holl wiriadau angenrheidiol gan ddefnyddio'r modiwlau a nodir yn y ffeil ffurfweddu ac yn dychwelyd y canlyniad yn ôl i'r gorchymyn mewngofnodi.

librtpam

Mae'r modiwl a ddatblygwyd gan y cwmni Aktiv yn ychwanegu dilysu dau-ffactor o ddefnyddwyr gan ddefnyddio cardiau smart neu docynnau USB gan ddefnyddio allweddi anghymesur yn unol â safonau diweddaraf cryptograffeg domestig.

Edrychwn ar egwyddor ei weithrediad:

  • Mae'r tocyn yn storio tystysgrif y defnyddiwr a'i allwedd breifat;
  • Mae'r dystysgrif yn cael ei chadw yng nghyfeirlyfr cartref y defnyddiwr fel y gellir ymddiried ynddo.

Mae'r broses ddilysu yn digwydd fel a ganlyn:

  1. Mae Rutoken yn chwilio am dystysgrif bersonol y defnyddiwr.
  2. Gofynnir am y PIN tocyn.
  3. Mae data ar hap wedi'i lofnodi ar yr allwedd breifat yn uniongyrchol yn y sglodyn Rutoken.
  4. Mae'r llofnod canlyniadol yn cael ei wirio gan ddefnyddio'r allwedd gyhoeddus o dystysgrif y defnyddiwr.
  5. Mae'r modiwl yn dychwelyd y canlyniad dilysu llofnod i'r rhaglen ffonio.

Gallwch ddilysu gan ddefnyddio allweddi GOST R 34.10-2012 (hyd 256 neu 512 did) neu'r hen GOST R 34.10-2001.

Nid oes rhaid i chi boeni am ddiogelwch yr allweddi - maent yn cael eu cynhyrchu'n uniongyrchol yn Rutoken a byth yn gadael ei gof yn ystod gweithrediadau cryptograffig.

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

Mae Rutoken EDS 2.0 wedi'i ardystio gan yr FSB a FSTEC yn ôl NDV 4, felly gellir ei ddefnyddio mewn systemau gwybodaeth sy'n prosesu gwybodaeth gyfrinachol.

Defnydd ymarferol

Bydd bron unrhyw Linux modern yn ei wneud, er enghraifft byddwn yn defnyddio xUbuntu 18.10.

1) Gosodwch y pecynnau angenrheidiol

sudo apt-get install libccid pcscd opensc
Os ydych chi am ychwanegu clo bwrdd gwaith gydag arbedwr sgrin, gosodwch y pecyn hefyd libpam-pkcs11.

2) Ychwanegu modiwl PAM gyda chefnogaeth GOST

Llwytho'r llyfrgell o https://download.rutoken.ru/Rutoken/PAM/
Copïwch gynnwys y ffolder PAM librtpam.so.1.0.0 i ffolder y system
/usr/lib/ neu /usr/lib/x86_64-linux-gnu/neu /usr/lib64

3) Gosodwch y pecyn gyda librtpkcs11ecp.so

Lawrlwythwch a gosodwch y pecyn DEB neu RPM o'r ddolen: https://www.rutoken.ru/support/download/pkcs/

4) Gwiriwch fod Rutoken EDS 2.0 yn gweithio yn y system

Yn y derfynell rydym yn gweithredu
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Os gwelwch y llinell Rutoken ECP <no label> - mae'n golygu bod popeth yn iawn.

5) Darllenwch y dystysgrif

Gwirio bod gan y ddyfais dystysgrif
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Os ar ôl y llinell:
Using slot 0 with a present token (0x0)

  • gwybodaeth yn cael ei harddangos am allweddi a thystysgrifau, mae angen i chi ddarllen y dystysgrif a'i chadw ar ddisg. I wneud hyn, rhedeg y gorchymyn canlynol, lle yn lle {id} mae angen i chi amnewid yr ID tystysgrif a welsoch yn allbwn y gorchymyn blaenorol:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Os yw'r ffeil cert.crt wedi'i chreu, ewch ymlaen i gam 6).
  • Does dim byd, yna mae'r ddyfais yn wag. Cysylltwch â'ch gweinyddwr neu crëwch yr allweddi a thystysgrif eich hun trwy ddilyn y cam nesaf.

5.1) Creu tystysgrif prawf

Sylw! Mae'r dulliau a ddisgrifir ar gyfer creu allweddi a thystysgrifau yn addas i'w profi ac nid ydynt wedi'u bwriadu i'w defnyddio yn y modd ymladd. I wneud hyn, mae angen i chi ddefnyddio allweddi a thystysgrifau a gyhoeddwyd gan awdurdod ardystio dibynadwy eich sefydliad neu awdurdod ardystio achrededig.
Mae'r modiwl PAM wedi'i gynllunio i amddiffyn cyfrifiaduron lleol ac mae wedi'i gynllunio i weithio mewn sefydliadau bach. Gan nad oes llawer o ddefnyddwyr, gall y Gweinyddwr fonitro diddymiad tystysgrifau a blocio cyfrifon â llaw, yn ogystal â chyfnod dilysrwydd tystysgrifau. Nid yw'r modiwl PAM yn gwybod eto sut i ddilysu tystysgrifau gan ddefnyddio CRLs ac adeiladu cadwyni ymddiriedaeth.

Y ffordd hawdd (trwy borwr)

I gael tystysgrif prawf, defnyddiwch gwasanaeth gwe "Canolfan Gofrestru Rutoken". Ni fydd y broses yn cymryd mwy na 5 munud.

Ffordd y geek (trwy'r consol ac o bosibl y casglwr)

Gwiriwch y fersiwn OpenSC
$ opensc-tool --version
Os yw'r fersiwn yn llai na 0.20, yna diweddarwch neu adeiladwch cangen pkcs11-offer gyda chefnogaeth GOST-2012 o'n GitHub (ar adeg cyhoeddi'r erthygl hon, nid yw datganiad 0.20 wedi'i ryddhau eto) neu o brif gangen y prif brosiect OpenSC heb fod yn hwyrach ymrwymo 8cf1e6f

Cynhyrchu pâr allweddol gyda'r paramedrau canlynol:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: dynodwr gwrthrych (CKA_ID) fel rhifau nodau hecs dau ddigid o'r tabl ASCII. Defnyddiwch godau ASCII yn unig ar gyfer nodau argraffadwy, oherwydd... bydd angen trosglwyddo id i OpenSSL fel llinyn. Er enghraifft, mae'r cod ASCII “3132” yn cyfateb i'r llinyn “12”. Er hwylustod, gallwch ddefnyddio gwasanaeth ar-lein ar gyfer trosi llinynnau i godau ASCII.

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

Nesaf byddwn yn creu tystysgrif. Disgrifir dwy ffordd isod: y cyntaf yw trwy CA (byddwn yn defnyddio CAs prawf), mae'r ail yn hunan-lofnodi. I wneud hyn, yn gyntaf mae angen i chi osod a ffurfweddu fersiwn OpenSSL 1.1 neu ddiweddarach i weithio gyda Rutoken trwy fodiwl rtengine arbennig gan ddefnyddio'r llawlyfr Gosod a ffurfweddu OpenSSL.
Er enghraifft: ar gyfer '--id 3132' yn OpenSSL mae angen i chi nodi "pkcs11:id=12".

Gallwch ddefnyddio gwasanaethau CA prawf, y mae llawer ohonynt, er enghraifft, yma, yma и yma, ar gyfer hyn byddwn yn creu cais am dystysgrif

Opsiwn arall yw ildio i ddiogi a chreu hunan-lofnod
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Wrthi'n uwchlwytho'r dystysgrif i'r ddyfais
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Cofrestrwch y dystysgrif yn y system

Sicrhewch fod eich tystysgrif yn edrych fel ffeil base64:

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

Os yw eich tystysgrif yn edrych fel hyn:

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

yna mae angen i chi drosi'r dystysgrif o fformat DER i fformat PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Rydyn ni'n gwirio eto bod popeth mewn trefn nawr.

Ychwanegwch y dystysgrif at y rhestr o dystysgrifau dibynadwy
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Mae'r llinell olaf yn amddiffyn y rhestr o dystysgrifau dibynadwy rhag cael eu newid yn ddamweiniol neu'n fwriadol gan ddefnyddwyr eraill. Mae hyn yn atal rhywun rhag ychwanegu eu tystysgrif yma a gallu mewngofnodi ar eich rhan.

7) Sefydlu dilysu

Mae sefydlu ein modiwl PAM yn gwbl safonol ac fe'i gwneir yn union yr un ffordd â sefydlu modiwlau eraill. Creu i ffeil /usr/share/pam-configs/rutoken-gost-pam yn cynnwys enw llawn y modiwl, p'un a yw wedi'i alluogi yn ddiofyn, blaenoriaeth y modiwl, a pharamedrau dilysu.
Mae'r paramedrau dilysu yn cynnwys gofynion ar gyfer llwyddiant y gweithrediad:

  • gofynnol: Rhaid i fodiwlau o'r fath roi ymateb cadarnhaol. Os yw canlyniad galwad modiwl yn cynnwys ymateb negyddol, bydd hyn yn arwain at wall dilysu. Bydd y cais yn cael ei ollwng, ond bydd y modiwlau sy'n weddill yn cael eu galw.
  • gofynnol: Yn debyg i'r angen, ond yn methu â dilysu ar unwaith ac yn anwybyddu modiwlau eraill.
  • digonol: Os nad oedd yr un o'r modiwlau gofynnol neu ddigonol cyn modiwl o'r fath yn dychwelyd canlyniad negyddol, yna bydd y modiwl yn dychwelyd ymateb cadarnhaol. Bydd gweddill y modiwlau yn cael eu hanwybyddu.
  • dewisol: Os nad oes unrhyw fodiwlau gofynnol ar y pentwr ac nad oes yr un o'r modiwlau digonol yn dychwelyd canlyniad cadarnhaol, yna mae'n rhaid i o leiaf un o'r modiwlau dewisol ddychwelyd canlyniad cadarnhaol.

Cynnwys ffeil llawn /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

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

arbed y ffeil, yna gweithredu
$ sudo pam-auth-update
yn y ffenestr sy'n ymddangos, rhowch seren wrth ei ymyl Rutoken PAM GOST a chlicio OK

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

8) Gwiriwch y gosodiadau

I ddeall bod popeth wedi'i ffurfweddu, ond ar yr un pryd heb golli'r gallu i fewngofnodi i'r system, rhowch y gorchymyn
$ sudo login
Rhowch eich enw defnyddiwr. Mae popeth wedi'i ffurfweddu'n gywir os oes angen cod PIN dyfais ar y system.

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

9) Ffurfweddu'r cyfrifiadur i'w rwystro pan fydd y tocyn yn cael ei dynnu

Wedi'i gynnwys yn y pecyn libpam-pkcs11 cyfleustodau wedi'u cynnwys pkcs11_eventmgr, sy'n eich galluogi i berfformio gweithredoedd amrywiol pan fydd digwyddiadau PKCS#11 yn digwydd.
Ar gyfer gosodiadau pkcs11_eventmgr yn gwasanaethu fel ffeil ffurfweddu: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Ar gyfer gwahanol ddosbarthiadau Linux, bydd y gorchymyn sy'n achosi i gyfrif gael ei gloi pan fydd cerdyn smart neu docyn yn cael ei dynnu yn wahanol. Cm. event card_remove.
Dangosir enghraifft o ffeil ffurfweddu isod:

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

Ar ôl hynny ychwanegwch y cais pkcs11_eventmgr i gychwyn. I wneud hyn, golygwch y ffeil .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Ychwanegwch y llinell pkcs11_eventmgr at ddiwedd y ffeil ac ailgychwyn.

Gellir defnyddio'r camau a ddisgrifir ar gyfer sefydlu'r system weithredu fel cyfarwyddiadau mewn unrhyw ddosbarthiad Linux modern, gan gynnwys rhai domestig.

Sut i ddefnyddio modiwlau PAM ar gyfer dilysu lleol yn Linux gan ddefnyddio allweddi GOST-2012 ar Rutoken

Casgliad

Mae cyfrifiaduron Linux yn dod yn fwyfwy poblogaidd mewn asiantaethau llywodraeth Rwsia, ac nid yw sefydlu dilysiad dau ffactor dibynadwy yn yr OS hwn bob amser yn hawdd. Byddwn yn hapus i'ch helpu i ddatrys y “broblem cyfrinair” gyda'r canllaw hwn a diogelu mynediad i'ch cyfrifiadur yn ddibynadwy heb dreulio llawer o amser arno.

Ffynhonnell: hab.com

Ychwanegu sylw