Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

Awọn ọrọ igbaniwọle ti o rọrun ko ni aabo, ati pe awọn eka ko ṣee ṣe lati ranti. Ti o ni idi ti wọn nigbagbogbo pari lori akọsilẹ alalepo labẹ keyboard tabi lori atẹle naa. Lati rii daju pe awọn ọrọ igbaniwọle wa ninu ọkan ti awọn olumulo “gbagbe” ati igbẹkẹle aabo ko padanu, ijẹrisi ifosiwewe meji (2FA).

Nitori apapọ ti nini ẹrọ kan ati mimọ PIN rẹ, PIN funrararẹ le rọrun ati rọrun lati ranti. Awọn aila-nfani ni gigun PIN tabi aiṣedeede jẹ aiṣedeede nipasẹ ibeere ohun-ini ti ara ati awọn ihamọ lori agbara irokuro PIN.

Ni afikun, o ṣẹlẹ ni awọn ile-iṣẹ ijọba pe wọn fẹ ki ohun gbogbo ṣiṣẹ ni ibamu si GOST. Aṣayan 2FA yii fun wíwọlé sinu Linux ni yoo jiroro. Emi yoo bẹrẹ lati ọna jijin.

Awọn modulu PAM

Awọn modulu Ijeri Pluggable (PAM) jẹ awọn modulu pẹlu API boṣewa ati awọn imuse ti ọpọlọpọ awọn ọna ṣiṣe ijẹrisi ni awọn ohun elo.
Gbogbo awọn ohun elo ati awọn ohun elo ti o le ṣiṣẹ pẹlu PAM gbe wọn soke ati pe o le lo wọn fun ijẹrisi olumulo.
Ni iṣe, o ṣiṣẹ nkan bii eyi: aṣẹ iwọle n pe PAM, eyiti o ṣe gbogbo awọn sọwedowo pataki nipa lilo awọn modulu pato ninu faili iṣeto ati da abajade pada si aṣẹ iwọle.

librtpam

Module ti o dagbasoke nipasẹ ile-iṣẹ Aktiv ṣe afikun ijẹrisi ifosiwewe meji ti awọn olumulo nipa lilo awọn kaadi smati tabi awọn ami USB nipa lilo awọn bọtini asymmetric ni ibamu si awọn iṣedede tuntun ti cryptography ti ile.

Jẹ ki a wo ipilẹ ti iṣẹ rẹ:

  • Aami naa tọju ijẹrisi olumulo ati bọtini ikọkọ rẹ;
  • Iwe-ẹri naa ti wa ni ipamọ ninu itọsọna ile olumulo bi igbẹkẹle.

Ilana ijẹrisi waye bi atẹle:

  1. Rutoken n wa ijẹrisi ti ara ẹni olumulo.
  2. PIN toki ti beere.
  3. ID data ti wa ni wole lori ikọkọ bọtini taara ni Rutoken ërún.
  4. Ibuwọlu abajade jẹ ijẹrisi nipa lilo bọtini gbangba lati ijẹrisi olumulo.
  5. Module naa da abajade ijẹrisi ibuwọlu pada si ohun elo pipe.

O le jẹri nipa lilo awọn bọtini GOST R 34.10-2012 (ipari 256 tabi 512 bits) tabi GOST R 34.10-2001 ti igba atijọ.

O ko ni lati ṣe aniyan nipa aabo ti awọn bọtini - wọn ṣe ipilẹṣẹ taara ni Rutoken ati pe ko fi iranti rẹ silẹ lakoko awọn iṣẹ cryptographic.

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

Rutoken EDS 2.0 jẹ ifọwọsi nipasẹ FSB ati FSTEC ni ibamu si NDV 4, nitorinaa o le ṣee lo ninu awọn eto alaye ti o ṣe ilana alaye asiri.

Lilo to wulo

Fere eyikeyi Lainos ode oni yoo ṣe, fun apẹẹrẹ a yoo lo xUbuntu 18.10.

1) Fi sori ẹrọ awọn idii pataki

sudo apt-get install libccid pcscd opensc
Ti o ba fẹ ṣafikun titiipa tabili tabili pẹlu fifipamọ iboju, fi package sii ni afikun libpam-pkcs11.

2) Ṣafikun module PAM pẹlu atilẹyin GOST

Ikojọpọ awọn ìkàwé lati https://download.rutoken.ru/Rutoken/PAM/
Da awọn akoonu ti PAM folda librtpam.so.1.0.0 si awọn eto folda
/usr/lib/ tabi /usr/lib/x86_64-linux-gnu/tabi /usr/lib64

3) Fi sori ẹrọ ni package pẹlu librtpkcs11ecp.so

Ṣe igbasilẹ ati fi sori ẹrọ ni DEB tabi RPM package lati ọna asopọ: https://www.rutoken.ru/support/download/pkcs/

4) Ṣayẹwo pe Rutoken EDS 2.0 ṣiṣẹ ninu eto naa

Ninu ebute naa a ṣiṣẹ
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ti o ba ri ila Rutoken ECP <no label> - o tumọ si pe ohun gbogbo dara.

5) Ka iwe-ẹri naa

Ṣiṣayẹwo pe ẹrọ naa ni ijẹrisi kan
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ti o ba lẹhin ila:
Using slot 0 with a present token (0x0)

  • alaye ti han nipa awọn bọtini ati awọn iwe-ẹri, o nilo lati ka ijẹrisi naa ki o fi pamọ si disk. Lati ṣe eyi, ṣiṣe aṣẹ atẹle, nibiti dipo {id} o nilo lati paarọ ID ijẹrisi ti o rii ninu iṣelọpọ ti aṣẹ iṣaaju:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ti faili cert.crt ba ti ṣẹda, tẹsiwaju si igbesẹ 6).
  • ko si nkan, lẹhinna ẹrọ naa ti ṣofo. Kan si alabojuto rẹ tabi ṣẹda awọn bọtini ati ijẹrisi funrararẹ nipa titẹle igbesẹ ti n tẹle.

5.1) Ṣẹda ijẹrisi idanwo

Ifarabalẹ! Awọn ọna ti a ṣalaye fun ṣiṣẹda awọn bọtini ati awọn iwe-ẹri dara fun idanwo ati pe wọn ko pinnu fun lilo ni ipo ija. Lati ṣe eyi, o nilo lati lo awọn bọtini ati awọn iwe-ẹri ti a fun ni aṣẹ nipasẹ aṣẹ iwe-ẹri igbẹkẹle ti ajo rẹ tabi aṣẹ iwe-ẹri ti o ni ifọwọsi.
A ṣe apẹrẹ module PAM lati daabobo awọn kọnputa agbegbe ati pe a ṣe apẹrẹ lati ṣiṣẹ ni awọn ajọ kekere. Niwọn igba ti awọn olumulo diẹ wa, Alakoso le ṣe atẹle ifagile ti awọn iwe-ẹri ati dina awọn akọọlẹ pẹlu ọwọ, bakanna bi akoko iwulo ti awọn iwe-ẹri. Module PAM ko tii mọ bi o ṣe le rii daju awọn iwe-ẹri nipa lilo awọn CRL ati kọ awọn ẹwọn ti igbẹkẹle.

Ọna ti o rọrun (nipasẹ ẹrọ aṣawakiri)

Lati gba ijẹrisi idanwo, lo iṣẹ wẹẹbu "Ile-iṣẹ Iforukọsilẹ Rutoken". Ilana naa yoo gba diẹ sii ju iṣẹju 5 lọ.

Ọna giigi naa (nipasẹ console ati o ṣee ṣe akopọ)

Ṣayẹwo ẹya OpenSC
$ opensc-tool --version
Ti ẹya naa ba kere ju 0.20, lẹhinna ṣe imudojuiwọn tabi kọ pkcs11-ọpa ẹka pẹlu GOST-2012 support lati GitHub wa (ni akoko titẹjade nkan yii, itusilẹ 0.20 ko tii tu silẹ) tabi lati ẹka ọga ti iṣẹ akanṣe OpenSC akọkọ laipẹ. ṣe 8cf1e6f

Ṣẹda bata bọtini kan pẹlu awọn paramita wọnyi:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: ohun idamo (CKA_ID) bi meji-nọmba hex ohun kikọ awọn nọmba lati ASCII tabili. Lo awọn koodu ASCII nikan fun awọn kikọ atẹjade, nitori... id yoo nilo lati kọja si OpenSSL bi okun. Fun apẹẹrẹ, koodu ASCII "3132" ni ibamu si okun "12". Fun irọrun, o le lo iṣẹ ori ayelujara fun iyipada awọn gbolohun ọrọ si awọn koodu ASCII.

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

Nigbamii a yoo ṣẹda ijẹrisi kan. Awọn ọna meji yoo ṣe apejuwe ni isalẹ: akọkọ jẹ nipasẹ CA kan (a yoo lo awọn CAs idanwo), keji jẹ ami-ara. Lati ṣe eyi, o nilo akọkọ lati fi sori ẹrọ ati tunto ẹya OpenSSL 1.1 tabi nigbamii lati ṣiṣẹ pẹlu Rutoken nipasẹ module rtengine pataki kan nipa lilo itọnisọna. Fifi ati tunto OpenSSL.
Fun apẹẹrẹ: fun '--id 3132' ni OpenSSL o nilo lati pato"pkcs11:id=12".

O le lo awọn iṣẹ ti CA idanwo kan, eyiti ọpọlọpọ wa, fun apẹẹrẹ, wo o, wo o и wo o, Fun eyi a yoo ṣẹda ibeere fun ijẹrisi kan

Aṣayan miiran ni lati fun ọlẹ ati ṣẹda ti ara ẹni
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Ikojọpọ ijẹrisi si ẹrọ naa
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Forukọsilẹ ijẹrisi ninu eto naa

Rii daju pe ijẹrisi rẹ dabi faili base64:

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

