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

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

Fjalëkalimet e thjeshta nuk ofrojnë siguri, ndërsa ato të komplikuara janë të pamundura për t'u memorizuar. Prandaj, ato shpesh përfundojnë në një shtampë nën tastierë apo në monitor. Për të siguruar që fjalëkalimet të mbeten në mendjen e përdoruesve "të harruar" dhe që siguria të mos humbasë – ekziston autentikimi me dy faktorë (2FA).

Falë kombinimit të faktorëve të pronësisë së pajisjes dhe njohjes së kodit PIN, kodin PIN mund ta ketë më të thjeshtë dhe më të lehtë për t'u mbajtur mend. Dobësitë në gjatësi ose rastësinë e kodit PIN kompensohen nga kërkesa e posedimit fizik dhe kufizimet në provimin e kodit PIN.

Për më tepër, në institucionet shtetërore ndonjëherë dëshirojnë që gjithçka të funksionojë sipas standardeve. Ky artikull do të flasë për një variant të 2FA për qasje në Linux. Do të filloj nga fillimi.

Modulet PAM

Modulet e Autentikimit të Pleshuar (Pluggable Authentication Modules, PAM) janë module me një API standard dhe realizime të mekanizmave të ndryshëm të autentikimit në aplikacione.
Të gjitha mjetet dhe aplikacionet që dinë të punojnë me PAM i mbështesin ato dhe mund t'i përdorin për autentikimin e përdoruesit.
Në praktikë, kjo funksionon si më poshtë: komanda login i drejtohet PAM, i cili kryen të gjitha kontrollimet e nevojshme përmes moduleve të specifikuara në skedarin e konfigurimit dhe i kthen rezultatin përsëri komandës login.

librtpam

Moduli i zhvilluar nga kompania "Aktiv" shton autentikimin me dy faktorë të përdoruesve përmes kartave të mençura ose tokeneve USB duke përdorur çelësa asimetrikë sipas standardeve më të fundit të kriptografisë vendase.

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

  • në token ruhet certifikata e përdoruesit dhe çelësi i tij privat;
  • certifikata është ruajtur në katalogun e shtëpisë së përdoruesit si e besueshme.

Procesi i autentikimit ndodh si më poshtë:

  1. Në Rutoken kërkohet certifikata personale e përdoruesit.
  2. Kërkohet kodi PIN i tokeneve.
  3. Nënshkrohet një të dhënë të rastësishme në çelësin privat direkt në çipin e Rutokeneve.
  4. Nënshkrimi i marrë kontrollohet me çelësin publik nga certifikata e përdoruesit.
  5. Moduli i kthen aplikacionit që e thirri rezultatin e kontrollit të nënshkrimit.

Mund të autentikoheni me çelësat e standardeve GOST R 34.10-2012 (me gjatësi 256 ose 512 bit) ose me GOST R 34.10-2001 të vjetëruar.

Për sigurinë e çelësave nuk duhet të shqetësoheni – ata gjenerohen drejtpërdrejt në Rutoken dhe kurrë nuk e braktisin memorjen e tij gjatë operacioneve kriptografike.

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

Rutoken ECP 2.0 është certifikuar nga FSB dhe FSTEK sipas NDV 4, prandaj mund të përdoret në sistemet informative që përpunojnë informacion konfidencial.

Përdorimi praktik

Çdo Linux modern do të jetë i përshtatshëm, 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 punës me screensaver – instaloni gjithashtu paketën libpam-pkcs11.

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

Ngarko bibliotekën nga https://download.rutoken.ru/Rutoken/PAM/
Kopjoni përmbajtjen e folderit PAM librtpam.so.1.0.0 në folderin sistemor
/usr/lib/ ose /usr/lib/x86_64-linux-gnu/ose /usr/lib64

3) Instaloni paketin me librtpkcs11ecp.so

Ngarko dhe instaloni paketin DEB- ose RPM nga lidhja: https://www.rutoken.ru/support/download/pkcs/

4) Kontrolloni nëse Rutoken ECP 2.0 funksionon 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 në pajisje 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ë duhet të lexoni certifikatën dhe ta ruani në disk. Për këtë, ekzekutoni komandën e mëposhtme, ku për vendin e {id} duhet të vendosni 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ë rast 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 e mëparshme.

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 t'u përdorur në mod të prodhimit. Për këtë, duhet të përdorni çelësa dhe certifikata të lëshuara nga një qendër e besuar të certifikimit të organizatës suaj ose një qendër të akredituar të autentikimit.
Moduli PAM është krijuar për të mbrojtur kompjuterët lokalë dhe parashikon punën në organizata të vogla. Meqenëse përdoruesit janë të pakët, administrator mund ta monitorojë vetë tërheqjen e certifikatave dhe të bllokojë manualisht llogaritë, ashtu siç është afati i vlefshmërisë së certifikatave. Moduli PAM ende nuk di të verifikojë certifikatat përmes CRL dhe të ndërtojë zinxhirë besimi.

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

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

Rruga e gjeshtrës (përmes konsolës dhe, ndoshta, kompajlerit)

