
Lihtsad paroolid ei kaitse, keerulisi on aga keeruline meeles pidada. SeetĂ”ttu satuvad need sageli klaviatuuri alla vĂ”i monitori kĂŒlge kleebitud kleepsude peale. Selleks, et paroolid jÀÀksid unustavate kasutajate mĂ”tetes ja kaitse usaldusvÀÀrsus ei vĂ€heneks, on olemas kahefaktoriline autentimine (2FA).
Kombineerides seadme omamise tegurit ja selle PIN-koodi teadmist, vĂ”ib PIN-kood ise olla lihtsam ja kergemini meeldejÀÀv. PIN-koodi pikkuse vĂ”i juhuslikkuse puudujÀÀgid kompenseeritakse fĂŒĂŒsilise omamise nĂ”udmise ja PIN-koodi rĂŒndamise piirangutega.
Lisaks on riigiasutustes vahel soov, et kÔik töötaks vastavalt riiklikule standardile. Sellest kahefaktorilise autentimise variandist, mis mÔeldud Linuxi sisselogimiseks, on juttu. Alustan algusest.
PAM-moodulid
Paigaldatavad autentimismoodulid (Pluggable Authentication Modules, PAM) on moodulid, millel on standardne API ja erinevate autentimismehhanismide rakendused rakendustes.
KĂ”ik utiliidid ja rakendused, mis oskavad PAM-iga töötada, haaravad need ja saavad kasutada sĂŒsteemi autentimiseks.
Praktikas toimib see enamasti jÀrgmiselt: login meeskond pöördub PAM-i poole, mis teostab kÔik vajalikud kontrollid konfigureeritud moodulite abil ja tagastab tulemuse tagasi login meeskonnale.
librtpam
EttevĂ”tte âAktivâ vĂ€lja töötatud moodul lisab kasutajate kahefaktorilise autentimise nutikaartide vĂ”i USB-tokenite abil, kasutades asĂŒmmeetrilisi vĂ”tmeid, vastavalt uusimatele kodumaistele krĂŒptograafia standarditele.
Vaatame selle tööpÔhimÔtet:
- tokenil on salvestatud kasutaja sertifikaat ja tema privaatvÔti;
- sertifikaat on salvestatud kasutaja kodukaustas usaldusvÀÀrsena.
Autentimisprotsess toimub jÀrgmiselt:
- Ruthokenil otsitakse kasutaja isiklikku sertifikaati.
- KĂŒsimiseks on vajalik tokeni PIN-kood.
- Juhtub, et juhuslikud andmed allkirjastatakse privaatvÔtme abil otse Ruthokeni kiibil.
- Saadud allkiri kontrollitakse kasutaja sertifikaadi avaliku vÔtme abil.
- Moodul tagastab kutsuvasse rakendusse allkirja kontrollimise tulemuse.
Autentimist saab teostada ka HEOST R 34.10-2012 vÔtmetega (pikusega 256 vÔi 512 bitti) vÔi aegunud HEOST R 34.10-2001 vÔtmetega.
Klukkide turvalisuse pĂ€rast ei tasu muretseda â need genereeritakse otse Ruutokenis ja ei lahku kunagi selle mĂ€lust krĂŒptograafiliste operatsioonide ajal.

Ruutoken ECP 2.0 on sertifitseeritud FSB ja FSTEK poolt NDV 4 kohaselt, seega vĂ”ib seda kasutada teabehaldussĂŒsteemides, mis töötlevad konfidentsiaalset teavet.
Praktiline kasutamine
Sobib praktiliselt iga kaasaegne Linux, nÀiteks kasutame xUbuntu 18.10.
1) Paigaldame vajalikud paketid
sudo apt-get install libccid pcscd opensc
Kui soovite lisada töölaua lukustuse ekraanisÀÀstjaga â paigaldage lisaks pakett libpam-pkcs11.
2) Lisame PAM-mooduli, mis toetab GOST-e
Laeme alla teegi, mille nimi on
Kopeerime PAM kausta librtpam.so.1.0.0 sisu sĂŒsteemikausta
/usr/lib/ vÔi /usr/lib/x86_64-linux-gnu/vÔi /usr/lib64
3) Paigaldame paketi librtpkcs11ecp.so
Lae alla ja paigalda DEB- vÔi RPM-pakett jÀrgmisel lingil:
4) Kontrollime, et Ruutoken ECP 2.0 töötab sĂŒsteemis
Terminaalis tÀidame
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Kui nĂ€ete rida Rutoken ECP â siis on kĂ”ik korras.
5) Loeme sertifikaadi
Kontrollime, kas seadmes on sertifikaat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Kui pÀrast rida:
Kasutage pesad 0 koos esitatud tokeniga (0x0)
- kuvatakse teave vÔtmete ja sertifikaatide kohta, siis tuleb sertifikaat lugeda ja salvestada kettale. Selleks tÀitke jÀrgmine kÀsk, kus {id} asemel tuleb sisestada sertifikaadi ID, mille nÀgite eelmise kÀsu vÀljundis:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
Kui fail cert.crt on loodud, liikuge punkti 6 juurde. - ei ole midagi, tĂ€hendab seade on tĂŒhi. Palun vĂ”tke ĂŒhendust administraatori vĂ”i looge vĂ”tmed ja sertifikaat ise, jĂ€rgides jĂ€rgmist punkti.
5.1) Loome testsertifikaadi
TĂ€helepanu! Kirjeldatud vĂ”tmete ja sertifikaatide loomise viisid sobivad testimiseks ega ole mĂ”eldud kasutamiseks tootmisreĆŸiimis. Selleks tuleb kasutada teie organisatsiooni usaldusvÀÀrse sertifitseerimiskeskuse vĂ”i akrediteeritud sertifitseerimisasutuse vĂ€ljastatud vĂ”tmeid ja sertifikaate.
PAM-moodul on loodud kaitseks kohalike arvutite eest ja on mÔeldud vÀikeste organisatsioonide kasutamiseks. Kuna kasutajaid on vÀhe, saab administraator ise jÀlgida sertifikaatide kehtivust ja blokeerida konto vajadusel, samuti jÀlgida sertifikaatide kehtivusaega. PAM-moodul ei suuda veel sertifikaate CRL kaudu kontrollida ega usalduskette luua.
Lihtne tee (brauseri kaudu)
Testsertifikaadi saamiseks kasutage . Protsess vÔtab aega mitte rohkem kui 5 minutit.
Giku tee (konsoli ja vÔimaliku kompilaatori kaudu)
Kontrollige OpenSC versiooni
$ opensc-tool --version
Kui versioon on vÀiksem kui 0.20, siis vÀrskendage vÔi kompileerige meie GitHub-ist (selle artikli avaldamise ajal ei olnud vabanenud versioon 0.20) vÔi OpenSC pÔhiprojekti master harust mitte hiljem than
Genereerime vÔtmepaari jÀrgmiste parameetritega:
--key-type: GOSTR3410-2012-512:A (GOST-2012 512 bit koos parameetritega A), GOSTR3410-2012-256:A (GOST-2012 256 bit koos parameetritega A)
--id: objekti identifikaator (CKA_ID) esindatud kahetoimeliste sĂŒmbolite number jĂ€rjendis hex ASCII tabelist. Kasutage ainult ASCII-koodide trĂŒkisĂŒmboleid, kuna id peab olema edastatud OpenSSL-ile stringina. NĂ€iteks ASCII-koodidega â3132â vastab string «12». Mugavuse huvides saate kasutada .
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
SeejĂ€rel loome sertifikaadi. Allpool on kirjeldatud kahte vĂ”imalust: esimene lĂ€bi CA (kasutame test CA-d), teine â enda allkirjastatud. Selleks tuleb esmalt installida ja seadistada OpenSSL versioon 1.1 vĂ”i uuem, et töötada Ruutokeniga spetsiaalse mooduli rtengine kaudu, jĂ€rgides juhendit. .
NĂ€iteks: â--id 3132â OpenSSL-is tuleb tsiteerida «pkcs11:id=12«.
Saate kasutada test CA teenuseid, mida on palju, nÀiteks, , ja , selleks loome sertifikaadi taotluse
Teine variant â vĂ”ite laiskust nĂ€idata ja luua enda allkirjastatud
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
Laadige sertifikaat seadmesse
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) Registreerige sertifikaat sĂŒsteemis
Veenduge, et teie sertifikaat nÀeb vÀlja nagu base64 fail:

Kui teie sertifikaat nÀeb vÀlja niimoodi:

sertifikaat tuleb konverteerida DER-formaadist PEM-formaati (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Kontrollime taas, et nĂŒĂŒd on kĂ”ik korras.
Lisame sertifikaadi usaldusvÀÀrsete sertifikaatide nimekirja
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Viimane rida kaitseb usaldusvÀÀrsete sertifikaatide nimekirja juhuslike vÔi tahtlike muudatuste eest teiste kasutajate poolt. See vÀlistab olukorra, kus keegi lisaks siia oma sertifikaadi ja saaks teie nimel sisselogida.
7) Seame ĂŒles autentimise
Meie PAM mooduli seadistamine on tÀiesti tavaline ja toimub tÀpselt samamoodi nagu teiste moodulite seadistamine. Loome faili /usr/share/pam-configs/rutoken-gost-pam mis sisaldab mooduli tÀielikku nime, kas see on vaikimisi lubatud, mooduli prioriteet ja autentimise parameetrid.
Autentimise parameetrites on nÔudmisi operatsiooni edukuse kohta:
- required (nĂ”utav): sellised moodulid peavad tagastama positiivse vastuse. Kui mooduli vĂ€ljakutse tulemus sisaldab negatiivset vastust, toob see kaasa autentimise tĂ”rke. PĂ€ring lĂŒkatakse tagasi, kuid teised moodulid kutsutakse siiski esile.
- requisite (vajalik): sarnane required-ile, kuid toob kohe kaasa autentimise tĂ”rke ja ignoreerib ĂŒlejÀÀnud mooduleid.
- piisav (sufficient): kui enne sellist moodulit ei ole ĂŒkski moodul required vĂ”i sufficient tagastanud negatiivset tulemust, tagastab moodul positiivse vastuse. ĂlejÀÀnud mooduleid ignoreeritakse.
- valikuline (optional): kui virnas ei ole mooduleid required ja ĂŒkski moodul sufficient ei tagastanud positiivset tulemust, peab vĂ€hemalt ĂŒks valikuline moodul tagastama positiivse vastuse.
Faili tÀisteave /usr/share/pam-configs/rutoken-gost-pam:
Nimi: Rutoken PAM GOST
Vaikimisi: jah
Prioriteet: 800
Autentimise tĂŒĂŒp: Peamine
Autentimine: piisav /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

salvestame faili, pÀrast seda tÀidame
$ sudo pam-auth-update
avatavas aknas paneme tÀhe Rutoken PAM GOST ja vajutame OK

8) Kontrollime seadistust
Kuidas mÔista, et kÔik on seadistatud, kuid samas mitte kaotada sisenemise vÔimalust, tippige kÀsk
$ sudo login
Sisestage kasutajanimi. KĂ”ik on Ă”igesti seadistatud, kui sĂŒsteem nĂ”uab seadme PIN-koodi.

9) Seame arvuti lukustamise mooduli vÀljavÔtmisel
Paketi koosseisu libpam-pkcs11 kuulub utiliit pkcs11_eventmgr, mis vĂ”imaldab teostada erinevaid toiminguid PKCS#11 sĂŒndmuste tekkimisel.
Seadmise jaoks pkcs11_eventmgr on konfiguratsioonifail: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Erinevate Linuxi distributsioonide puhul on kĂ€sk, mis kutsub vĂ€lja konto blokeerimise nutika kaardi vĂ”i ĆŸetooni eemaldamisel, erinev. Vt. event card_remove.
Konfiguratsioonifaili nÀidis on esitatud allpool:
pkcs11_eventmgr
{
# Taustal kÀivitamine
daemon = true;
# Silumise teate seadistamine
debug = false;
# KĂŒsimise aeg sekundites
polling_time = 1;
# Kaardi eemaldamise taimer
# Vaikimisi 0
expire_time = 0;
# Valige pkcs11 teek Rootokeni jaoks
pkcs11_module = usr/lib/librtpkcs11ecp.so;
# Kaardiga toimetamine
# Kaart on sisestatud:
event card_insert {
# JĂ€tame vaikeseaded (midagi ei toimu)
on_error = ignore;
action = "/bin/false";
}
# Kaart on eemaldatud
event card_remove {
on_error = ignore;
# Kutsub vÀlja ekraanilukustamise funktsiooni
# GNOME'i jaoks
action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
# XFCE jaoks
# action = "xflock4";
# Astra Linuxi (FLY) jaoks
# action = "fly-wmfunc FLYWM_LOCK";
}
# Kaart on pikka aega eemaldatud
event expire_time {
# JĂ€tame vaikeseaded (midagi ei toimu)
on_error = ignore;
action = "/bin/false";
}
}PÀrast seda lisage rakendus pkcs11_eventmgr automaatkÀivitamiseks. Selle jaoks redigeerige faili .bash_profile:
$ nano /home//.bash_profile
Lisage faili lÔppu rida pkcs11_eventmgr ja taaskÀivitage arvuti.
Kirjeldatud sammud operatsioonisĂŒsteemi seadistamiseks vĂ”ivad toimida juhendina igas kaasaegses Linuxi distributiivis, sealhulgas kodumaisetes.

KokkuvÔte
Linuxi PC-d on Venemaa riigiasutustes ĂŒha populaarsemad, kuid usaldusvÀÀrse kahefaktorilise autentimise seadistamine selles operatsioonisĂŒsteemis ei ole alati lihtne. Oleme rÔÔmsad, et saame selle juhendiga aidata lahendada "parooliprobleeme" ja kindlustada juurdepÀÀs arvutitele, kulutamata selleks liiga palju aega.
Allikas: habr.com
