Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

Pasahitz sinpleak ez dira seguruak, eta konplexuak ezinezkoak dira gogoratu. Horregatik, askotan, teklatuaren azpian edo monitorean ohar itsaskor batean amaitzen dute. Pasahitzak erabiltzaile "ahaztunen" buruan geratzen direla eta babesaren fidagarritasuna galtzen ez dela ziurtatzeko, bi faktoreko autentifikazioa dago (2FA).

Gailu baten jabe izatea eta PINa jakitearen konbinazioa dela eta, PINa bera errazago eta errazagoa izan daiteke gogoratzeko. PINaren luzeraren edo ausazkotasunaren desabantailak jabetza fisikoaren eskakizunak eta PIN indar gordinaren murrizketak konpentsatzen ditu.

Horrez gain, gobernu agentzietan gertatzen da dena GOSTren arabera funtzionatzea nahi dutela. Linux-en saioa hasteko 2FA aukera hau eztabaidatuko da. Urrutitik hasiko naiz.

PAM moduluak

Pluggable Authentication Modules (PAM) API estandar batekin eta aplikazioetan autentifikazio-mekanismo ezberdinen ezarpenak dituzten moduluak dira.
PAM-ekin lan egin dezaketen utilitate eta aplikazio guztiek jasotzen dituzte eta erabiltzaileak autentifikatzeko erabil ditzakete.
Praktikan, honela funtzionatzen du: login komandoak PAM deitzen du, eta horrek beharrezko egiaztapen guztiak egiten ditu konfigurazio fitxategian zehaztutako moduluak erabiliz eta emaitza berriro saioa hasteko komandora itzultzen du.

librtpam

Aktiv enpresak garatutako moduluak erabiltzaileen bi faktoreko autentifikazioa gehitzen du txartel adimendunak edo USB tokenak erabiliz gako asimetrikoak erabiliz, etxeko kriptografiaren azken estandarren arabera.

Ikus dezagun bere funtzionamenduaren printzipioa:

  • Tokenak erabiltzailearen ziurtagiria eta bere gako pribatua gordetzen ditu;
  • Ziurtagiria erabiltzailearen hasierako direktorioa fidagarri gisa gordetzen da.

Autentifikazio-prozesua honela gertatzen da:

  1. Rutoken-ek erabiltzailearen ziurtagiri pertsonala bilatzen du.
  2. Token PINa eskatzen da.
  3. Ausazko datuak gako pribatuan sinatzen dira zuzenean Rutoken txipan.
  4. Lortutako sinadura erabiltzailearen ziurtagiriaren gako publikoa erabiliz egiaztatzen da.
  5. Moduluak sinadura egiaztatzeko emaitza itzultzen dio deitzen duen aplikazioari.

GOST R 34.10-2012 gakoak (luzera 256 edo 512 bit) edo GOST R 34.10-2001 zaharkitua erabiliz autentifikatu dezakezu.

Ez duzu gakoen segurtasunaz kezkatu beharrik - Rutoken-en zuzenean sortzen dira eta inoiz ez dute bere memoria uzten kriptografiko eragiketetan.

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

Rutoken EDS 2.0 FSBk eta FSTECek NDV 4ren arabera ziurtatuta dago, beraz, isilpeko informazioa prozesatzen duten informazio sistemetan erabil daiteke.

Erabilera praktikoa

Linux moderno ia edozeinek egingo du, adibidez xUbuntu 18.10 erabiliko dugu.

1) Instalatu beharrezko paketeak

sudo apt-get install libccid pcscd opensc
Mahaigaineko blokeoa pantaila-babesle batekin gehitu nahi baduzu, instalatu paketea gainera libpam-pkcs11.

2) Gehitu PAM modulu bat GOST laguntzarekin

Liburutegia hemendik kargatzen https://download.rutoken.ru/Rutoken/PAM/
Kopiatu PAM karpetaren edukia librtpam.so.1.0.0 sistemaren karpetara
/usr/lib/ edo /usr/lib/x86_64-linux-gnu/edo /usr/lib64

3) Instalatu paketea librtpkcs11ecp.so-rekin

Deskargatu eta instalatu DEB edo RPM paketea estekatik: https://www.rutoken.ru/support/download/pkcs/

4) Egiaztatu Rutoken EDS 2.0 sisteman funtzionatzen duela

Terminalean exekutatzen dugu
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Lerroa ikusten baduzu Rutoken ECP <no label> - Dena ondo dagoela esan nahi du.

5) Irakurri ziurtagiria

Gailuak ziurtagiria duela egiaztatzea
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Lerroaren ondoren:
Using slot 0 with a present token (0x0)

  • informazioa bistaratzen da gakoei eta ziurtagiriei buruz, ziurtagiria irakurri eta diskoan gorde behar duzu. Horretarako, exekutatu komando hau, non {id} ordez aurreko komandoaren irteeran ikusi zenuen ziurtagiri IDa ordezkatu behar duzun:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    cert.crt fitxategia sortu bada, jarraitu 6. urratsera).
  • ez dago ezer, orduan gailua hutsik dago. Jarri harremanetan zure administratzailearekin edo sortu gakoak eta ziurtagiria zeuk hurrengo urratsa jarraituz.

5.1) Sortu proba-ziurtagiria

Kontuz! Gakoak eta ziurtagiriak sortzeko deskribatutako metodoak egokiak dira probak egiteko eta ez daude borroka moduan erabiltzeko pentsatuta. Horretarako, zure erakundeko ziurtapen-agintari fidagarriak edo akreditatutako ziurtagiri-agintari batek emandako gakoak eta ziurtagiriak erabili behar dituzu.
PAM modulua tokiko ordenagailuak babesteko diseinatuta dago eta erakunde txikietan lan egiteko diseinatuta dago. Erabiltzaile gutxi direnez, Administratzaileak ziurtagirien baliogabetzearen jarraipena egin dezake eta eskuz blokeatu kontuak, baita ziurtagirien balio-epea ere. PAM moduluak ez daki oraindik CRLak erabiliz ziurtagiriak egiaztatzen eta konfiantzazko kateak eraikitzen.

Modu erraza (arakatzailearen bidez)

Proba-ziurtagiria lortzeko, erabili "Rutoken Erregistro Zentroa" web zerbitzua. Prozesua ez da 5 minutu baino gehiago iraungo.

Geek-en modua (kontsolaren bidez eta agian konpiladorearen bidez)

Egiaztatu OpenSC bertsioa
$ opensc-tool --version
Bertsioa 0.20 baino txikiagoa bada, eguneratu edo eraiki pkcs11-tool adarra GOST-2012 laguntzarekin Gure GitHub-etik (artikulu hau argitaratzen den unean, 0.20 bertsioa oraindik ez da kaleratu) edo OpenSC proiektu nagusiaren adar nagusitik beranduago. konpromisoa 8cf1e6f

Sortu gako-pare bat parametro hauekin:
--key-type: GOSTR3410-2012-512:А (Π“ΠžΠ‘Π’-2012 512 Π±ΠΈΡ‚ c парамсСтом А), GOSTR3410-2012-256:A (Π“ΠžΠ‘Π’-2012 256 Π±ΠΈΡ‚ с парамсСтом A)

--id: objektuaren identifikatzailea (CKA_ID) ASCII taulako bi zifrako karaktere hexadecimaleko zenbaki gisa. Erabili ASCII kodeak soilik inprima daitezkeen karaktereetarako, zeren... id-a OpenSSLra pasa beharko da kate gisa. Adibidez, "3132" ASCII kodea "12" kateari dagokio. Erosotasuna lortzeko, erabil dezakezu kateak ASCII kode bihurtzeko lineako zerbitzua.

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

Ondoren, ziurtagiri bat sortuko dugu. Jarraian bi modu deskribatuko dira: lehena CA baten bidezkoa (probako CAak erabiliko ditugu), bigarrena autosinatua da. Horretarako, lehenik eta behin OpenSSL 1.1 bertsioa edo berriagoa instalatu eta konfiguratu behar duzu Rutokenekin lan egiteko rtengine modulu berezi baten bidez eskuliburua erabiliz. OpenSSL instalatzea eta konfiguratzea.
Adibidez: '-rako-id 3132' OpenSSL-n " zehaztu behar duzupkcs11:id=12".

Probako CA baten zerbitzuak erabil ditzakezu, eta horietako asko daude, adibidez, Hemen, Hemen ΠΈ Hemen, horretarako ziurtagiri baten eskaera sortuko dugu

Beste aukera bat da alferkeriari amore ematea eta autosinatua sortzea
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Ziurtagiria gailura igotzea
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Ziurtagiria sisteman erregistratu

