Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

Fjalëkalimet e thjeshta nuk janë të sigurta dhe ato komplekse janë të pamundura për t'u mbajtur mend. Kjo është arsyeja pse ata shpesh përfundojnë në një shënim ngjitës nën tastierë ose në monitor. Për t'u siguruar që fjalëkalimet të mbeten në mendjet e përdoruesve "harrues" dhe besueshmëria e mbrojtjes të mos humbasë, ekziston vërtetimi me dy faktorë (2FA).

Për shkak të kombinimit të zotërimit të një pajisjeje dhe njohjes së kodit PIN të saj, vetë PIN-i mund të jetë më i thjeshtë dhe më i lehtë për t'u mbajtur mend. Disavantazhet në gjatësinë ose rastësinë e PIN-it kompensohen nga kërkesa për posedim fizik dhe kufizimet në forcën brutale të PIN-it.

Për më tepër, në agjencitë qeveritare ndodh që ata duan që gjithçka të funksionojë sipas GOST. Ky opsion 2FA për hyrjen në Linux do të diskutohet. Do të filloj nga larg.

Modulet PAM

Modulet e Autentifikimit të Pluggable (PAM) janë module me një API standarde dhe zbatime të mekanizmave të ndryshëm të vërtetimit në aplikacione.
Të gjitha shërbimet dhe aplikacionet që mund të punojnë me PAM-in i marrin dhe mund t'i përdorin për vërtetimin e përdoruesit.
Në praktikë, funksionon diçka si kjo: komanda e hyrjes thërret PAM, e cila kryen të gjitha kontrollet e nevojshme duke përdorur modulet e specifikuara në skedarin e konfigurimit dhe e kthen rezultatin përsëri në komandën e hyrjes.

librtpam

Moduli i zhvilluar nga kompania Aktiv shton vërtetimin me dy faktorë të përdoruesve që përdorin karta inteligjente ose token USB duke përdorur çelësa asimetrik sipas standardeve më të fundit të kriptografisë vendase.

Le të shohim parimin e funksionimit të tij:

  • Shenja ruan certifikatën e përdoruesit dhe çelësin e tij privat;
  • Certifikata ruhet në drejtorinë kryesore të përdoruesit si e besuar.

Procesi i vërtetimit ndodh si më poshtë:

  1. Rutoken kërkon certifikatën personale të përdoruesit.
  2. Kërkohet kodi PIN i shenjës.
  3. Të dhënat e rastësishme nënshkruhen në çelësin privat direkt në çipin Rutoken.
  4. Nënshkrimi që rezulton verifikohet duke përdorur çelësin publik nga certifikata e përdoruesit.
  5. Moduli kthen rezultatin e verifikimit të nënshkrimit në aplikacionin thirrës.

Mund të vërtetoni duke përdorur çelësat GOST R 34.10-2012 (gjatësia 256 ose 512 bit) ose GOST R 34.10-2001 i vjetëruar.

Ju nuk duhet të shqetësoheni për sigurinë e çelësave - ato gjenerohen drejtpërdrejt në Rutoken dhe nuk largohen kurrë nga kujtesa e tij gjatë operacioneve kriptografike.

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

Rutoken EDS 2.0 është i certifikuar nga FSB dhe FSTEC sipas NDV 4, prandaj mund të përdoret në sistemet e informacionit që përpunojnë informacione konfidenciale.

Përdorimi praktik

Pothuajse çdo Linux modern do ta bëjë këtë, për shembull ne do të përdorim xUbuntu 18.10.

1) Instaloni paketat e nevojshme

sudo apt-get install libccid pcscd opensc
Nëse dëshironi të shtoni një kyçje desktopi me një mbrojtës ekrani, instaloni paketën shtesë libpam-pkcs11.

2) Shtoni një modul PAM me mbështetjen GOST

Duke ngarkuar bibliotekën nga https://download.rutoken.ru/Rutoken/PAM/
Kopjoni përmbajtjen e dosjes PAM librtpam.so.1.0.0 në dosjen e sistemit
/usr/lib/ ose /usr/lib/x86_64-linux-gnu/ose /usr/lib64

3) Instaloni paketën me librtpkcs11ecp.so

Shkarkoni dhe instaloni paketën DEB ose RPM nga lidhja: https://www.rutoken.ru/support/download/pkcs/

4) Kontrolloni që Rutoken EDS 2.0 funksionon në sistem

Në terminal ne ekzekutojmë
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Nëse e shihni vijën Rutoken ECP <no label> - do të thotë se gjithçka është në rregull.

5) Lexoni certifikatën

Kontrolloni nëse pajisja ka një certifikatë
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Nëse pas rreshtit:
Using slot 0 with a present token (0x0)

  • shfaqet informacioni në lidhje me çelësat dhe certifikatat, duhet të lexoni certifikatën dhe ta ruani në disk. Për ta bërë këtë, ekzekutoni komandën e mëposhtme, ku në vend të {id} duhet të zëvendësoni ID-në e certifikatës që keni parë në daljen e komandës së mëparshme:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Nëse skedari cert.crt është krijuar, vazhdoni në hapin 6).
  • nuk ka asgje, atëherë pajisja është bosh. Kontaktoni administratorin tuaj ose krijoni vetë çelësat dhe certifikatën duke ndjekur hapin tjetër.

5.1) Krijoni një certifikatë testimi

Kujdes! Metodat e përshkruara për krijimin e çelësave dhe certifikatave janë të përshtatshme për testim dhe nuk janë të destinuara për përdorim në modalitetin luftarak. Për ta bërë këtë, ju duhet të përdorni çelësat dhe certifikatat e lëshuara nga autoriteti i besuar i certifikimit të organizatës suaj ose një autoritet certifikues i akredituar.
Moduli PAM është krijuar për të mbrojtur kompjuterët lokalë dhe është krijuar për të punuar në organizata të vogla. Meqenëse ka pak përdorues, Administratori mund të monitorojë revokimin e certifikatave dhe të bllokojë manualisht llogaritë, si dhe periudhën e vlefshmërisë së certifikatave. Moduli PAM nuk di ende se si të verifikojë certifikatat duke përdorur CRL dhe të ndërtojë zinxhirë besimi.

Mënyra e lehtë (nëpërmjet shfletuesit)

Për të marrë një certifikatë testimi, përdorni shërbimi në internet "Qendra e Regjistrimit Rutoken". Procesi do të zgjasë jo më shumë se 5 minuta.

Mënyra e geeks (përmes konsolës dhe ndoshta përpiluesit)

Kontrolloni versionin OpenSC
$ opensc-tool --version
Nëse versioni është më pak se 0.20, atëherë përditësoni ose ndërtoni dega e veglave pkcs11 me mbështetje GOST-2012 nga GitHub-i ynë (në kohën e botimit të këtij artikulli, lëshimi 0.20 nuk është lëshuar ende) ose nga dega kryesore e projektit kryesor OpenSC jo më vonë kryej 8cf1e6f

Gjeneroni një çift çelësash me parametrat e mëposhtëm:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identifikuesi i objektit (CKA_ID) si numra me karakter dyshifror gjashtëkëndor nga tabela ASCII. Përdorni vetëm kode ASCII për karaktere të printueshme, sepse... ID-ja do të duhet t'i kalohet OpenSSL si varg. Për shembull, kodi ASCII "3132" korrespondon me vargun "12". Për lehtësi, mund të përdorni shërbim online për konvertimin e vargjeve në kode ASCII.

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

Më pas do të krijojmë një certifikatë. Dy mënyra do të përshkruhen më poshtë: e para është përmes një CA (ne do të përdorim CA-të testuese), e dyta është e vetë-nënshkruar. Për ta bërë këtë, së pari duhet të instaloni dhe konfiguroni OpenSSL versionin 1.1 ose më të ri për të punuar me Rutoken përmes një moduli të veçantë rtengine duke përdorur manualin Instalimi dhe konfigurimi i OpenSSL.
Për shembull: për '--id 3132' në OpenSSL ju duhet të specifikoni "pkcs11:id=12".

Ju mund të përdorni shërbimet e një CA testuese, nga të cilat ka shumë, për shembull, këtu, këtu и këtu, për këtë ne do të krijojmë një kërkesë për një certifikatë

Një tjetër mundësi është t'i dorëzoheni dembelizmit dhe të krijoni një vetë-nënshkruar
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Ngarkimi i certifikatës në pajisje
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Regjistroni certifikatën në sistem

Sigurohuni që certifikata juaj të duket si një skedar base64:

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

Nëse certifikata juaj duket si kjo:

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

atëherë ju duhet të konvertoni certifikatën nga formati DER në formatin PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ne kontrollojmë përsëri që gjithçka është në rregull tani.

Shtoni certifikatën në listën e certifikatave të besuara
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Rreshti i fundit mbron listën e certifikatave të besuara nga ndryshimi aksidental ose i qëllimshëm nga përdoruesit e tjerë. Kjo pengon dikë që të shtojë certifikatën e tij këtu dhe të jetë në gjendje të identifikohet në emrin tuaj.

7) Vendosni vërtetimin

Konfigurimi i modulit tonë PAM është plotësisht standard dhe bëhet në të njëjtën mënyrë si konfigurimi i moduleve të tjera. Krijo në skedar /usr/share/pam-configs/rutoken-gost-pam që përmban emrin e plotë të modulit, nëse është i aktivizuar si parazgjedhje, prioritetin e modulit dhe parametrat e vërtetimit.
Parametrat e vërtetimit përmbajnë kërkesa për suksesin e operacionit:

  • kërkohet: Module të tilla duhet të japin një përgjigje pozitive. Nëse rezultati i thirrjes së modulit përmban një përgjigje negative, kjo do të rezultojë në një gabim vërtetimi. Kërkesa do të hiqet, por modulet e mbetura do të thirren.
  • e nevojshme: Ngjashëm me atë të kërkuar, por menjëherë dështon vërtetimi dhe injoron modulet e tjera.
  • i mjaftueshëm: Nëse asnjë nga modulet e kërkuara ose të mjaftueshme përpara një moduli të tillë nuk ktheu rezultat negativ, atëherë moduli do të kthejë një përgjigje pozitive. Modulet e mbetura do të shpërfillen.
  • opsionale: Nëse nuk ka module të kërkuara në pirg dhe asnjë nga modulet e mjaftueshme nuk kthen një rezultat pozitiv, atëherë të paktën një nga modulet opsionale duhet të japë një rezultat pozitiv.

Përmbajtja e plotë e skedarit /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

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

ruajeni skedarin dhe më pas ekzekutoni
$ sudo pam-auth-update
në dritaren që shfaqet, vendosni një yll pranë tij Rutoken PAM GOST dhe shtytje OK

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

8) Kontrolloni cilësimet

Për të kuptuar që gjithçka është konfiguruar, por në të njëjtën kohë të mos humbni aftësinë për t'u identifikuar në sistem, futni komandën
$ sudo login
Shkruani emrin tuaj të përdoruesit. Çdo gjë është konfiguruar saktë nëse sistemi kërkon një kod PIN të pajisjes.

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

9) Konfiguro kompjuterin që të bllokohet kur të nxirret token

Të përfshira në paketë libpam-pkcs11 shërbimeve të përfshira pkcs11_eventmgr, i cili ju lejon të kryeni veprime të ndryshme kur ndodhin ngjarjet PKCS#11.
Për cilësimet pkcs11_eventmgr shërben si skedar konfigurimi: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Për shpërndarje të ndryshme Linux, komanda që shkakton bllokimin e një llogarie kur hiqet një kartë inteligjente ose token do të ndryshojë. Cm. event card_remove.
Një shembull i skedarit të konfigurimit është paraqitur më poshtë:

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

Pas kësaj shtoni aplikacionin pkcs11_eventmgr për fillimin. Për ta bërë këtë, modifikoni skedarin .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Shtoni rreshtin pkcs11_eventmgr në fund të skedarit dhe rindizni.

Hapat e përshkruar për konfigurimin e sistemit operativ mund të përdoren si udhëzime në çdo shpërndarje moderne Linux, përfshirë ato shtëpiake.

Si të përdorni modulet PAM për vërtetimin lokal në Linux duke përdorur çelësat GOST-2012 në Rutoken

Përfundim

PC-të Linux po bëhen gjithnjë e më të popullarizuar në agjencitë qeveritare ruse dhe vendosja e vërtetimit të besueshëm me dy faktorë në këtë OS nuk është gjithmonë e lehtë. Ne do të jemi të lumtur t'ju ndihmojmë të zgjidhni "problemin e fjalëkalimit" me këtë udhëzues dhe të mbrojmë me besueshmëri aksesin në kompjuterin tuaj pa shpenzuar shumë kohë në të.

Burimi: www.habr.com

Shto një koment