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

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

Nëse certifikata juaj duket kështu:

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

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

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.

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.

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