Kontrolloni versionin e OpenSC
$ opensc-tool --version
Nëse versioni është më i vogël se 0.20, azhurnoni ose ndihmoni degen 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 ende nuk është lëshuar) ose nga dega master e projektit kryesor OpenSC jo më vonë se komita 8cf1e6f

Tani krijojmë një çift çelësash me parametra:
--key-type: GOSTR3410-2012-512:A (GOST-2012 512 bit me parametër A), GOSTR3410-2012-256:A (GOST-2012 256 bit me parametër A)

--id: identifikuesi i objektit (CKA_ID) në formën e numrave dyshifrorë të simboleve në hex nga tabela ASCII. Përdorni vetëm kodet ASCII të simboleve të printuar, pasi id e nevojitet ta kaloni te OpenSSL në formën e një stringu. Për shembull, ASCII-kodet "3132" përkojnë me stringun "12". Për lehtësinë dhe komoditetin, mund të përdorni shërbimin online për konvertimin e stringut në kodet ASCII.

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

Tani do të krijojmë certifikatën. Më poshtë do të përshkruhen dy rrugë: e para përmes CA (ne do të tregojmë CA testues), 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 RUTOKEN 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ë specifikoni "pkcs11:id=12«.

Mund të shpërdoroni shërbimet e CA testuese, të cilat janë të shumta, për shembull, këtu, këtu dhe këtu, për këtë do të krijojmë një kërkesë për certifikatën

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

Ngarkohet certifikata në pajisje
$ openssl req -utf8 -x509 -motor i çelësit -çelësi "pkcs11:id=12" -motor rtengine -jashtë cert.cer

6) Regjistrojeni certifikatën në sistem

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

Si të përdorni modulat 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 modulat PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

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

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

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

7) Konfiguroni autentikimin

Konfigurimi i modulit tonë PAM është krejt standard dhe bëhet po ashtu si dhe konfigurimi i moduleve të tjera. Krijoni një skedar /usr/share/pam-configs/rutoken-gost-pam duke përfshirë emrin e plotë të modulit, nëse është aktivizuar nga default, prioritetin e modulit dhe parametrat e autentikimit.
Në parametrat e autentikimit ka kërkesa për suksesin e operacionit:

  • required (e domosdoshme): modulet e tilla duhet të kthejnë një përgjigje pozitive. Nëse rezultati i thirrjes së modulit ka një përgjigje negative, kjo do të çojë në një gabim autentikimi. Kërkesa do të përjashtohet, por modulet e tjera do të thirren.
  • requisite (e nevojshme): e ngjashme me required, por menjëherë çon në dështimin e autentikimit dhe injoron modulet e tjera.
  • sufficient (i mjaftueshëm): nëse para një moduli të tillë asnjë nga modulet required ose sufficient nuk 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ë grumbullin nuk ka module required dhe asnjë nga modulet sufficient nuk ktheu 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
Tipi i Autentikimit: Primar
Autentikimi: i mjaftueshëm /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

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

ruani skedarin, pastaj përfundoni
$ sudo pam-auth-update
në dritaren që do të shfaqet vendosni një yll pranë Rutoken PAM GOST dhe klikojmë OK

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

8) Kontrolloni konfigurimin

Për të kuptuar nëse gjithçka është konfiguruar, por në të njëjtën kohë mos humbni mundësinë e hyrjes në sistem, futni 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 modulat PAM për autentifikim lokal në Linux me çelësat GOST-2012 në Rutoken

9) Konfiguroni bllokimin e kompjuterit gjatë nxjerrjes së token-it

Në paketë libpam-pkcs11 është përfshirë utilitari pkcs11_eventmgr, i cili lejon të kryhen veprime të ndryshme në rastin e ngjarjeve PKCS#11.
Për konfigurimin Për konfigurimin pkcs11_eventmgr /etc/pam_pkcs11/pkcs11_eventmgr.conf
shërben skedari i konfigurimit: Për distro të ndryshme Linux, komanda që thërret bllokimin e llogarisë gjatë nxjerrjes së kartave inteligjente ose token-it do të ndryshojë. Shih..
event card_remove

Shembulli i skedarit të konfigurimit është i paraqitur më poshtë:

Pas kësaj shtoni aplikacionin Për konfigurimin në ngarkesën automatike. Për këtë, redaktoni skedarin .bash_profile:
$ nano /home//.bash_profile
Shtoni në fund të skedarit rreshtin pkcs11_eventmgr dhe rindezuni.

Hapat e përshkruar për konfigurimin e sistemit operativ mund të përdoren si udhëzim në çdo distribuim modern të Linux, përfshirë ato vendas.

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

Përfundimi

PC-të me Linux në strukturat shtetërore ruse po bëhen gjithnjë e më të popullarizuar, dhe konfigurimi i një autentifikimi të dyfishtë të besueshëm në këtë OS nuk është gjithmonë i lehtë. Ne jemi të lumtur që me këtë udhëzues mund t'ju ndihmojmë të zgjidhni "problemin e fjalëkalimeve" dhe të siguroni aksesin në PC pa shpenzuar shumë kohë.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster