
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
