Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

FjalĂ«t kalimi tĂ« thjeshta nuk mbrojnĂ«, ndĂ«rsa ato tĂ« komplikuara Ă«shtĂ« e vĂ«shtirĂ« t'i kujtohen. KĂ«shtuqĂ«, ato shpesh pĂ«rfundojnĂ« nĂ«n njĂ« etikĂ«t nĂ« tastierĂ« ose nĂ« monitor. PĂ«r t'u siguruar qĂ« fjalĂ«t kalimi mbahen nĂ« mend nga pĂ«rdoruesit "tĂ« harruar" dhe qĂ« siguria e mbrojtjes nuk humbet – ekziston autentifikimi me dy faktorĂ« (2FA).

Falë kombinimit të faktorëve të zotërimit të pajisjes dhe dijenisë së PIN-it të saj, vetë PIN-i mund të jetë më i thjeshtë dhe më i lehtë për t'u kujtuar. Mungesat në gjatësi ose rastësinë e PIN-it kompensohen nga kërkesa e zotërimit fizik dhe kufizimet në provat e PIN-it.

Përveç kësaj, në institucionet shtetërore ndodhi që të duan që gjithçka të funksionojë sipas standardeve GOST. Në lidhje me këtë variant të 2FA për hyrje në Linux do të flas. Do të filloj nga larg.

Modulet PAM

Modulet e Autentifikimit të Ndërlidhura (Pluggable Authentication Modules, PAM) janë module me një API standard dhe realizime të mekanizmave të ndryshëm të autentifikimit në aplikacione.
Të gjitha mjetet dhe aplikacionet që dinë të punojnë me PAM, i kapin ato dhe mund t'i përdorin për autentifikimin e përdoruesit.
Në praktikë, kjo funksionon përafërsisht kështu: komandës login i qaset PAM, e cila i bën të gjitha kontrollimet e nevojshme me ndihmën e moduleve të përcaktuara në skedarin e konfigurimit dhe i kthen rezultatin komandës login.

librtpam

Moduli i zhvilluar nga kompania "Aktiv" shton autentifikimin me dy faktorë për përdoruesit përmes kartave inteligjente ose USB-tokenëve duke përdorur çelësa asimetrikë sipas standardeve të fundit të kriptografisë vendëse.

Le të shqyrtojmë parimin e funksionimit të tij:

  • nĂ« token ruhet certifikata e pĂ«rdoruesit dhe çelĂ«si i tij privat;
  • certifikata Ă«shtĂ« ruajtur nĂ« katalogun personal tĂ« pĂ«rdoruesit si e besuar.

Procesi i autentifikimit ndodh në këtë mënyrë:

  1. Në RuToken kërkohet certifikata personale e përdoruesit.
  2. Kërkohet PIN-i i token-it.
  3. Nënshkruhet një të dhënë të rastësishme me çelësin privat direkt në çipin e RuToken-it.
  4. Nënshkrimi i marrë kontrollohet me çelësin publik nga certifikata e përdoruesit.
  5. Moduli i kthen aplikacionit të thirrur rezultatin e kontrollit të nënshkrimit.

Mund të autentifikoheni me çelësa GOST R 34.10-2012 (gjatësitë 256 ose 512 bit) ose me GOST R 34.10-2001 të vjetëruar.

NukĂ« keni pĂ«r tĂ« shqetĂ«suar pĂ«r sigurinĂ« e çelĂ«save – ato gjenerohen drejtpĂ«rdrejt nĂ« RutokĂ«n dhe kurrĂ« nuk e lĂ«nĂ« memorjen e tij gjatĂ« operacioneve kriptografike.

Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

Rutoken ECP 2.0 është e certifikuar nga FSB dhe FSTEK sipas NTV 4, prandaj mund të përdoret në sistemet informative që trajtojnë informacion të besueshëm.

Përdorimi praktik

Përshtatet pothuajse çdo Linux modern, për shembull, 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 bllokimin e ekranit me tĂ« kaluarĂ«n e ekranit – instaloni gjithashtu paketĂ«n libpam-pkcs11.

2) Shtoni modulin PAM me mbështetje për GOST

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

3) Instaloni paketën me librtpkcs11ecp.so

Ngarkoni dhe instaloni paketin DEB ose RPM në lidhjen: https://www.rutoken.ru/support/download/pkcs/

4) Kontrolloni nëse Rutoken ECP 2.0 punon në sistem

NĂ« terminal ekzekutoni
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Nëse shihni rreshtin Rutoken ECP atëherë gjithçka është në rregull.

5) Lexoni certifikatën

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

  • informacioni shfaqet pĂ«r çelĂ«sat dhe certifikatat, atĂ«herĂ« Ă«shtĂ« e nevojshme tĂ« lexoni certifikatĂ«n dhe tĂ« ruani nĂ« disk. PĂ«r kĂ«tĂ«, ekzekutoni komandĂ«n e mĂ«poshtme, ku nĂ« vend tĂ« {id} duhet tĂ« vendosni ID-nĂ« e certifikatĂ«s qĂ« e 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 kaloni në pikën 6).
  • nuk ka asgjĂ«atĂ«herĂ« pajisja Ă«shtĂ« e zbrazĂ«t. Kontaktoni administratorin ose krijoni çelĂ«sat dhe certifikatĂ«n vetĂ«, duke ndjekur pikĂ«n tjetĂ«r.

5.1) Krijoni një certifikatë testuese

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ë mënyrë operative. Për këtë, duhet të përdoren çelësat dhe certifikatat që janë lëshuar nga një autoritet i besueshëm të certifikimit të organizatës tuaj ose nga një qendër e akredituar të verifikimit.
Moduli PAM është krijuar për të mbrojtur kompjuterët lokalë dhe parashikon funksionimin në organizata të vogla. Duke qenë se përdoruesit janë të pakët, Administratori mund të ndjekë vetë rinovimin e certifikatave dhe të bllokojë manualisht llogaritë, si dhe të menaxhojë afatin e vlefshmërisë së certifikatave. Moduli PAM aktualisht nuk është në gjendje të verifikojë certifikatat përmes CRL dhe të ndihmojë në ndërtimin e zinxhirëve të besimit.

Një rrugë e thjeshtë (nëpërmjet shfletuesit)

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

Rruga e gjahtarëve (nëpërmjet konsolës dhe ndoshta kompilatorit)

Kontrolloni versionin e OpenSC
$ opensc-tool --version
Nëse versioni është më i vogël se 0.20, përditësoni ose ndërtoni degresin pkcs11-tool me mbështetje për GOST-2012 nga GitHub-i ynë (në momentin e publikimit të këtij artikulli, lëshimi 0.20 nuk ishte ende bërë) ose nga dega master e projektit kryesor OpenSC, jo më vonë se komitit 8cf1e6f

Krijoni një çift kyçesh me parametrat:
--key-type: GOSTR3410-2012-512:A (GOST-2012 512 bit me parametrin A), GOSTR3410-2012-256:A (GOST-2012 256 bit me parametrin A)

--id: identifikuesi i objektit (CKA_ID) në formën e numrave dyshifrorë në hex nga tabela ASCII. Përdorni vetëm kodet ASCII të simboleve të printueshme, pasi id do të duhet të dërgohet në OpenSSL si një varg. Për shembull, kodet ASCII "3132" korrespondojnë me vargun "12". Për lehtësi, mund të përdorni shërbimin në internet 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Ă«. MĂ« poshtĂ« do tĂ« pĂ«rshkruhen dy rrugĂ«: e para pĂ«rmes UÇ (do tĂ« pĂ«rdorim UÇ testuese), e dyta - vetĂ«-nĂ«nshkruar. PĂ«r kĂ«tĂ«, sĂ« pari duhet tĂ« instaloni dhe konfiguroni OpenSSL version 1.1 ose mĂ« tĂ« ri pĂ«r tĂ« punuar me Rutan pĂ«rmes modulit tĂ« veçantĂ« rtengine duke pĂ«rdorur udhĂ«zimin Instalimi dhe konfigurimi i OpenSSL.
Për shembull: për '--id 3132' në OpenSSL duhet të tregoni "pkcs11:id=12«.

Mund tĂ« shfrytĂ«zoni shĂ«rbimet e UÇ-testues, tĂ« cilat janĂ« shumĂ«, pĂ«r shembuj, ja, ja dhe ja, pĂ«r tĂ« cilin do tĂ« krijojmĂ« njĂ« kĂ«rkesĂ« pĂ«r certifikatĂ«

Një mundësi tjetër është të dorëzoheni dhe të krijoni një certifikatë vetë-nënshkruar
$ openssl kërkesë -utf8 -e re -forma e çelësit engine -çelësi "pkcs11:id=12" -engine rtengine -dërgo req.csr

Ngarkohet certifikata në pajisje
$ openssl kërkesë -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 autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

Nëse certifikata juaj duket kështu:

Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

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

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Kërkojmë përsëri që tani gjithçka të jetë në rregull.

Shtojmë 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 modifikimi aksidental ose të qëllimshëm nga përdorues të tjerë. Kjo përjashton situatën kur dikush shton këtu certifikatën e tij dhe mund të hyjë në sistem në emrin tuaj.

7) Konfigurojmë autentifikimin

Konfigurimi i modulit tonë PAM është krejtësisht standard dhe bëhet pikërisht si konfigurohen modulët e tjerë. Krijojmë në skedarin /usr/share/pam-configs/rutoken-gost-pam duke përfshirë emrin e plotë të modulit, nëse është aktivuar nga e para, prioritetin e modulit dhe parametrat e autentifikimit.
Në parametrat e autentifikimit ka kërkesa për suksesin e operacionit:

  • required (i nevojshĂ«m): modulet e tilla duhet tĂ« kthejnĂ« njĂ« pĂ«rgjigje pozitive. NĂ«se rezultati i thirrjes sĂ« modulit pĂ«rmban njĂ« pĂ«rgjigje negative, kjo do tĂ« çojĂ« nĂ« njĂ« gabim autentifikimi. KĂ«rkesa do tĂ« anulohet, por modulet e tjera do tĂ« thirren.
  • requisite (e nevojshme): ngjashĂ«m me required, por menjĂ«herĂ« çon nĂ« dĂ«shtimin e autentifikimit dhe injoron modulet e tjera.
  • sufficient (e mjaftueshme): nĂ«se para njĂ« moduli tĂ« tillĂ« nuk ka ndonjĂ« nga modulet required ose sufficient qĂ« ktheu njĂ« rezultat negativ, atĂ«herĂ« moduli do tĂ« kthejĂ« njĂ« pĂ«rgjigje pozitive. Modulet e mbetura do tĂ« injorohen.
  • optional (shtesĂ«): nĂ«se nĂ« stek nuk ka modulet required dhe asnjĂ« nga modulet sufficient nuk ka kthyer njĂ« rezultat pozitiv, atĂ«herĂ« tĂ« paktĂ«n njĂ« nga modulet optional duhet tĂ« kthejĂ« njĂ« pĂ«rgjigje pozitive.

Përmbajtja e plotë e skedarit /usr/share/pam-configs/rutoken-gost-pam:
Emri: Rutoken PAM GOST
Parazgjedhja: po
Prioriteti: 800
Lloji i Autentikimit: Primar
Autentikimi: i mjaftueshëm /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

shkruajmë skedarin, pas kësaj ekzekutojmë
$ sudo pam-auth-update
në dritaren e shfaqur vëmë një yll pranë Rutoken PAM GOST and click OK

Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

8) Kontrollojmë konfigurimin

Për të kuptuar se gjithçka është konfiguruar, por për të mos humbur mundësinë e hyrjes në sistem, shkruani komandën
$ sudo login
Shkruani emrin e përdoruesit. Gjithçka është konfiguruar saktë, nëse sistemi kërkon PIN-in e pajisjes.

Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

9) Konfigurojmë bllokimin e kompjuterit gjatë nxjerrjes së tokenit

Në paketën libpam-pkcs11 përfshihet utilita pkcs11_eventmgr, e cila lejon kryerjen e veprimeve të ndryshme me rastin e ngjarjeve PKCS#11.
Për konfigurimin pkcs11_eventmgr shërben skedari i konfigurimit: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Për shpërndarje të ndryshme të Linux-it, komanda që shkakton bllokimin e llogarisë gjatë nxjerrjes së kartave inteligjente ose tokenit do të ndryshojë. Shih. event card_remove.
Një shembull i skedarit të konfigurimit paraqitet më poshtë:

pkcs11_eventmgr
{
    # Aktivimi në sfond
    daemon = true;
     
    # Konfigurimi i mesazheve të zgjeruara
    debug = false;
 
    # Koha e anketimit në sekonda
    polling_time = 1;
 
    # Caktimi i kohës për skadimin e kartës
    # Në mënyrë të parazgjedhur 0
    expire_time = 0;
 
    # Zgjedhja e bibliotekës pkcs11 për punën me Rutoken
    pkcs11_module = usr/lib/librtpkcs11ecp.so;
 
    # Veprime me kartën
    # Karta është futur:
    event card_insert {
        # Lini vlerat e parazgjedhura (nuk ndodh asgjë)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # Karta është nxjerrë
    event card_remove {
        on_error = ignore;
         
        # Thërrisni funksionin e bllokimit të ekranit
        
        # Për GNOME 
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
        
        # Për XFCE
        # action = "xflock4";
        
        # Për Astra Linux (FLY)
        # action = "fly-wmfunc FLYWM_LOCK";
    }
 
    # Karta është nxjerrë për një kohë të gjatë
    event expire_time {
        # Lini vlerat e parazgjedhura (nuk ndodh asgjë)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

Pas kësaj, shtoni aplikacionin pkcs11_eventmgr në ngarkimin automatik. Për këtë, redaktoni skedarin .bash_profile:
$ nano /home//.bash_profile
Shtoni në fund të skedarit rreshtin pkcs11_eventmgr dhe rinisni sistemin.

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

Si të përdorni modulet PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

Përfundim

PC-të me Linux në strukturat shtetërore ruse po bëhen gjithnjë e më të njohura, dhe të konfigurosh një autentikim të besueshëm me dy faktorë në këtë OS nuk është gjithmonë e lehtë. Ne do të ishim të lumtur t'ju ndihmojmë me këtë udhëzues për të zgjidhur "problemin e fjalëkalimeve" dhe për të mbrojtur sigurt aksesin në PC, pa e shpenzuar shumë kohë.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster