Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

Lihtsad paroolid ei ole turvalised ja keerukaid on võimatu meeles pidada. Seetõttu satuvad need nii sageli klaviatuuri või monitori all olevale kleeppaberile. Tagamaks, et paroolid jääksid “unustavatele” kasutajatele meelde ja kaitse usaldusväärsus ei kaoks, on olemas kahefaktoriline autentimine (2FA).

Seadme omamise ja selle PIN-koodi tundmise kombinatsiooni tõttu võib PIN-kood ise olla lihtsam ja hõlpsamini meeldejääv. PIN-koodi pikkuse või juhuslikkuse puudused kompenseerivad füüsilise omamise nõue ja PIN-koodi toore jõu kasutamise piirangud.

Lisaks juhtub valitsusasutustes, et nad tahavad, et kõik töötaks vastavalt GOST-ile. Seda 2FA võimalust Linuxi sisselogimiseks arutatakse. Alustan kaugelt.

PAM moodulid

Pluggable Authentication Modules (PAM) on standardse API-ga moodulid, millel on rakendustes erinevad autentimismehhanismid.
Kõik PAM-iga töötavad utiliidid ja rakendused võtavad need üles ja saavad neid kasutaja autentimiseks kasutada.
Praktikas töötab see umbes nii: sisselogimiskäsk kutsub välja PAM-i, mis teeb kõik vajalikud kontrollid konfiguratsioonifailis määratud moodulite abil ja tagastab tulemuse sisselogimiskäsule tagasi.

librtpam

Ettevõtte Aktiv arendatud moodul lisab kodumaise krüptograafia uusimatele standarditele vastava asümmeetriliste võtmete abil kiipkaarte või USB-märke kasutavate kasutajate kahefaktorilise autentimise.

Vaatame selle tööpõhimõtet:

  • Token salvestab kasutaja sertifikaadi ja selle privaatvõtme;
  • Sertifikaat salvestatakse kasutaja kodukataloogi usaldusväärsena.

Autentimisprotsess toimub järgmiselt:

  1. Rutoken otsib kasutaja isiklikku sertifikaati.
  2. Küsitakse märgi PIN-koodi.
  3. Juhuslikud andmed allkirjastatakse privaatvõtmega otse Rutokeni kiibis.
  4. Saadud allkirja kontrollitakse kasutaja sertifikaadi avaliku võtmega.
  5. Moodul tagastab helistavale rakendusele allkirja kontrollimise tulemuse.

Saate autentida võtmete GOST R 34.10-2012 (pikkus 256 või 512 bitti) või vananenud GOST R 34.10-2001 abil.

Te ei pea muretsema võtmete turvalisuse pärast – need genereeritakse otse Rutokenis ja ei lahku kunagi krüptograafiliste toimingute ajal selle mälust.

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

Rutoken EDS 2.0 on FSB ja FSTEC poolt NDV 4 järgi sertifitseeritud, mistõttu saab seda kasutada konfidentsiaalset infot töötlevates infosüsteemides.

Praktiline kasutamine

Peaaegu iga kaasaegne Linux sobib, näiteks kasutame xUbuntu 18.10.

1) Installige vajalikud paketid

sudo apt-get install libccid pcscd opensc
Kui soovite lisada ekraanisäästjaga töölaualuku, installige pakett täiendavalt libpam-pkcs11.

2) Lisage GOST-i toega PAM-moodul

Teegi laadimine aadressilt https://download.rutoken.ru/Rutoken/PAM/
Kopeerige PAM-i kausta librtpam.so.1.0.0 sisu süsteemikausta
/usr/lib/ või /usr/lib/x86_64-linux-gnu/või /usr/lib64

3) Installige pakett failiga librtpkcs11ecp.so

Laadige alla ja installige DEB- või RPM-pakett lingilt: https://www.rutoken.ru/support/download/pkcs/

4) Kontrollige, kas Rutoken EDS 2.0 töötab süsteemis

Terminalis teostame
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Kui näete joont Rutoken ECP <no label> - see tähendab, et kõik on korras.

5) Lugege tunnistust

Kontrollige, kas seadmel on sertifikaat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Kui pärast rida:
Using slot 0 with a present token (0x0)

  • kuvatakse teave võtmete ja sertifikaatide kohta peate sertifikaadi läbi lugema ja kettale salvestama. Selleks käivitage järgmine käsk, kus {id} asemel peate asendama sertifikaadi ID, mida 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, jätkake sammuga 6).
  • seal pole midagi, siis on seade tühi. Võtke ühendust oma administraatoriga või looge võtmed ja sertifikaat ise, järgides järgmist sammu.

5.1) Koostage katsesertifikaat

Tähelepanu! Kirjeldatud võtmete ja sertifikaatide loomise meetodid sobivad testimiseks ega ole mõeldud kasutamiseks lahingurežiimis. Selleks peate kasutama võtmeid ja sertifikaate, mille on välja andnud teie organisatsiooni usaldusväärne sertifitseerimisasutus või akrediteeritud sertifitseerimisasutus.
PAM-moodul on mõeldud kohalike arvutite kaitsmiseks ja mõeldud töötama väikestes organisatsioonides. Kuna kasutajaid on vähe, saab Administraator jälgida sertifikaatide tühistamist ja kontode käsitsi blokeerimist ning sertifikaatide kehtivusaega. PAM-moodul ei tea veel, kuidas kontrollida sertifikaate CRL-ide abil ja luua usaldusahelaid.

Lihtne viis (brauseri kaudu)

Katsesertifikaadi saamiseks kasutage veebiteenus "Rutokeni registreerimiskeskus". Protsess ei kesta rohkem kui 5 minutit.

Nohiku viis (konsooli ja võib-olla ka kompilaatori kaudu)