Ziurtatu zure ziurtagiriak base64 fitxategi baten itxura duela:

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

Zure ziurtagiria honelakoa bada:

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

ondoren, ziurtagiria DER formatutik PEM formatura bihurtu behar duzu (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Dena ondo dagoela egiaztatzen dugu berriro.

Gehitu ziurtagiria ziurtagiri fidagarrien zerrendara
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Azken lerroak babesten du konfiantzazko ziurtagirien zerrenda beste erabiltzaileek ustekabean edo nahita alda ez dezaten. Honek, norbaitek bere ziurtagiria hemen gehitzea eta zure izenean saioa hasi ahal izatea eragozten du.

7) Konfiguratu autentifikazioa

Gure PAM modulua konfiguratzea guztiz estandarra da eta beste modulu batzuk konfiguratzeko modu berean egiten da. Sortu fitxategirako /usr/share/pam-configs/rutoken-gost-pam moduluaren izen osoa, lehenespenez gaituta dagoen ala ez, moduluaren lehentasuna eta autentifikazio-parametroak dituena.
Autentifikazio-parametroek operazioaren arrakasta izateko baldintzak dituzte:

  • beharrezkoa: Horrelako moduluek erantzun positiboa eman behar dute. Modulu-dei baten emaitzak erantzun negatiboa badu, autentifikazio-errore bat sortuko da. Eskaera kendu egingo da, baina gainerako moduluak deituko dira.
  • Baldintza: Beharrezkoaren antzekoa, baina berehala huts egiten du autentifikazioak eta beste modulu batzuk alde batera uzten ditu.
  • nahikoa: Modulu horren aurretik beharrezko edo nahikoa modulu batek emaitza negatiborik ematen ez badu, orduan moduluak erantzun positiboa emango du. Gainerako moduluak ez dira aintzat hartuko.
  • aukerakoa: pilan beharrezkoak diren modulurik ez badago eta modulu nahiko batek emaitza positiborik ematen ez badu, aukerako moduluetako batek gutxienez emaitza positibo bat itzuli beharko du.

Fitxategien eduki osoa /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

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

gorde fitxategia, gero exekutatu
$ sudo pam-auth-update
agertzen den leihoan, jarri izartxo bat ondoan Rutoken PAM GOST eta egin klik OK

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

8) Egiaztatu ezarpenak

Dena konfiguratuta dagoela ulertzeko, baina, aldi berean, sisteman saioa hasteko gaitasuna galtzeko, idatzi komandoa
$ sudo login
Sartu zure erabiltzaile-izena. Dena behar bezala konfiguratuta dago sistemak gailuaren PIN kodea behar badu.

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

9) Konfiguratu ordenagailua tokena ateratzen denean blokeatu beharrekoa

Paketean sartuta libpam-pkcs11 erabilgarritasuna barne pkcs11_eventmgr, PKCS#11 gertaerak gertatzen direnean hainbat ekintza egiteko aukera ematen duena.
Ezarpenetarako pkcs11_eventmgr konfigurazio fitxategi gisa balio du: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Linux banaketa desberdinetarako, txartel adimenduna edo token bat kentzean kontu bat blokeatzea eragiten duen komandoa desberdina izango da. cm. event card_remove.
Behean konfigurazio fitxategi adibide bat erakusten da:

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

Horren ondoren, gehitu aplikazioa pkcs11_eventmgr martxan jartzeko. Horretarako, editatu .bash_profile fitxategia:
$ nano /home/<имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>/.bash_profile
Gehitu pkcs11_eventmgr lerroa fitxategiaren amaieran eta berrabiarazi.

Sistema eragilea konfiguratzeko deskribatutako urratsak argibide gisa erabil daitezke edozein Linux banaketa modernotan, etxekoetan barne.

Nola erabili PAM moduluak tokiko autentifikaziorako Linux-en GOST-2012 gakoak erabiliz Rutoken-en

Ondorioa

Linux ordenagailuak gero eta ezagunagoak dira Errusiako gobernu agentzietan, eta sistema eragile honetan bi faktoreko autentifikazio fidagarria ez da beti erraza izaten. Pozik egongo gara gida honekin "pasahitz arazoa" konpontzen eta zure ordenagailurako sarbidea modu fidagarrian babesten denbora asko eman gabe.

Iturria: www.habr.com

Gehitu iruzkin berria