Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

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:

  1. Ruthokenil otsitakse kasutaja isiklikku sertifikaati.
  2. Küsimiseks on vajalik tokeni PIN-kood.
  3. Juhtub, et juhuslikud andmed allkirjastatakse privaatvõtme abil otse Ruthokeni kiibil.
  4. Saadud allkiri kontrollitakse kasutaja sertifikaadi avaliku võtme abil.
  5. 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.

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

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 https://download.rutoken.ru/Rutoken/PAM/
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: https://www.rutoken.ru/support/download/pkcs/

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 veebiteenust „Rukuteni registreerimiskeskus”. 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 pkcs11-tool haru, mis toetab GOST-2012 meie GitHub-ist (selle artikli avaldamise ajal ei olnud vabanenud versioon 0.20) või OpenSC põhiprojekti master harust mitte hiljem than commit 8cf1e6f

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 stringi ASCII-koodideks konvertimise veebiteenust.

$ ./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. OpenSSL-i installimine ja seadistamine.
Näiteks: ‘--id 3132’ OpenSSL-is tuleb tsiteerida «pkcs11:id=12«.

Saate kasutada test CA teenuseid, mida on palju, näiteks, siin on, siin on ja siin on, 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:

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

Kui teie sertifikaat näeb välja niimoodi:

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

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

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

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

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

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.

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

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.

Kuidas kasutada PAM-mooduleid kohaliku autentimise jaoks Linuxis GOST-2012 võtmete põhjal Rutanoki abil

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

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster