Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

Enkla lösenord skyddar inte, och komplexa Ă€r omöjliga att komma ihĂ„g. DĂ€rför hamnar de ofta pĂ„ en lapp under tangentbordet eller pĂ„ skĂ€rmen. För att lösenord ska förbli i minnet hos “glömska” anvĂ€ndare och sĂ€kerheten inte Ă€ventyras – finns det tvĂ„faktorsautentisering (2FA).

Genom att kombinera faktorer som Àgande av enhet och kunskap om dess PIN-kod kan sjÀlva PIN-koden vara enklare och lÀttare att komma ihÄg. Brister i lÀngden eller slumpmÀssigheten hos PIN-koden kompenseras av kravet pÄ fysisk Àgande och begrÀnsningar för att gissa PIN-koden.

Dessutom hÀnder det ofta i statliga institutioner att de vill att allt ska fungera enligt GOST-standard. Om detta alternativ för 2FA för Ätkomst till Linux kommer att handla. Jag börjar med en inledning.

PAM-moduler

Pluggable Authentication Modules (PAM) Àr moduler med ett standardiserat API och implementationer av olika autentiseringsmekanismer i applikationer.
Alla verktyg och applikationer som kan arbeta med PAM anvÀnder dem och kan anvÀnda dem för att autentisera anvÀndaren.
I praktiken fungerar det ungefÀr sÄ hÀr: kommandot login vÀnder sig till PAM, som utför alla nödvÀndiga kontroller med hjÀlp av moduler som anges i konfigurationsfilen och returnerar resultatet tillbaka till kommandot login.

librtpam

Modulen utvecklad av företaget ‘Aktiv’ lĂ€gger till tvĂ„faktorsautentisering för anvĂ€ndare via smartkort eller USB-token med hjĂ€lp av asymmetriska nycklar enligt de senaste standarderna inom inhemsk kryptografi.

LÄt oss titta pÄ principen för dess funktion:

  • i token lagras anvĂ€ndarens certifikat och hans privata nyckel;
  • certifikatet sparas i anvĂ€ndarens hemkatalog som betrodd.

Autentiseringsprocessen gÄr till pÄ följande sÀtt:

  1. PÄ Rutoken görs en sökning efter anvÀndarens personliga certifikat.
  2. PIN-koden för token begÀrs.
  3. Det sker en signering av slumpmÀssiga data med den privata nyckeln direkt i Rutokens chip.
  4. Den erhÄllna signaturen verifieras med hjÀlp av den offentliga nyckeln frÄn anvÀndarens certifikat.
  5. Modulen returnerar resultatet av signaturkontrollen till den anropande applikationen.

Man kan autentisera sig med GOST R 34.10-2012 nycklar (256 eller 512 bitar) eller den förÄldrade GOST R 34.10-2001.

Du behöver inte oroa dig för sĂ€kerheten hos nycklarna – de genereras direkt i Rutoken och lĂ€mnar aldrig dess minne under kryptografiska operationer.

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

Rutoken ECP 2.0 Àr certifierad av FSB och FSTEC enligt NDV 4, sÄ den kan anvÀndas i informationssystem som hanterar konfidentiell information.

Praktisk anvÀndning

NÀstan vilken modern Linux som helst fungerar, för exempel anvÀnder vi xUbuntu 18.10.

1) Installera nödvÀndiga paket

sudo apt-get install libccid pcscd opensc
Om du vill lĂ€gga till en skĂ€rmslĂ€ckare som blockerar skrivbordet – installera dessutom paketet libpam-pkcs11.

2) LÀgg till PAM-modul med GOST-stöd

Ladda biblioteken med https://download.rutoken.ru/Rutoken/PAM/
Kopiera innehÄllet i mappen PAM librtpam.so.1.0.0 till systemmappen
/usr/lib/ eller /usr/lib/x86_64-linux-gnu/eller /usr/lib64

3) Installera paketet med librtpkcs11ecp.so

Ladda ner och installera DEB- eller RPM-paketet via lÀnken: https://www.rutoken.ru/support/download/pkcs/

4) Kontrollera att Rutoken ECP 2.0 fungerar i systemet

I terminalen kör följande
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Om du ser raden Rutoken ECP – betyder det att allt Ă€r okej.

5) LĂ€s certifikatet

Kontrollera att det finns ett certifikat pÄ enheten
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Om efter raden:
Using slot 0 with a present token (0x0)

  • visas information om nycklar och certifikat, mĂ„ste du lĂ€sa certifikatet och spara det pĂ„ disk. Kör följande kommando dĂ€r du istĂ€llet för {id} anger ID för certifikatet som du sĂ„g i utdata frĂ„n det föregĂ„ende kommandot:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Om filen cert.crt har skapats gÄr vi vidare till punkt 6).
  • finns inget, betyder det att enheten Ă€r tom. Kontakta administratören eller skapa nycklar och certifikat sjĂ€lv genom att följa nĂ€sta punkt.

5.1) Skapa ett testcertifikat

Obs! De beskrivna metoderna för att skapa nycklar och certifikat Àr avsedda för testning och Àr inte avsedda för anvÀndning i skarpa lÀgen. För detta ska du anvÀnda nycklar och certifikat utfÀrdade av ett pÄlitligt certifikatutfÀrdande center frÄn din organisation eller ett ackrediterat certifikatutfÀrdande center.
PAM-modulen Àr skapad för att skydda lokala datorer och Àr avsedd för smÄ organisationer. Eftersom det finns fÄ anvÀndare kan administratören sjÀlv hÄlla koll pÄ certifikatens Äterkallelse och manuellt blockera konton, liksom att hantera certifikatens giltighetstid. PAM-modulen kan Ànnu inte kontrollera certifikat via CRL eller bygga förtroendekedjor.

Enkel vÀg (via webblÀsare)

För att fÄ ett testcertifikat, anvÀnd webbtjÀnsten "Rutoken Registreringscenter". Processen tar högst 5 minuter.

Nerdens vÀg (via konsol och kanske kompilator)

Kontrollera versionen av OpenSC
$ opensc-tool --version
Om versionen Àr mindre Àn 0.20, uppdatera eller bygg pkcs11-tool-grenen med stöd för GOST-2012 frÄn vÄrt GitHub (vid publiceringen av denna artikel var version 0.20 Ànnu inte slÀppt) eller frÄn master-grenen av huvudprojektet OpenSC senast commit 8cf1e6f

Genererar ett nyckelpar med följande parametrar:
--key-type: GOSTR3410-2012-512:A (GOST-2012 512 bitar med parametern A), GOSTR3410-2012-256:A (GOST-2012 256 bitar med parametern A)

--id: objektidentifieraren (CKA_ID) i form av tvÄsiffriga hex-numer frÄn ASCII-tabellen. AnvÀnd endast ASCII-koder för tryckta tecken, eftersom id mÄste överföras till OpenSSL som en strÀng. Till exempel motsvarar ASCII-koden "3132" strÀngen "12". För enkelhetens skull kan du anvÀnda online-tjÀnsten för konvertering av strÀngar till ASCII-koder.

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

Vidare kommer vi att skapa ett certifikat. Nedan beskrivs tvĂ„ vĂ€gar: den första genom en CA (vi kommer att anvĂ€nda test-CA:er), den andra – ett sjĂ€lvsignerat certifikat. För detta mĂ„ste du först installera och konfigurera OpenSSL version 1.1 eller senare för att arbeta med Rutoken genom den speciella modulen rtengine enligt instruktionerna. Installation och konfiguration av OpenSSL.
Till exempel: för ‘--id 3132’ i OpenSSL mĂ„ste du ange "pkcs11:id=12«.

Du kan anvÀnda tjÀnsterna frÄn test-CA:er, av vilka det finns mÄnga, till exempel, hÀr, hÀr och hÀr, för att skapa en certifikatförfrÄgan

Ett annat alternativ Àr att ge efter för lathet och skapa ett sjÀlvsignerat certifikat.
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Ladda upp certifikatet till enheten
$ openssl req -utf8 -x509 -keyform motor -key "pkcs11:id=12" -motor rtengine -ut cert.cer

6) Registrera certifikatet i systemet

Se till att ditt certifikat ser ut som en base64-fil:

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

Om ditt certifikat ser ut sÄ hÀr:

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

mÄste certifikatet konverteras frÄn DER-format till PEM-format (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Kontrollera igen att allt nu Àr i ordning.

LÀgg till certifikatet i listan över betrodda certifikat
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Den sista raden skyddar listan över betrodda certifikat frÄn oavsiktlig eller avsiktlig Àndring av andra anvÀndare. Detta utesluter situationen dÀr nÄgon lÀgger till sitt certifikat hÀr och kan logga in i systemet i ditt namn.

7) StÀll in autentisering

