Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

Einföld lykilorð eru ekki örugg og flókin eru ómöguleg að muna. Þess vegna lenda þeir svo oft á límmiða undir lyklaborðinu eða á skjánum. Til að tryggja að lykilorð haldist í huga „gleymandi“ notenda og áreiðanleiki verndar glatist ekki, er tvíþætt auðkenning (2FA).

Vegna samsetningar þess að eiga tæki og þekkja PIN-númerið getur PIN-númerið sjálft verið einfaldara og auðveldara að muna. Ókostir í lengd PIN-númers eða handahófi eru á móti kröfum um líkamlega eign og takmarkanir á PIN-heimild.

Auk þess gerist það hjá ríkisstofnunum að þær vilja að allt virki samkvæmt GOST. Þessi 2FA valkostur til að skrá þig inn á Linux verður ræddur. Ég ætla að byrja úr fjarska.

PAM einingar

Pluggable Authentication Modules (PAM) eru einingar með stöðluðu API og útfærslur á ýmsum auðkenningaraðferðum í forritum.
Öll tól og forrit sem geta unnið með PAM taka þau upp og geta notað þau til notendaauðkenningar.
Í reynd virkar það eitthvað á þessa leið: innskráningarskipunin kallar á PAM, sem framkvæmir allar nauðsynlegar athuganir með því að nota einingarnar sem tilgreindar eru í stillingarskránni og skilar niðurstöðunni aftur í innskráningarskipunina.

librtpam

Einingin sem er þróuð af Aktiv fyrirtækinu bætir við tveggja þátta auðkenningu notenda sem nota snjallkort eða USB tákn með ósamhverfum lyklum í samræmi við nýjustu staðla innanlands dulritunar.

Við skulum líta á meginregluna um starfsemi þess:

  • Táknið geymir vottorð notandans og einkalykil hans;
  • Vottorðið er vistað í heimaskrá notandans sem treyst.

Auðkenningarferlið fer fram sem hér segir:

  1. Rutoken leitar að persónulegu vottorði notandans.
  2. Beðið er um PIN-númerið.
  3. Handahófskennd gögn eru undirrituð á einkalyklinum beint í Rutoken flöguna.
  4. Undirskriftin sem fæst er staðfest með því að nota opinbera lykilinn frá notandaskírteini.
  5. Einingin skilar niðurstöðu sannprófunar undirskriftarinnar í hringingarforritið.

Þú getur auðkennt með GOST R 34.10-2012 lyklum (lengd 256 eða 512 bita) eða úrelta GOST R 34.10-2001.

Þú þarft ekki að hafa áhyggjur af öryggi lyklanna - þeir eru búnir til beint í Rutoken og fara aldrei úr minni þess meðan á dulmálsaðgerðum stendur.

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

Rutoken EDS 2.0 er vottað af FSB og FSTEC samkvæmt NDV 4, því er hægt að nota það í upplýsingakerfum sem vinna með trúnaðarupplýsingar.

Hagnýt notkun

Næstum hvaða nútíma Linux dugar, til dæmis munum við nota xUbuntu 18.10.

1) Settu upp nauðsynlega pakka

sudo apt-get install libccid pcscd opensc
Ef þú vilt bæta við skjáborðslás með skjávara skaltu setja upp pakkann til viðbótar libpam-pkcs11.

2) Bættu við PAM einingu með GOST stuðningi

Hleður bókasafnið frá https://download.rutoken.ru/Rutoken/PAM/
Afritaðu innihald PAM möppunnar librtpam.so.1.0.0 í kerfismöppuna
/usr/lib/ eða /usr/lib/x86_64-linux-gnu/eða /usr/lib64

3) Settu upp pakkann með librtpkcs11ecp.so

Sæktu og settu upp DEB eða RPM pakkann frá hlekknum: https://www.rutoken.ru/support/download/pkcs/

4) Athugaðu hvort Rutoken EDS 2.0 virki í kerfinu

Í flugstöðinni framkvæmum við
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ef þú sérð línuna Rutoken ECP <no label> - það þýðir að allt er í lagi.

5) Lestu vottorðið

Athugar hvort tækið sé með vottorð
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ef á eftir línunni:
Using slot 0 with a present token (0x0)

  • upplýsingar birtast um lykla og skilríki, þú þarft að lesa vottorðið og vista það á disk. Til að gera þetta skaltu keyra eftirfarandi skipun, þar sem í stað {id} þarftu að skipta út vottorðaauðkenninu sem þú sást í úttakinu á fyrri skipuninni:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ef cert.crt skráin hefur verið búin til skaltu halda áfram í skref 6).
  • það er ekkert, þá er tækið tómt. Hafðu samband við stjórnanda þinn eða búðu til lyklana og vottorðið sjálfur með því að fylgja næsta skrefi.

5.1) Búðu til prófskírteini

Athugið! Aðferðirnar sem lýst er til að búa til lykla og vottorð henta til prófunar og eru ekki ætlaðar til notkunar í bardagaham. Til að gera þetta þarftu að nota lykla og vottorð sem gefin eru út af traustu vottunaryfirvaldi fyrirtækisins eða viðurkenndu vottunaryfirvaldi.
PAM einingin er hönnuð til að vernda staðbundnar tölvur og er hönnuð til að vinna í litlum fyrirtækjum. Þar sem það eru fáir notendur getur stjórnandi fylgst með afturköllun skírteina og lokað handvirkt fyrir reikninga, sem og gildistíma skírteina. PAM einingin veit ekki enn hvernig á að sannreyna vottorð með því að nota CRL og byggja upp traustkeðjur.

Auðvelda leiðin (í gegnum vafra)

Til að fá prófskírteini, notaðu vefþjónusta "Rutoken Registration Center". Ferlið mun ekki taka meira en 5 mínútur.

Leið nördsins (í gegnum stjórnborðið og hugsanlega þýðandann)

Athugaðu OpenSC útgáfuna
$ opensc-tool --version
Ef útgáfan er minni en 0.20, uppfærðu eða byggðu pkcs11-tól útibú með GOST-2012 stuðningi frá GitHub okkar (á þeim tíma sem þessi grein birtist hefur útgáfu 0.20 ekki enn verið gefin út) eða frá aðalútibúi aðal OpenSC verkefnisins ekki síðar fremja 8cf1e6f

Búðu til lyklapar með eftirfarandi breytum:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: hlutauðkenni (CKA_ID) sem tveggja stafa sexkantsstafanúmer úr ASCII töflunni. Notaðu aðeins ASCII kóða fyrir prentanlega stafi, vegna þess að... id verður að senda til OpenSSL sem streng. Til dæmis samsvarar ASCII kóðinn „3132“ strengnum „12“. Til þæginda geturðu notað netþjónusta til að breyta strengjum í ASCII kóða.

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

Næst munum við búa til vottorð. Lýst verður tveimur leiðum hér að neðan: sú fyrri er í gegnum CA (við munum nota próf-CA), hin er sjálfundirrituð. Til að gera þetta þarftu fyrst að setja upp og stilla OpenSSL útgáfu 1.1 eða nýrri til að vinna með Rutoken í gegnum sérstaka rtengine einingu með því að nota handbókina Að setja upp og stilla OpenSSL.
Til dæmis: fyrir '--id 3132' í OpenSSL þarftu að tilgreina "pkcs11:id=12".

Þú getur notað þjónustu CA prófunar, sem það eru margar, td. hér, hér и hér, fyrir þetta munum við búa til beiðni um vottorð

Annar möguleiki er að láta undan leti og búa til sjálfsritaðan
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Hleður upp vottorðinu í tækið
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Skráðu vottorðið í kerfið

Gakktu úr skugga um að vottorðið þitt líti út eins og base64 skrá:

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

Ef vottorðið þitt lítur svona út:

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

þá þarftu að breyta skírteininu úr DER sniði í PEM snið (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Við athugum aftur að allt sé í lagi núna.

Bættu vottorðinu við listann yfir traust vottorð
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Síðasta línan verndar listann yfir traust vottorð gegn því að aðrir notendur breyti þeim óvart eða viljandi. Þetta kemur í veg fyrir að einhver bæti við vottorðinu sínu hér og geti skráð sig inn fyrir þína hönd.

7) Settu upp auðkenningu

Uppsetning PAM-einingarinnar okkar er algjörlega staðlað og fer fram á nákvæmlega sama hátt og uppsetning annarra eininga. Búa til í skrá /usr/share/pam-configs/rutoken-gost-pam sem inniheldur fullt nafn einingarinnar, hvort sem það er sjálfgefið virkt, forgang einingarinnar og auðkenningarfæribreytur.
Auðkenningarfæribreytur innihalda kröfur um árangur af aðgerðinni:

  • krafist: Slíkar einingar verða að skila jákvæðu svari. Ef niðurstaða einingakalls inniheldur neikvætt svar mun það leiða til auðkenningarvillu. Beiðnin verður felld niður en þær einingar sem eftir eru verða kallaðar.
  • nauðsynlegt: Svipað og krafist er, en mistekst samstundis auðkenningu og hunsar aðrar einingar.
  • nægjanlegt: Ef engin af nauðsynlegum eða fullnægjandi einingum fyrir slíka einingu skilaði neikvæðri niðurstöðu, þá mun einingin skila jákvæðu svari. Hinar einingarnar verða hunsaðar.
  • valfrjálst: Ef það eru engar nauðsynlegar einingar á staflanum og engin af nægjanlegum einingum skilar jákvæðri niðurstöðu, þá verður að minnsta kosti ein valkvæða eininganna að skila jákvæðri niðurstöðu.

Fullt innihald skráar /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

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

vistaðu skrána og keyrðu síðan
$ sudo pam-auth-update
í glugganum sem birtist skaltu setja stjörnu við hann Rutoken PAM GOST og smelltu OK

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

8) Athugaðu stillingarnar

Til að skilja að allt er stillt, en á sama tíma missa ekki getu til að skrá þig inn í kerfið, sláðu inn skipunina
$ sudo login
Sláðu inn notandanafnið þitt. Allt er rétt stillt ef kerfið krefst PIN-númers tækis.

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

9) Stilltu tölvuna þannig að hún sé læst þegar táknið er dregið út

Innifalið í pakkanum libpam-pkcs11 gagnsemi innifalin pkcs11_eventmgr, sem gerir þér kleift að framkvæma ýmsar aðgerðir þegar PKCS#11 atburðir eiga sér stað.
Fyrir stillingar pkcs11_eventmgr virkar sem stillingarskrá: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Fyrir mismunandi Linux dreifingar mun skipunin sem veldur því að reikningur læsist þegar snjallkort eða tákn er fjarlægt vera mismunandi. Cm. event card_remove.
Dæmi um stillingarskrá er sýnd hér að neðan:

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

Eftir það bættu forritinu við pkcs11_eventmgr að gangsetja. Til að gera þetta skaltu breyta .bash_profile skránni:
$ nano /home/<имя_пользователя>/.bash_profile
Bættu línunni pkcs11_eventmgr við lok skráarinnar og endurræstu.

Skrefin sem lýst er til að setja upp stýrikerfið er hægt að nota sem leiðbeiningar í hvaða nútíma Linux dreifingu sem er, þar með talið innlenda.

Hvernig á að nota PAM einingar fyrir staðbundna auðkenningu í Linux með GOST-2012 lyklum á Rutoken

Ályktun

Linux tölvur verða sífellt vinsælli hjá rússneskum ríkisstofnunum og það er ekki alltaf auðvelt að setja upp áreiðanlega tvíþætta auðkenningu í þessu stýrikerfi. Við munum vera fús til að hjálpa þér að leysa „lykilorðsvandamálið“ með þessari handbók og vernda áreiðanlega aðgang að tölvunni þinni án þess að eyða miklum tíma í það.

Heimild: www.habr.com

Bæta við athugasemd