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ë:
- Rutoken kërkon certifikatën personale të përdoruesit.
- Kërkohet kodi PIN i shenjës.
- Të dhënat e rastësishme nënshkruhen në çelësin privat direkt në çipin Rutoken.
- Nënshkrimi që rezulton verifikohet duke përdorur çelësin publik nga certifikata e përdoruesit.
- 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.
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
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:
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
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
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
$ ./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
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,
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:
Nëse certifikata juaj duket si kjo:
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
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
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.
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.
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