InstÀllningen av vÄr PAM-modul Àr helt standard och görs precis som instÀllningarna för andra moduler. Skapa en fil /usr/share/pam-configs/rutoken-gost-pam som innehÄller modulens fullstÀndiga namn, om den Àr aktiverad som standard, modulens prioritet och autentiseringsparametrar.
I autentiseringsparametrarna finns det krav pÄ operationens framgÄng:

  • required (obligatorisk): sĂ„dana moduler mĂ„ste returnera ett positivt svar. Om resultatet av modulens anrop innehĂ„ller ett negativt svar leder det till autentiseringsfel. FörfrĂ„gan kommer att avbrytas, men övriga moduler kommer att kallas.
  • requisite (nödvĂ€ndig): liknande som required, men leder omedelbart till autentiseringsfel och ignorerar övriga moduler.
  • sufficient (tillrĂ€cklig): om ingen av modulerna required eller sufficient i stacken returnerar ett negativt resultat, ger modulen ett positivt svar. Övriga moduler kommer att ignoreras.
  • optional (tillval): om det inte finns nĂ„gra required-moduler i stacken och ingen av modulerna sufficient returnerade ett positivt resultat, mĂ„ste minst en av de optional-modulerna ge ett positivt svar.

InnehÄllet i filen /usr/share/pam-configs/rutoken-gost-pam:
Namn: Rutoken PAM GOST
Standard: ja
Prioritet: 800
Auth-Type: PrimÀr
Auth: tillrÀcklig /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

spara filen, dÀrefter kör
$ sudo pam-auth-update
i det framtrÀdande fönstret sÀtter vi en stjÀrna runt Rutoken PAM GOST och klickar pÄ OK

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

8) Kontrollera instÀllningen

För att förstÄ att allt Àr instÀllt korrekt, men utan att förlora möjligheten att logga in, skriv kommandot
$ sudo login
Ange anvÀndarnamn. Allt Àr korrekt instÀllt om systemet ber om en PIN-kod för enheten.

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

9) StÀll in lÄsning av datorn vid uttagning av token

Paketet libpam-pkcs11 innehÄller verktyget pkcs11_eventmgr, som gör det möjligt att utföra olika ÄtgÀrder vid PKCS#11-hÀndelser.
För konfiguration pkcs11_eventmgr fungerar som konfigurationsfil: /etc/pam_pkcs11/pkcs11_eventmgr.conf
För olika Linux-distributioner kommer kommandot som anropar lÄsning av kontot vid uttag av smartkort eller token att variera. Se. event card_remove.
Ett exempel pÄ konfigurationsfilen visas nedan:

pkcs11_eventmgr
{
    # Startar i bakgrunden
    daemon = true;
     
    # InstÀllning av felmeddelanden
    debug = false;
 
    # Pollingtid i sekunder
    polling_time = 1;
 
    # Timeout för att ta bort kortet
    # Standard Àr 0
    expire_time = 0;
 
    # VÀlj pkcs11-bibliotek för att arbeta med RUTOKEN
    pkcs11_module = usr/lib/librtpkcs11ecp.so;
 
    # ÅtgĂ€rder med kortet
    # Kortet Àr insatt:
    event card_insert {
        # LÀmna standardvÀrden (ingenting hÀnder)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # Kortet Àr uttaget
    event card_remove {
        on_error = ignore;
         
        # Anropa funktionen för att lÄsa skÀrmen
        
        # För GNOME
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
        
        # För XFCE
        # action = "xflock4";
        
        # För Astra Linux (FLY)
        # action = "fly-wmfunc FLYWM_LOCK";
    }
 
    # Kortet har varit uttaget under lÄng tid
    event expire_time {
        # LÀmna standardvÀrden (ingenting hÀnder)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

Efter detta lÀgger du till programmet pkcs11_eventmgr till autostart. Gör detta genom att redigera filen .bash_profile:
$ nano /home//.bash_profile
LĂ€gg till raden pkcs11_eventmgr i slutet av filen och starta om.

De beskrivna stegen för att konfigurera operativsystemet kan anvÀndas som en instruktion i vilken modern Linux-distribution som helst, inklusive inhemska.

Hur man anvÀnder PAM-moduler för lokal autentisering i Linux med GOST-2012 nycklar pÄ Rutoken.

Slutsats

Datorer med Linux i ryska statliga strukturer blir allt mer populÀra, och att stÀlla in en tillförlitlig tvÄfaktorsautentisering i detta OS Àr inte alltid enkelt. Vi hoppas att denna vÀgledning hjÀlper till att lösa "lösenordsproblemet" och sÀkert skydda Ätkomsten till datorn utan att spendera mycket tid.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster