Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

Simple adgangskoder er ikke sikre, og komplekse adgangskoder er umulige at huske. Derfor ender de så ofte på en seddel under tastaturet eller på skærmen. For at sikre, at adgangskoder forbliver i hovedet på "glemsomme" brugere, og at pålideligheden af ​​beskyttelsen ikke går tabt, er der to-faktor-autentificering (2FA).

På grund af kombinationen af ​​at eje en enhed og kende dens PIN-kode, kan selve PIN-koden være enklere og nemmere at huske. Ulemper i PIN-længde eller tilfældighed opvejes af kravet om fysisk besiddelse og restriktioner på PIN-brut force.

Derudover sker det i offentlige myndigheder, at de ønsker, at alt skal fungere efter GOST. Denne 2FA mulighed for at logge på Linux vil blive diskuteret. Jeg starter på afstand.

PAM moduler

Pluggable Authentication Modules (PAM) er moduler med en standard API og implementeringer af forskellige autentificeringsmekanismer i applikationer.
Alle hjælpeprogrammer og applikationer, der kan arbejde med PAM, henter dem og kan bruge dem til brugergodkendelse.
I praksis fungerer det nogenlunde sådan her: login-kommandoen kalder PAM, som udfører alle de nødvendige kontroller ved hjælp af de moduler, der er angivet i konfigurationsfilen, og returnerer resultatet tilbage til login-kommandoen.

librtpam

Modulet udviklet af Aktiv-virksomheden tilføjer to-faktor-autentificering af brugere ved hjælp af smart cards eller USB-tokens ved hjælp af asymmetriske nøgler i henhold til de nyeste standarder for indenlandsk kryptografi.

Lad os se på princippet om dets funktion:

  • Tokenet gemmer brugerens certifikat og dens private nøgle;
  • Certifikatet gemmes i brugerens hjemmemappe som betroet.

Godkendelsesprocessen foregår som følger:

  1. Rutoken søger efter brugerens personlige certifikat.
  2. Token-PIN-koden anmodes om.
  3. Tilfældige data signeres på den private nøgle direkte i Rutoken-chippen.
  4. Den resulterende signatur verificeres ved hjælp af den offentlige nøgle fra brugerens certifikat.
  5. Modulet returnerer signaturbekræftelsesresultatet til den kaldende applikation.

Du kan godkende ved hjælp af GOST R 34.10-2012-nøgler (længde 256 eller 512 bit) eller den forældede GOST R 34.10-2001.

Du behøver ikke bekymre dig om nøglernes sikkerhed - de genereres direkte i Rutoken og forlader aldrig dens hukommelse under kryptografiske operationer.

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

Rutoken EDS 2.0 er certificeret af FSB og FSTEC i henhold til NDV 4, derfor kan den bruges i informationssystemer, der behandler fortrolig information.

Praktisk brug

Næsten enhver moderne Linux vil gøre det, for eksempel vil vi bruge xUbuntu 18.10.

1) Installer de nødvendige pakker

sudo apt-get install libccid pcscd opensc
Hvis du vil tilføje en skrivebordslås med en pauseskærm, skal du installere pakken yderligere libpam-pkcs11.

2) Tilføj et PAM-modul med GOST-understøttelse

Indlæser biblioteket fra https://download.rutoken.ru/Rutoken/PAM/
Kopier indholdet af 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

Download og installer DEB- eller RPM-pakken fra linket: https://www.rutoken.ru/support/download/pkcs/

4) Tjek at Rutoken EDS 2.0 virker i systemet

I terminalen udfører vi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Hvis du ser stregen Rutoken ECP <no label> - det betyder, at alt er i orden.

5) Læs certifikatet

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

  • information vises om nøgler og certifikater, skal du læse certifikatet og gemme det på disken. For at gøre dette skal du køre følgende kommando, hvor du i stedet for {id} skal erstatte certifikat-id'et, som du så i outputtet af den forrige kommando:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Hvis filen cert.crt er blevet oprettet, skal du fortsætte til trin 6).
  • der er ingenting, så er enheden tom. Kontakt din administrator eller opret selv nøglerne og certifikatet ved at følge næste trin.

5.1) Opret et testcertifikat

Opmærksomhed! De beskrevne metoder til oprettelse af nøgler og certifikater er velegnede til test og er ikke beregnet til brug i kamptilstand. For at gøre dette skal du bruge nøgler og certifikater udstedt af din organisations betroede certificeringsmyndighed eller en akkrediteret certificeringsmyndighed.
PAM-modulet er designet til at beskytte lokale computere og er designet til at fungere i små organisationer. Da der er få brugere, kan administratoren overvåge tilbagekaldelsen af ​​certifikater og manuelt blokere konti, samt certifikaternes gyldighedsperiode. PAM-modulet ved endnu ikke, hvordan man verificerer certifikater ved hjælp af CRL'er og opbygger tillidskæder.

Den nemme måde (via browser)

For at opnå et testcertifikat skal du bruge webservice "Rutoken Registration Center". Processen tager ikke mere end 5 minutter.

Nørdens måde (via konsollen og muligvis compileren)

Tjek OpenSC-versionen
$ opensc-tool --version
Hvis versionen er mindre end 0.20, skal du opdatere eller bygge pkcs11-værktøjsgren med GOST-2012-understøttelse fra vores GitHub (på tidspunktet for udgivelsen af ​​denne artikel er udgivelse 0.20 endnu ikke blevet frigivet) eller fra hovedgrenen af ​​OpenSC-hovedprojektet senest begå 8cf1e6f

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