Ti ijẹrisi rẹ ba dabi eleyi:

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

lẹhinna o nilo lati yi ijẹrisi pada lati ọna kika DER si ọna kika PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
A ṣayẹwo lẹẹkansi pe ohun gbogbo wa ni ibere bayi.

Ṣafikun ijẹrisi naa si atokọ ti awọn iwe-ẹri igbẹkẹle
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Laini ti o kẹhin ṣe aabo atokọ ti awọn iwe-ẹri ti o ni igbẹkẹle lati jẹ lairotẹlẹ tabi imomose yipada nipasẹ awọn olumulo miiran. Eyi ṣe idiwọ fun ẹnikan lati ṣafikun ijẹrisi wọn nibi ati ni anfani lati wọle fun ọ.

7) Ṣeto ìfàṣẹsí

Ṣiṣeto module PAM wa jẹ boṣewa patapata ati pe a ṣe ni deede ni ọna kanna bi ṣeto awọn modulu miiran. Ṣẹda lati faili /usr/share/pam-configs/rutoken-gost-pam ti o ni awọn ni kikun orukọ ti awọn module, boya o ti wa ni sise nipa aiyipada, ni ayo module, ati ìfàṣẹsí sile.
Awọn paramita ìfàṣẹsí ni awọn ibeere fun aṣeyọri ti iṣẹ ṣiṣe:

  • beere: Iru modulu gbọdọ pada kan rere esi. Ti abajade ipe module kan ba ni esi odi, eyi yoo ja si ni aṣiṣe ijẹrisi. Awọn ìbéèrè yoo wa ni silẹ, ṣugbọn awọn ti o ku modulu yoo wa ni a npe ni.
  • ibeere: Iru si beere, ṣugbọn lẹsẹkẹsẹ kuna ìfàṣẹsí ati ki o foju miiran modulu.
  • to: Ti ko ba si awọn modulu ti a beere tabi to ṣaaju iru module kan pada abajade odi, lẹhinna module naa yoo pada si esi rere. Awọn ti o ku modulu yoo wa ni bikita.
  • iyan: Ti ko ba si awọn modulu ti a beere lori akopọ ati pe ko si ọkan ninu awọn modulu to ti o pada abajade rere, lẹhinna o kere ju ọkan ninu awọn modulu aṣayan gbọdọ pada abajade rere kan.

Awọn akoonu faili ni kikun /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

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

fi faili pamọ, lẹhinna ṣiṣẹ
$ sudo pam-auth-update
ninu ferese ti o han, fi aami akiyesi lẹgbẹẹ rẹ Rutoken PAM GOST ati нажимаем OK

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

8) Ṣayẹwo awọn eto

Lati loye pe ohun gbogbo ti tunto, ṣugbọn ni akoko kanna ko padanu agbara lati wọle sinu eto, tẹ aṣẹ naa sii.
$ sudo login
Tẹ orukọ olumulo rẹ sii. Ohun gbogbo ni tunto ni deede ti eto ba nilo koodu PIN ẹrọ kan.

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

9) Tunto kọmputa lati dinamọ nigbati ami naa ba jade

To wa ninu package libpam-pkcs11 IwUlO to wa pkcs11_eventmgr, eyi ti o faye gba o a ṣe orisirisi awọn sise nigba ti PKCS # 11 iṣẹlẹ waye.
Fun awọn eto pkcs11_eventmgr ṣiṣẹ bi faili iṣeto: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Fun awọn pinpin Linux ti o yatọ, aṣẹ ti o fa ki akọọlẹ kan wa ni titiipa nigbati kaadi smart tabi ami ti yọkuro yoo yatọ. Cm. event card_remove.
Faili iṣeto ni apẹẹrẹ ti han ni isalẹ:

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

Lẹhin iyẹn fi ohun elo naa kun pkcs11_eventmgr lati ibẹrẹ. Lati ṣe eyi, ṣatunkọ faili .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Ṣafikun laini pkcs11_eventmgr si opin faili naa ki o tun bẹrẹ.

Awọn igbesẹ ti a ṣapejuwe fun iṣeto ẹrọ iṣẹ le ṣee lo bi awọn itọnisọna ni eyikeyi pinpin Lainos ode oni, pẹlu awọn ti ile.

Bii o ṣe le lo awọn modulu PAM fun ijẹrisi agbegbe ni Linux nipa lilo awọn bọtini GOST-2012 lori Rutoken

ipari

Awọn PC Linux ti n di olokiki si ni awọn ile-iṣẹ ijọba Russia, ati ṣiṣeto ijẹrisi ifosiwewe meji ti o gbẹkẹle ni OS yii kii ṣe rọrun nigbagbogbo. A yoo ni idunnu lati ran ọ lọwọ lati yanju “iṣoro ọrọ igbaniwọle” pẹlu itọsọna yii ati ni igbẹkẹle aabo iraye si PC rẹ laisi lilo akoko pupọ lori rẹ.

orisun: www.habr.com

Fi ọrọìwòye kun