Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

Şîfreyên hêsan ne ewle ne, û yên tevlihev ne mimkûn e ku bibîr bînin. Ji ber vê yekê ew pir caran di binê klavyeyê de an jî li ser ekranê de diqede. Ji bo ku şîfre di hişê bikarhênerên "jibîr" de bimîne û pêbaweriya parastinê winda nebe, pejirandina du-faktorî (2FA) heye.

Ji ber tevhevbûna xwedan amûrek û zanîna PIN-a wê, PIN bixwe dikare hêsantir û hêsan were bîranîn. Dezawantajên di dirêjahiya PIN an bêserûberiyê de ji hêla hewcedariya xwedaniya laşî û sînorkirinên li ser hêza hovane ya PIN-ê têne derxistin.

Wekî din, ew di saziyên hukûmetê de dibe ku ew dixwazin her tişt li gorî GOST-ê bixebite. Vê vebijarka 2FA ji bo têketina Linux-ê dê were nîqaş kirin. Ez ê ji dûr ve dest pê bikim.

modules PAM

Modulên Nasnameya Pluggable (PAM) modulên xwedan API-ya standard in û di serîlêdanan de mekanîzmayên cihêreng pejirandinê bicîh dikin.
Hemî karûbar û serîlêdanên ku dikarin bi PAM-ê re bixebitin wan hildibijêrin û dikarin wan ji bo rastkirina bikarhêner bikar bînin.
Di pratîkê de, ew tiştek bi vî rengî dixebite: fermana têketinê gazî PAM dike, ku hemî kontrolên pêwîst bi karanîna modulên ku di pelê vesazkirinê de hatine destnîşan kirin pêk tîne û encamê vedigerîne fermana têketinê.

librtpam

Modula ku ji hêla pargîdaniya Aktiv ve hatî pêşve xistin piştrastkirina du-faktorî ya bikarhênerên ku bi kartên jîr an tokenên USB-ê bi karanîna bişkojkên asîmetrîk bikar tînin li gorî standardên herî dawî yên krîptografiya navxweyî zêde dike.

Ka em li prensîba xebata wê binêrin:

  • Token sertîfîkaya bikarhêner û mifteya wê ya taybet hilîne;
  • Sertîfîka di pelrêça malê ya bikarhêner de wekî pêbawer tê tomar kirin.

Pêvajoya pejirandinê bi vî rengî pêk tê:

  1. Rutoken li sertîfîkaya kesane ya bikarhêner digere.
  2. PIN-a token tê xwestin.
  3. Daneyên rasthatî li ser mifteya taybet rasterast di çîpê Rutoken de têne îmze kirin.
  4. Îmzeya encam bi karanîna mifteya giştî ya ji sertîfîkaya bikarhêner ve tê verast kirin.
  5. Modul encama verastkirina îmzeyê li serîlêdana bangê vedigerîne.

Hûn dikarin bi karanîna bişkojkên GOST R 34.10-2012 (dirêj 256 an 512 bit) an GOST R 34.10-2001-a kevnar verast bikin.

Hûn ne hewce ne ku ji ewlehiya mifteyan bitirsin - ew rasterast di Rutoken de têne çêkirin û di dema operasyonên krîptografî de qet bîranîna wê nahêlin.

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

Rutoken EDS 2.0 ji hêla FSB û FSTEC ve li gorî NDV 4 ve hatî pejirandin, ji ber vê yekê ew dikare di pergalên agahdariyê de ku agahdariya nepenî dişoxilînin de were bikar anîn.

Bikaranîna pratîkî

Hema hema her Linux-ya nûjen dê bike, mînakî em ê xUbuntu 18.10 bikar bînin.

1) Pakêtên pêwîst saz bikin

sudo apt-get install libccid pcscd opensc
Ger hûn dixwazin kilîtkirina sermaseyê bi dîmenderek zêde bikin, pakêtê pêvek saz bikin libpam-pkcs11.

2) Bi piştgiriya GOST re modulek PAM zêde bikin

Barkirina pirtûkxaneyê ji https://download.rutoken.ru/Rutoken/PAM/
Naveroka peldanka PAM-ê librtpam.so.1.0.0 li peldanka pergalê kopî bikin
/usr/lib/ an /usr/lib/x86_64-linux-gnu/an /usr/lib64

3) Pakêtê bi librtpkcs11ecp.so saz bikin

Ji lînkê pakêta DEB an RPM dakêşin û saz bikin: https://www.rutoken.ru/support/download/pkcs/

4) Kontrol bikin ku Rutoken EDS 2.0 di pergalê de dixebite

Di termînalê de em îdam dikin
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ger hûn rêzê bibînin Rutoken ECP <no label> - wateya ku her tişt baş e.

5) Sertîfîkayê bixwînin

Kontrol kirin ku amûrek sertîfîkayek heye
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ger piştî rêzê:
Using slot 0 with a present token (0x0)

  • agahî tê nîşandan di derbarê kilît û sertîfîkayan de, hûn hewce ne ku sertîfîkayê bixwînin û li ser dîskê tomar bikin. Ji bo vê yekê, emrê jêrîn bimeşînin, li şûna {id} hûn hewce ne ku nasnameya sertîfîkayê ya ku we di derana fermana berê de dîtiye biguhezînin:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Heke pelê cert.crt hate afirandin, berbi gava 6-ê ve biçin).
  • tiştek tune, wê demê cîhaz vala ye. Bi rêvebirê xwe re têkilî daynin an jî bi şopandina gava paşîn, mifteyan û sertîfîkayê biafirînin.

5.1) Sertîfîkaya testê biafirînin

Baldarî! Rêbazên diyarkirî yên ji bo afirandina keys û sertîfîkayan ji bo ceribandinê maqûl in û ne ji bo karanîna di moda şer de ne. Ji bo vê yekê, hûn hewce ne ku mift û sertîfîkayên ku ji hêla saziya pejirandî ya pêbawer an rayedarek pejirandî ya pejirandî ve hatine derxistin bikar bînin.
Modula PAM-ê ji bo parastina komputerên herêmî hatî çêkirin û ji bo ku di rêxistinên piçûk de bixebite hatî çêkirin. Ji ber ku hindik bikarhêner hene, Rêvebir dikare betalkirina sertîfîkayan bişopîne û bi destan hesaban asteng bike, û hem jî dema derbasbûna sertîfîkayan. Modula PAM hîna nizane ka meriv çawa sertîfîkayan bi karanîna CRL-an verast dike û zincîreyên pêbaweriyê ava dike.

Rêya hêsan (bi gerokê)

Ji bo bidestxistina sertîfîkaya testê, bikar bînin karûbarê malperê "Navenda Qeydkirina Rutoken". Pêvajo dê ji 5 hûrdeman zêdetir nebe.

Riya geek (bi rêya konsolê û dibe ku berhevkar)

Guhertoya OpenSC-ê kontrol bikin
$ opensc-tool --version
Ger guherto ji 0.20 kêmtir e, wê hingê nûve bikin an ava bikin pkcs11-şaxê amûrê bi piştgiriya GOST-2012 ji GitHub-a me (di dema weşana vê gotarê de, serbestberdana 0.20 hîn nehatiye berdan) an ji şaxê masterê projeya sereke ya OpenSC ne dereng 8cf1e6f bikin

Cotek mifteyê bi pîvanên jêrîn biafirînin:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: Nasnameya objeyê (CKA_ID) wekî hejmarên karaktera hex du-hejmar ji tabloya ASCII. Ji bo tîpên çapkirî tenê kodên ASCII bikar bînin, ji ber ku ... Pêdivî ye ku id wekî rêzek ji OpenSSL re were derbas kirin. Mînakî, koda ASCII "3132" bi rêzika "12" re têkildar e. Ji bo rehetiyê, hûn dikarin bikar bînin karûbarê serhêl ji bo veguheztina rêzan li kodên ASCII.

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

Piştre em ê sertîfîkayek çêbikin. Dê du awayên jêrîn werin diyar kirin: ya yekem bi CA-yê ye (em ê CA-yên ceribandinê bikar bînin), ya duyemîn bixwe-îmzakirî ye. Ji bo kirina vê yekê, hûn pêşî hewce ne ku hûn guhertoya OpenSSL 1.1 an dereng saz bikin û mîheng bikin da ku bi Rutoken re bi modulek rtengine taybetî ve bi karanîna manualê re bixebitin. Sazkirin û mîhengkirina OpenSSL.
Mînak: ji bo '--id 3132'di OpenSSL de divê hûn diyar bikin'pkcs11:id=12".

Hûn dikarin karûbarên ceribandinek CA-ê bikar bînin, ku gelek jê hene, mînakî, Va ye, Va ye и Va ye, ji bo vê yekê em ê daxwaznameyek sertîfîkayê çêbikin

Vebijêrkek din jî ew e ku meriv li ber tembeliyê bide û xwe-îmza biafirîne
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Sertîfîkayê li ser cîhazê barkirin
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Sertîfîkayê di pergalê de tomar bikin

Piştrast bikin ku sertîfîkaya we wekî pelek base64 xuya dike:

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

Ger sertîfîkaya we bi vî rengî xuya dike:

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

wê hingê hûn hewce ne ku sertîfîkayê ji forma DER veguherînin forma PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Em dîsa kontrol dikin ku niha her tişt di rê de ye.

Sertîfîkayê li navnîşa sertîfîkayên pêbawer zêde bikin
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Rêza paşîn navnîşa sertîfîkayên pêbawer diparêze ku bi xeletî an bi mebest ji hêla bikarhênerên din ve were guheztin. Ev rê nade ku kesek sertîfîkaya xwe li vir zêde bike û bikaribe li ser navê we têkeve.

7) Verastkirinê saz bikin

Sazkirina modula meya PAM-ê bi tevahî standard e û tam bi heman awayê sazkirina modulên din tê kirin. Ji bo pelê çêbikin /usr/share/pam-configs/rutoken-gost-pam Navê tevahî ya modulê vedihewîne, gelo ew ji hêla xwerû ve hatî çalak kirin, pêşîniya modulê, û pîvanên erêkirinê.
Parametreyên erêkirinê hewcedariyên ji bo serkeftina operasyonê vedihewîne:

  • pêdivî ye: Divê modulên weha bersivek erênî vegerînin. Ger di encama bangek modulê de bersivek neyînî hebe, ev ê bibe sedema xeletiyek erêkirinê. Daxwaz dê were avêtin, lê modulên mayî dê bêne gazî kirin.
  • pêdiviya: Mîna pêdivî ye, lê tavilê erêkirinê têk dibe û modulên din paşguh dike.
  • bes: Ger yek ji modulên hewce an têr berî modulek wusa encamek neyînî negerîne, wê hingê modul dê bersivek erênî vegerîne. Modulên mayî dê werin paşguh kirin.
  • vebijarkî: Ger tu modulên pêwîst li ser stikê tunebin û yek ji modulên têr encamek erênî venegerîne, wê hingê divê herî kêm yek ji modulên vebijarkî encamek erênî vegerîne.

Naveroka pelê tevahî /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

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

pelê hilînin, paşê bicîh bikin
$ sudo pam-auth-update
di pencereya ku xuya dike de, stêrkek li tenişta wê bixin Rutoken PAM GOST û bikirtînin OK

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

8) Mîhengan kontrol bikin

Ji bo ku fêm bikin ku her tişt hatî mîheng kirin, lê di heman demê de şiyana têketina pergalê winda neke, emrê têkevin
$ sudo login
Navê bikarhênerê xwe binivîse. Ger pergalê kodek PIN-a cîhazê hewce bike, her tişt rast tê mîheng kirin.

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

9) Komputerê mîheng bikin ku dema token tê derxistin were asteng kirin

Di nav pakêtê de libpam-pkcs11 bikêrhatî tê de pkcs11_eventmgr, ku dihêle hûn gava ku bûyerên PKCS#11 diqewimin çalakiyên cihêreng pêk bînin.
Ji bo mîhengan pkcs11_eventmgr wekî pelê vesazkirinê kar dike: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Ji bo dabeşkirinên cihêreng ên Linux, fermana ku dibe sedem ku hesabek were girtin dema ku qerta zîrek an token were rakirin dê cûda be. Cm. event card_remove.
Mînakek pelê mîhengê li jêr tê nîşandan:

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

Piştî wê serîlêdanê lê zêde bike pkcs11_eventmgr ji bo destpêkirinê. Ji bo vê yekê, pelê .bash_profile biguherînin:
$ nano /home/<имя_пользователя>/.bash_profile
Rêza pkcs11_eventmgr li dawiya pelê zêde bikin û ji nû ve bidin destpêkirin.

Pêngavên diyarkirî yên ji bo sazkirina pergala xebitandinê dikare wekî rêwerzan di her belavkirina nûjen a Linux-ê de, tevî yên navxweyî, were bikar anîn.

Meriv çawa modulên PAM-ê ji bo pejirandina herêmî di Linux-ê de bi karanîna bişkokên GOST-2012 li Rutoken bikar tîne

encamê

PC-yên Linux-ê di saziyên hukûmeta rûsî de her ku diçe populer dibin, û sazkirina piştrastkirina du-faktorî ya pêbawer di vê OS-ê de her gav ne hêsan e. Em ê kêfxweş bibin ku ji we re bibin alîkar ku hûn bi vê rêbernameyê re "pirsgirêka şîfreyê" çareser bikin û bi pêbawer gihîştina PC-ya xwe biparêzin bêyî ku gelek wext li ser wê xerc bikin.

Source: www.habr.com

Add a comment