Kontrollige OpenSC versiooni
$ opensc-tool --version
Kui versioon on väiksem kui 0.20, värskendage või ehitage pkcs11-tööriista haru GOST-2012 toega meie GitHubist (selle artikli ilmumise ajal ei olnud versiooni 0.20 veel välja antud) või peamise OpenSC projekti peaharust hiljemalt siduma 8cf1e6f

Looge järgmiste parameetritega võtmepaar:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: objekti identifikaator (CKA_ID) kahekohaliste kuueteistkümnendmärkide numbritena ASCII tabelist. Kasutage prinditavate märkide jaoks ainult ASCII koode, kuna... ID tuleb anda OpenSSL-ile stringina. Näiteks ASCII kood “3132” vastab stringile “12”. Mugavuse huvides võite kasutada võrguteenus stringide ASCII-koodideks teisendamiseks.

$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132

Järgmisena koostame sertifikaadi. Allpool kirjeldatakse kahte võimalust: esimene on läbi CA (kasutame test CA-sid), teine ​​on ise allkirjastatud. Selleks peate esmalt installima ja konfigureerima OpenSSL-i versiooni 1.1 või uuema, et töötada Rutokeniga spetsiaalse rtengine-mooduli kaudu, kasutades juhendit OpenSSL-i installimine ja konfigureerimine.
Näiteks: '--id 3132"OpenSSL-is peate määrama "pkcs11:id=12"

Saate kasutada test-CA teenuseid, mida on palju, näiteks siin, siin и siin, loome selleks sertifikaadi päringu

Teine võimalus on laiskusele järele anda ja ise allkirjastatud luua
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Sertifikaadi üleslaadimine seadmesse
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registreeri sertifikaat süsteemis

Veenduge, et teie sertifikaat näeks välja nagu base64 fail:

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

Kui teie sertifikaat näeb välja selline:

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

siis peate teisendama sertifikaadi DER-vormingust PEM-vormingusse (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Kontrollime uuesti, et nüüd on kõik korras.

Lisage sertifikaat usaldusväärsete sertifikaatide loendisse
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Viimane rida kaitseb usaldusväärsete sertifikaatide loendit kogemata või tahtliku muutmise eest teiste kasutajate poolt. See ei lase kellelgi oma sertifikaati siia lisada ja teie nimel sisse logida.

7) Seadistage autentimine

Meie PAM-mooduli seadistamine on täiesti standardne ja toimub täpselt samamoodi nagu teiste moodulite seadistamine. Loo failiks /usr/share/pam-configs/rutoken-gost-pam sisaldab mooduli täisnime, kas see on vaikimisi lubatud, mooduli prioriteeti ja autentimisparameetreid.
Autentimisparameetrid sisaldavad nõudeid toimingu õnnestumiseks:

  • nõutav: sellised moodulid peavad andma positiivse vastuse. Kui mooduli kõne tulemus sisaldab negatiivset vastust, põhjustab see autentimisvea. Taotlus tühistatakse, kuid ülejäänud moodulid kutsutakse välja.
  • nõutav: sarnane nõutavaga, kuid autentimine ebaõnnestub koheselt ja ignoreerib teisi mooduleid.
  • piisav: kui ükski nõutud või piisav moodul enne sellist moodulit ei andnud negatiivset tulemust, tagastab moodul positiivse vastuse. Ülejäänud mooduleid ignoreeritakse.
  • valikuline: kui virnas pole nõutavaid mooduleid ja ükski piisav moodul ei anna positiivset tulemust, peab vähemalt üks valikulistest moodulitest tagastama positiivse tulemuse.

Täielik faili sisu /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

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

salvestage fail ja seejärel käivitage
$ sudo pam-auth-update
lisage ilmuvas aknas selle kõrvale tärn Rutoken PAM GOST ja vajutage OK

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

8) Kontrollige seadeid

Et mõista, et kõik on konfigureeritud, kuid samal ajal mitte kaotada võimalust süsteemi sisse logida, sisestage käsk
$ sudo login
Sisestage oma kasutajanimi. Kõik on õigesti seadistatud, kui süsteem nõuab seadme PIN-koodi.

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

9) Konfigureerige arvuti blokeerimiseks, kui token ekstraheeritakse

Pakendis kaasas libpam-pkcs11 utiliit kaasas pkcs11_eventmgr, mis võimaldab PKCS#11 sündmuste toimumisel teha erinevaid toiminguid.
Seadete jaoks pkcs11_eventmgr toimib konfiguratsioonifailina: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Erinevate Linuxi distributsioonide puhul erineb käsk, mis põhjustab konto lukustamise pärast kiipkaardi või loa eemaldamist. cm. event card_remove.
Konfiguratsioonifaili näide on näidatud allpool:

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";
    }
}

Pärast seda lisage rakendus pkcs11_eventmgr käivitamiseks. Selleks muutke faili .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Lisage faili lõppu rida pkcs11_eventmgr ja taaskäivitage.

Kirjeldatud operatsioonisüsteemi seadistamise samme saab kasutada juhistena mis tahes kaasaegses Linuxi distributsioonis, sealhulgas kodumaises.

Kuidas kasutada PAM-mooduleid kohalikuks autentimiseks Linuxis, kasutades Rutokeni GOST-2012 võtmeid

Järeldus

Linuxi arvutid muutuvad Venemaa valitsusasutustes üha populaarsemaks ja usaldusväärse kahefaktorilise autentimise seadistamine selles OS-is pole alati lihtne. Aitame teil selle juhendiga hea meelega lahendada parooliprobleemi ja kaitsta usaldusväärselt juurdepääsu teie arvutile, kulutamata sellele palju aega.

Allikas: www.habr.com

Lisa kommentaar