Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

Enkle passord er ikke sikre, og komplekse passord er umulige å huske. Det er derfor de så ofte havner på en lapp under tastaturet eller på skjermen. For å sikre at passord forblir i hodet til "glemsomme" brukere og at påliteligheten til beskyttelsen ikke går tapt, er det tofaktorautentisering (2FA).

På grunn av kombinasjonen av å eie en enhet og kjenne PIN-koden, kan selve PIN-koden være enklere og lettere å huske. Ulemper i PIN-lengde eller tilfeldighet oppveies av kravet om fysisk besittelse og restriksjoner på PIN-brut force.

I tillegg hender det i offentlige etater at de ønsker at alt skal fungere etter GOST. Dette 2FA-alternativet for å logge på Linux vil bli diskutert. Jeg starter langveis fra.

PAM-moduler

Pluggable Authentication Modules (PAM) er moduler med en standard API og implementeringer av ulike autentiseringsmekanismer i applikasjoner.
Alle verktøy og applikasjoner som kan fungere med PAM plukker dem opp og kan bruke dem til brukerautentisering.
I praksis fungerer det omtrent slik: påloggingskommandoen kaller PAM, som utfører alle nødvendige kontroller ved hjelp av modulene spesifisert i konfigurasjonsfilen og returnerer resultatet tilbake til påloggingskommandoen.

librtpam

Modulen utviklet av Aktiv-selskapet legger til tofaktorautentisering av brukere som bruker smartkort eller USB-tokens ved bruk av asymmetriske nøkler i henhold til de nyeste standardene for innenlandsk kryptografi.

La oss se på prinsippet for driften:

  • Tokenet lagrer brukerens sertifikat og dens private nøkkel;
  • Sertifikatet lagres i brukerens hjemmekatalog som klarert.

Autentiseringsprosessen foregår som følger:

  1. Rutoken søker etter brukerens personlige sertifikat.
  2. Token-PIN-koden blir bedt om.
  3. Tilfeldige data signeres på den private nøkkelen direkte i Rutoken-brikken.
  4. Den resulterende signaturen verifiseres ved hjelp av den offentlige nøkkelen fra brukerens sertifikat.
  5. Modulen returnerer signaturverifiseringsresultatet til den anropende applikasjonen.

Du kan autentisere med GOST R 34.10-2012-nøkler (lengde 256 eller 512 biter) eller den utdaterte GOST R 34.10-2001.

Du trenger ikke å bekymre deg for sikkerheten til nøklene - de genereres direkte i Rutoken og forlater aldri minnet under kryptografiske operasjoner.

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

Rutoken EDS 2.0 er sertifisert av FSB og FSTEC i henhold til NDV 4, derfor kan den brukes i informasjonssystemer som behandler konfidensiell informasjon.

Praktisk bruk

Nesten alle moderne Linux vil gjøre det, for eksempel vil vi bruke xUbuntu 18.10.

1) Installer de nødvendige pakkene

sudo apt-get install libccid pcscd opensc
Hvis du vil legge til en skrivebordslås med en skjermsparer, installer pakken i tillegg libpam-pkcs11.

2) Legg til en PAM-modul med GOST-støtte

Laster inn biblioteket fra https://download.rutoken.ru/Rutoken/PAM/
Kopier innholdet i PAM-mappen librtpam.so.1.0.0 til systemmappen
/usr/lib/ eller /usr/lib/x86_64-linux-gnu/eller /usr/lib64

3) Installer pakken med librtpkcs11ecp.so

Last ned og installer DEB- eller RPM-pakken fra lenken: https://www.rutoken.ru/support/download/pkcs/

4) Sjekk at Rutoken EDS 2.0 fungerer i systemet

I terminalen utfører vi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Hvis du ser streken Rutoken ECP <no label> - Det betyr at alt er i orden.

5) Les attesten

Kontrollerer at enheten har et sertifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Hvis etter linjen:
Using slot 0 with a present token (0x0)

  • informasjon vises om nøkler og sertifikater, må du lese sertifikatet og lagre det på disk. For å gjøre dette, kjør følgende kommando, der du i stedet for {id} må erstatte sertifikat-ID-en du så i utdataene fra forrige kommando:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Hvis cert.crt-filen er opprettet, fortsett til trinn 6).
  • det er ingenting, så er enheten tom. Kontakt administratoren din eller lag nøklene og sertifikatet selv ved å følge neste trinn.

5.1) Opprett et testsertifikat

Merk følgende! De beskrevne metodene for å lage nøkler og sertifikater er egnet for testing og er ikke ment for bruk i kampmodus. For å gjøre dette må du bruke nøkler og sertifikater utstedt av organisasjonens pålitelige sertifiseringsinstans eller en akkreditert sertifiseringsinstans.
PAM-modulen er designet for å beskytte lokale datamaskiner og er designet for å fungere i små organisasjoner. Siden det er få brukere, kan administratoren overvåke tilbakekalling av sertifikater og manuelt blokkere kontoer, samt sertifikatenes gyldighetsperiode. PAM-modulen vet ennå ikke hvordan den skal verifisere sertifikater ved hjelp av CRL-er og bygge tillitskjeder.

Den enkle måten (via nettleser)

For å få et testsertifikat, bruk nettjeneste "Rutoken Registration Center". Prosessen tar ikke mer enn 5 minutter.

Geeks vei (via konsollen og muligens kompilatoren)

Sjekk OpenSC-versjonen
$ opensc-tool --version
Hvis versjonen er mindre enn 0.20, oppdater eller bygg pkcs11-verktøygren med GOST-2012-støtte fra GitHub vår (på tidspunktet for publisering av denne artikkelen er utgivelse 0.20 ennå ikke utgitt) eller fra hovedgrenen til hoved OpenSC-prosjektet senest begå 8cf1e6f

Generer et nøkkelpar med følgende parametere:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: objektidentifikator (CKA_ID) som tosifrede sekskantede tegn fra ASCII-tabellen. Bruk kun ASCII-koder for utskrivbare tegn, fordi... ID må sendes til OpenSSL som en streng. For eksempel tilsvarer ASCII-koden "3132" strengen "12". For enkelhets skyld kan du bruke online tjeneste for konvertering av strenger til ASCII-koder.

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

Deretter oppretter vi et sertifikat. To måter vil bli beskrevet nedenfor: den første er gjennom en CA (vi vil bruke test-CAer), den andre er selvsignert. For å gjøre dette må du først installere og konfigurere OpenSSL versjon 1.1 eller nyere for å jobbe med Rutoken gjennom en spesiell rtengine-modul ved å bruke håndboken Installere og konfigurere OpenSSL.
For eksempel: for '--id 3132' i OpenSSL må du spesifisere "pkcs11:id=12".

Du kan bruke tjenestene til en test-CA, som det er mange av, for eksempel, her, her и her, for dette vil vi opprette en forespørsel om et sertifikat

Et annet alternativ er å gi etter for latskap og lage en selvsignert
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Laster opp sertifikatet til enheten
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registrer sertifikatet i systemet

Sørg for at sertifikatet ditt ser ut som en base64-fil:

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

Hvis sertifikatet ditt ser slik ut:

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

da må du konvertere sertifikatet fra DER-format til PEM-format (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Vi sjekker igjen at alt er i orden nå.

Legg til sertifikatet i listen over klarerte sertifikater
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Den siste linjen beskytter listen over klarerte sertifikater fra å bli endret ved et uhell eller med vilje av andre brukere. Dette forhindrer at noen legger til sertifikatet sitt her og kan logge inn på dine vegne.

7) Sett opp autentisering

Oppsett av PAM-modulen vår er helt standard og gjøres på nøyaktig samme måte som å sette opp andre moduler. Opprett til fil /usr/share/pam-configs/rutoken-gost-pam som inneholder hele navnet på modulen, om den er aktivert som standard, prioritet til modulen og autentiseringsparametere.
Autentiseringsparametrene inneholder krav for at operasjonen skal lykkes:

  • påkrevd: Slike moduler må gi et positivt svar. Hvis resultatet av et modulkall inneholder et negativt svar, vil dette resultere i en autentiseringsfeil. Forespørselen vil bli droppet, men de resterende modulene vil bli kalt.
  • nødvendig: Ligner på nødvendig, men mislykkes umiddelbart med autentisering og ignorerer andre moduler.
  • tilstrekkelig: Hvis ingen av de nødvendige eller tilstrekkelige modulene før en slik modul ga et negativt resultat, vil modulen returnere et positivt svar. De resterende modulene vil bli ignorert.
  • valgfritt: Hvis det ikke er noen nødvendige moduler på stabelen og ingen av de tilstrekkelige modulene gir et positivt resultat, må minst én av de valgfrie modulene gi et positivt resultat.

Fullt filinnhold /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

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

lagre filen, og kjør
$ sudo pam-auth-update
i vinduet som vises, sett en stjerne ved siden av Rutoken PAM GOST og klikk OK

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

8) Kontroller innstillingene

For å forstå at alt er konfigurert, men samtidig ikke miste muligheten til å logge på systemet, skriv inn kommandoen
$ sudo login
Skriv inn brukernavnet ditt. Alt er riktig konfigurert hvis systemet krever en enhets-PIN-kode.

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

9) Konfigurer datamaskinen til å bli blokkert når tokenet trekkes ut

Inkludert i pakken libpam-pkcs11 verktøy inkludert pkcs11_eventmgr, som lar deg utføre ulike handlinger når PKCS#11-hendelser oppstår.
For innstillinger pkcs11_eventmgr fungerer som en konfigurasjonsfil: /etc/pam_pkcs11/pkcs11_eventmgr.conf
For forskjellige Linux-distribusjoner vil kommandoen som gjør at en konto låses når et smartkort eller token fjernes, variere. Cm. event card_remove.
Et eksempel på konfigurasjonsfilen er vist nedenfor:

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

Legg deretter til applikasjonen pkcs11_eventmgr til oppstart. For å gjøre dette, rediger .bash_profile-filen:
$ nano /home/<имя_пользователя>/.bash_profile
Legg til linjen pkcs11_eventmgr på slutten av filen og start på nytt.

De beskrevne trinnene for å sette opp operativsystemet kan brukes som instruksjoner i enhver moderne Linux-distribusjon, inkludert innenlands.

Hvordan bruke PAM-moduler for lokal autentisering i Linux ved å bruke GOST-2012-nøkler på Rutoken

Konklusjon

Linux-PC-er blir stadig mer populære i russiske offentlige etater, og det er ikke alltid lett å sette opp pålitelig tofaktorautentisering i dette operativsystemet. Vi hjelper deg gjerne med å løse "passordproblemet" med denne veiledningen og beskytter pålitelig tilgang til PC-en din uten å bruke mye tid på det.

Kilde: www.habr.com

Legg til en kommentar