--id: objektidentifikator (CKA_ID) som tocifrede hex-tegnnumre fra ASCII-tabellen. Brug kun ASCII-koder til printbare tegn, fordi... id skal sendes til OpenSSL som en streng. For eksempel svarer ASCII-koden "3132" til strengen "12". For nemheds skyld kan du bruge onlinetjeneste til konvertering af strenge til ASCII-koder.

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

Dernæst vil vi oprette et certifikat. To måder vil blive beskrevet nedenfor: den første er gennem en CA (vi vil bruge test-CA'er), den anden er selvsigneret. For at gøre dette skal du først installere og konfigurere OpenSSL version 1.1 eller nyere for at arbejde med Rutoken gennem et specielt rtengine-modul ved hjælp af manualen Installation og konfiguration af OpenSSL.
For eksempel: for '--id 3132' i OpenSSL skal du angive "pkcs11:id=12".

Du kan bruge tjenesterne fra en test-CA, som der er mange af, f.eks. her, her и her, til dette vil vi oprette en anmodning om et certifikat

En anden mulighed er at give efter for dovenskab og skabe en selvsigneret
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Uploader certifikatet til enheden
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registrer certifikatet i systemet

Sørg for, at dit certifikat ligner en base64-fil:

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

Hvis dit certifikat ser sådan ud:

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

så skal du konvertere certifikatet fra DER-format til PEM-format (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Vi tjekker igen, at alt er i orden nu.

Føj certifikatet til listen over pålidelige certifikater
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Den sidste linje beskytter listen over betroede certifikater mod at blive ændret ved et uheld eller bevidst af andre brugere. Dette forhindrer nogen i at tilføje deres certifikat her og være i stand til at logge ind på dine vegne.

7) Konfigurer godkendelse

Opsætning af vores PAM-modul er helt standard og foregår på nøjagtig samme måde som opsætning af andre moduler. Opret til fil /usr/share/pam-configs/rutoken-gost-pam indeholdende det fulde navn på modulet, om det er aktiveret som standard, modulets prioritet og godkendelsesparametre.
Godkendelsesparametrene indeholder krav til operationens succes:

  • påkrævet: Sådanne moduler skal returnere et positivt svar. Hvis resultatet af et modulkald indeholder et negativt svar, vil dette resultere i en godkendelsesfejl. Anmodningen vil blive slettet, men de resterende moduler vil blive kaldt.
  • påkrævet: Svarer til påkrævet, men fejler øjeblikkeligt godkendelse og ignorerer andre moduler.
  • tilstrækkelig: Hvis ingen af ​​de nødvendige eller tilstrækkelige moduler før et sådant modul gav et negativt resultat, vil modulet returnere et positivt svar. De resterende moduler vil blive ignoreret.
  • valgfrit: Hvis der ikke er nødvendige moduler på stakken, og ingen af ​​de tilstrækkelige moduler giver et positivt resultat, skal mindst et af de valgfrie moduler returnere et positivt resultat.

Fuldt filindhold /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

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

gem filen, og kør derefter
$ sudo pam-auth-update
i det vindue, der vises, skal du sætte en stjerne ved siden af Rutoken PAM GOST og klik OK

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

8) Tjek indstillingerne

For at forstå, at alt er konfigureret, men samtidig ikke miste evnen til at logge ind på systemet, skal du indtaste kommandoen
$ sudo login
Skriv dit brugernavn. Alt er konfigureret korrekt, hvis systemet kræver en enheds PIN-kode.

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

9) Konfigurer computeren til at blive blokeret, når tokenet udpakkes

Inkluderet i pakken libpam-pkcs11 hjælpemiddel medfølger pkcs11_eventmgr, som giver dig mulighed for at udføre forskellige handlinger, når PKCS#11 hændelser opstår.
Til indstillinger pkcs11_eventmgr fungerer som en konfigurationsfil: /etc/pam_pkcs11/pkcs11_eventmgr.conf
For forskellige Linux-distributioner vil kommandoen, der får en konto til at blive låst, når et smart card eller token fjernes, være forskellig. Cm. event card_remove.
Et eksempel på en konfigurationsfil 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";
    }
}

Tilføj derefter applikationen pkcs11_eventmgr til opstart. For at gøre dette skal du redigere .bash_profile-filen:
$ nano /home/<имя_пользователя>/.bash_profile
Tilføj linjen pkcs11_eventmgr til slutningen af ​​filen og genstart.

De beskrevne trin til opsætning af operativsystemet kan bruges som instruktioner i enhver moderne Linux-distribution, inklusive indenlandske.

Sådan bruger du PAM-moduler til lokal godkendelse i Linux ved hjælp af GOST-2012-nøgler på Rutoken

Konklusion

Linux-pc'er bliver mere og mere populære i russiske regeringsorganer, og det er ikke altid nemt at konfigurere pålidelig to-faktor-godkendelse i dette operativsystem. Vi hjælper dig gerne med at løse "adgangskodeproblemet" med denne guide og beskytter pålideligt adgangen til din pc uden at bruge en masse tid på det.

Kilde: www.habr.com

Tilføj en kommentar