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 är inte säkra och komplexa är omöjliga att komma ihåg. Det är därför de så ofta hamnar på en lapp under tangentbordet eller på skärmen. För att säkerställa att lösenord förblir i "glömska" användares medvetande och att skyddets tillförlitlighet inte går förlorad, finns det tvåfaktorsautentisering (2FA).

På grund av kombinationen av att äga en enhet och känna till dess PIN-kod, kan själva PIN-koden vara enklare och lättare att komma ihåg. Nackdelar i PIN-längd eller slumpmässighet uppvägs av kravet på fysisk innehav och restriktioner för PIN-brute force.

Dessutom händer det på statliga myndigheter att de vill att allt ska fungera enligt GOST. Detta 2FA-alternativ för att logga in på Linux kommer att diskuteras. Jag börjar på långt håll.

PAM-moduler

Pluggable Authentication Modules (PAM) är moduler med ett standard-API och implementeringar av olika autentiseringsmekanismer i applikationer.
Alla verktyg och applikationer som kan fungera med PAM hämtar dem och kan använda dem för användarverifiering.
I praktiken fungerar det ungefär så här: inloggningskommandot anropar PAM, som utför alla nödvändiga kontroller med de moduler som anges i konfigurationsfilen och returnerar resultatet tillbaka till inloggningskommandot.

librtpam

Modulen som utvecklats av Aktiv-företaget lägger till tvåfaktorsautentisering av användare som använder smarta kort eller USB-tokens med asymmetriska nycklar enligt de senaste standarderna för inhemsk kryptografi.

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

  • Token lagrar användarens certifikat och dess privata nyckel;
  • Certifikatet sparas i användarens hemkatalog som tillförlitligt.

Autentiseringsprocessen sker enligt följande:

  1. Rutoken söker efter användarens personliga certifikat.
  2. Token-PIN begärs.
  3. Slumpmässig data signeras på den privata nyckeln direkt i Rutoken-chippet.
  4. Den resulterande signaturen verifieras med den publika nyckeln från användarens certifikat.
  5. Modulen returnerar signaturverifieringsresultatet till den anropande applikationen.

Du kan autentisera med GOST R 34.10-2012-nycklar (längd 256 eller 512 bitar) eller den föråldrade GOST R 34.10-2001.

Du behöver inte oroa dig för säkerheten för 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 EDS 2.0 är certifierad av FSB och FSTEC enligt NDV 4, därför kan den användas i informationssystem som behandlar konfidentiell information.

Praktisk användning

Nästan vilken modern Linux som helst, kommer vi till exempel att använda xUbuntu 18.10.

1) Installera nödvändiga paket

sudo apt-get install libccid pcscd opensc
Om du vill lägga till ett skrivbordslås med en skärmsläckare, installera paketet ytterligare libpam-pkcs11.

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

Laddar biblioteket från https://download.rutoken.ru/Rutoken/PAM/
Kopiera innehållet i PAM-mappen 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 från länken: https://www.rutoken.ru/support/download/pkcs/

4) Kontrollera att Rutoken EDS 2.0 fungerar i systemet

I terminalen kör vi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Om du ser linjen Rutoken ECP <no label> - Det betyder att allt är okej.

5) Läs intyget

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

  • information visas om nycklar och certifikat måste du läsa certifikatet och spara det på disk. För att göra detta, kör följande kommando, där du istället för {id} måste ersätta certifikat-ID:t som du såg i utdata från föregående kommando:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Om filen cert.crt har skapats, fortsätt till steg 6).
  • det finns inget, då är enheten tom. Kontakta din administratör eller skapa nycklarna och certifikatet själv genom att följa nästa steg.

5.1) Skapa ett testcertifikat

Uppmärksamhet! De beskrivna metoderna för att skapa nycklar och certifikat är lämpliga för testning och är inte avsedda för användning i stridsläge. För att göra detta måste du använda nycklar och certifikat utfärdade av din organisations betrodda certifieringsmyndighet eller en ackrediterad certifieringsmyndighet.
PAM-modulen är utformad för att skydda lokala datorer och är designad för att fungera i små organisationer. Eftersom det finns få användare kan administratören övervaka återkallelsen av certifikat och manuellt blockera konton, samt certifikatens giltighetstid. PAM-modulen vet ännu inte hur man verifierar certifikat med hjälp av CRL:er och bygger förtroendekedjor.

Det enkla sättet (via webbläsare)

För att få ett testcertifikat, använd webbtjänst "Rutoken Registration Center". Processen tar inte mer än 5 minuter.

Nördens sätt (via konsolen och möjligen kompilatorn)

Kontrollera OpenSC-versionen
$ opensc-tool --version
Om versionen är mindre än 0.20, uppdatera eller bygg pkcs11-verktygsgren med GOST-2012-stöd från vår GitHub (vid tidpunkten för publiceringen av den här artikeln har release 0.20 ännu inte släppts) eller från huvudgrenen av OpenSC-huvudprojektet senast begå 8cf1e6f

Generera ett nyckelpar med följande parametrar:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: objektidentifierare (CKA_ID) som tvåsiffriga hexadecimala tecken från ASCII-tabellen. Använd endast ASCII-koder för utskrivbara tecken, eftersom... id måste skickas till OpenSSL som en sträng. Till exempel motsvarar ASCII-koden "3132" strängen "12". För enkelhetens skull kan du använda onlinetjänst för att konvertera strängar till ASCII-koder.

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

Därefter skapar vi ett certifikat. Två sätt kommer att beskrivas nedan: det första är genom en CA (vi kommer att använda test-CA), det andra är självsignerat. För att göra detta måste du först installera och konfigurera OpenSSL version 1.1 eller senare för att arbeta med Rutoken genom en speciell rtengine-modul med hjälp av manualen Installera och konfigurera OpenSSL.
Till exempel: för '--id 3132" i OpenSSL måste du ange "pkcs11:id=12".

Du kan använda tjänsterna hos en test-CA, som det finns många av, t.ex. här, här и här, för detta kommer vi att skapa en begäran om ett certifikat

Ett annat alternativ är att ge efter för lättja och skapa en självsignerad
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Laddar upp certifikatet till enheten
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out 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

då måste du konvertera certifikatet från DER-format till PEM-format (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Vi kontrollerar igen att allt är i sin ordning nu.

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 att oavsiktligt eller avsiktligt ändras av andra användare. Detta förhindrar att någon lägger till sitt certifikat här och kan logga in för din räkning.

7) Ställ in autentisering

Att sätta upp vår PAM-modul är helt standard och görs på exakt samma sätt som att sätta upp andra moduler. Skapa till fil /usr/share/pam-configs/rutoken-gost-pam som innehåller modulens fullständiga namn, om den är aktiverad som standard, prioritet för modulen och autentiseringsparametrar.
Autentiseringsparametrarna innehåller krav för att operationen ska lyckas:

  • krävs: Sådana moduler måste ge ett positivt svar. Om resultatet av ett modulanrop innehåller ett negativt svar kommer detta att resultera i ett autentiseringsfel. Begäran kommer att tas bort, men de återstående modulerna kommer att anropas.
  • erforderligt: ​​Liknar obligatoriskt, men misslyckas omedelbart med autentisering och ignorerar andra moduler.
  • tillräckligt: ​​Om ingen av de nödvändiga eller tillräckliga modulerna före en sådan modul gav ett negativt resultat, kommer modulen att returnera ett positivt svar. De återstående modulerna kommer att ignoreras.
  • valfritt: Om det inte finns några obligatoriska moduler i stacken och ingen av de tillräckliga modulerna ger ett positivt resultat, måste minst en av de valfria modulerna ge ett positivt resultat.

Fullständigt filinnehåll /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

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

spara filen och kör sedan
$ sudo pam-auth-update
i fönstret som visas, sätt en asterisk bredvid den Rutoken PAM GOST och klicka OK

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

8) Kontrollera inställningarna

För att förstå att allt är konfigurerat, men samtidigt inte förlora möjligheten att logga in i systemet, skriv in kommandot
$ sudo login
Skriv in ditt användarnamn. Allt är korrekt konfigurerat om systemet kräver en enhets PIN-kod.

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

9) Konfigurera datorn så att den blockeras när tokenen extraheras

Ingår i paketet libpam-pkcs11 verktyg ingår pkcs11_eventmgr, som låter dig utföra olika åtgärder när PKCS#11-händelser inträffar.
För inställningar pkcs11_eventmgr fungerar som en konfigurationsfil: /etc/pam_pkcs11/pkcs11_eventmgr.conf
För olika Linux-distributioner skiljer sig kommandot som gör att ett konto låses när ett smartkort eller token tas bort. Centimeter. event card_remove.
Ett exempel på en konfigurationsfil visas nedan:

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

Lägg sedan till applikationen pkcs11_eventmgr för att starta. För att göra detta, 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 installera operativsystemet kan användas som instruktioner i alla moderna Linux-distributioner, inklusive inhemska.

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

Slutsats

Linux-datorer blir allt mer populära i ryska statliga myndigheter, och det är inte alltid lätt att ställa in pålitlig tvåfaktorsautentisering i detta operativsystem. Vi hjälper dig gärna att lösa "lösenordsproblemet" med den här guiden och på ett tillförlitligt sätt skydda åtkomsten till din dator utan att spendera mycket tid på det.

Källa: will.com

Lägg en kommentar