
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ë:
- Në Rutoken kërkohet certifikata personale e përdoruesit.
- Kërkohet kodi PIN i tokeneve.
- Nënshkrohet një të dhënë të rastësishme në çelësin privat direkt në çipin e Rutokeneve.
- Nënshkrimi i marrë kontrollohet me çelësin publik nga certifikata e përdoruesit.
- 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.

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
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:
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 . 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 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
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 .
$ ./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 .
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, , dhe , 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:

Nëse certifikata juaj duket kështu:

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

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

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.

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.

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
