Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

Jednostavne lozinke nisu sigurne, a složene je nemoguće zapamtiti. Zbog toga tako često završe na samoljepljivoj noti ispod tastature ili na monitoru. Kako bi se osiguralo da lozinke ostanu u svijesti “zaboravnih” korisnika i da se pouzdanost zaštite ne izgubi, postoji dvofaktorska autentikacija (2FA).

Zbog kombinacije posjedovanja uređaja i poznavanja njegovog PIN-a, sam PIN može biti jednostavniji i lakši za pamćenje. Nedostaci u dužini ili nasumičnosti PIN-a su nadoknađeni zahtjevom fizičkog posjedovanja i ograničenjima grube sile PIN-a.

Osim toga, u državnim agencijama se dešava da žele da sve radi prema GOST-u. O ovoj 2FA opciji za prijavu na Linux će se raspravljati. Počeću izdaleka.

PAM moduli

Pluggable Authentication Modules (PAM) su moduli sa standardnim API-jem i implementacijama različitih mehanizama autentikacije u aplikacijama.
Svi uslužni programi i aplikacije koji mogu raditi s PAM-om ih preuzimaju i mogu ih koristiti za autentifikaciju korisnika.
U praksi to funkcionira otprilike ovako: naredba za prijavu poziva PAM, koji obavlja sve potrebne provjere koristeći module navedene u konfiguracijskoj datoteci i vraća rezultat nazad naredbi za prijavu.

librtpam

Modul koji je razvila kompanija Aktiv dodaje dvofaktornu autentifikaciju korisnika pomoću pametnih kartica ili USB tokena pomoću asimetričnih ključeva prema najnovijim standardima domaće kriptografije.

Pogledajmo princip njegovog rada:

  • Token pohranjuje korisnički certifikat i njegov privatni ključ;
  • Certifikat je pohranjen u korisničkom kućnom imeniku kao pouzdan.

Proces autentifikacije se odvija na sljedeći način:

  1. Rutoken traži lični sertifikat korisnika.
  2. Zahtijeva se PIN tokena.
  3. Slučajni podaci se potpisuju privatnim ključem direktno u Rutoken čipu.
  4. Dobiveni potpis se provjerava korištenjem javnog ključa iz korisničkog certifikata.
  5. Modul vraća rezultat provjere potpisa aplikaciji koja poziva.

Autentifikaciju možete izvršiti pomoću ključeva GOST R 34.10-2012 (dužine 256 ili 512 bita) ili zastarjelih GOST R 34.10-2001.

Ne morate da brinete o sigurnosti ključeva - oni se generišu direktno u Rutokenu i nikada ne napuštaju njegovu memoriju tokom kriptografskih operacija.

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

Rutoken EDS 2.0 je sertifikovan od strane FSB i FSTEC prema NDV 4, stoga se može koristiti u informacionim sistemima koji obrađuju poverljive informacije.

Praktična upotreba

Gotovo svaki moderni Linux može, na primjer, koristit ćemo xUbuntu 18.10.

1) Instalirajte potrebne pakete

sudo apt-get install libccid pcscd opensc
Ako želite da dodate zaključavanje radne površine sa čuvarom ekrana, dodatno instalirajte paket libpam-pkcs11.

2) Dodajte PAM modul sa GOST podrškom

Učitavanje biblioteke iz https://download.rutoken.ru/Rutoken/PAM/
Kopirajte sadržaj fascikle PAM librtpam.so.1.0.0 u sistemsku fasciklu
/usr/lib/ ili /usr/lib/x86_64-linux-gnu/ili /usr/lib64

3) Instalirajte paket sa librtpkcs11ecp.so

Preuzmite i instalirajte DEB ili RPM paket sa linka: https://www.rutoken.ru/support/download/pkcs/

4) Provjerite radi li Rutoken EDS 2.0 u sistemu

U terminalu izvršavamo
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ako vidite liniju Rutoken ECP <no label> - to znači da je sve u redu.

5) Pročitajte sertifikat

Provjera da li uređaj ima certifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ako nakon reda:
Using slot 0 with a present token (0x0)

  • informacije se prikazuju o ključevima i certifikatima, morate pročitati certifikat i spremiti ga na disk. Da biste to učinili, pokrenite sljedeću naredbu, gdje umjesto {id} trebate zamijeniti ID certifikata koji ste vidjeli u izlazu prethodne komande:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ako je datoteka cert.crt kreirana, nastavite na korak 6).
  • nema ničega, tada je uređaj prazan. Obratite se svom administratoru ili sami kreirajte ključeve i certifikat slijedeći sljedeći korak.

5.1) Kreirajte ispitni certifikat

Pažnja! Opisani načini za kreiranje ključeva i certifikata prikladni su za testiranje i nisu namijenjeni za korištenje u borbenom režimu. Da biste to učinili, trebate koristiti ključeve i certifikate koje je izdao pouzdani certifikacijski organ vaše organizacije ili akreditirani certifikacijski organ.
PAM modul je dizajniran za zaštitu lokalnih računara i dizajniran je za rad u malim organizacijama. S obzirom da je korisnika malo, administrator može pratiti opoziv certifikata i ručno blokirati račune, kao i rok važenja certifikata. PAM modul još ne zna kako provjeriti certifikate koristeći CRL i izgraditi lance povjerenja.

Jednostavan način (preko pretraživača)

Da biste dobili certifikat o testiranju, koristite web servis "Rutoken Registracioni centar". Proces će trajati ne više od 5 minuta.

Štreberski način (preko konzole i eventualno kompajlera)

Provjerite OpenSC verziju
$ opensc-tool --version
Ako je verzija manja od 0.20, ažurirajte ili izgradite pkcs11-tool grana sa podrškom GOST-2012 sa našeg GitHuba (u vrijeme objavljivanja ovog članka, izdanje 0.20 još nije objavljeno) ili iz glavne grane glavnog OpenSC projekta najkasnije urezivanje 8cf1e6f

Generirajte par ključeva sa sljedećim parametrima:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identifikator objekta (CKA_ID) kao dvocifreni heksadecimalni brojevi znakova iz ASCII tabele. Koristite samo ASCII kodove za ispisne znakove, jer... id će se morati proslijediti OpenSSL-u kao string. Na primjer, ASCII kod “3132” odgovara nizu “12”. Za praktičnost, možete koristiti online servis za pretvaranje stringova u ASCII kodove.

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

Zatim ćemo kreirati certifikat. Dva načina će biti opisana u nastavku: prvi je putem CA (koristit ćemo test CA), drugi je samopotpisan. Da biste to učinili, prvo morate instalirati i konfigurirati OpenSSL verziju 1.1 ili noviju za rad s Rutokenom preko posebnog rtengine modula koristeći priručnik Instalacija i konfiguracija OpenSSL-a.
Na primjer: za '--id 3132' u OpenSSL-u morate navesti "pkcs11:id=12".

Možete koristiti usluge testnog CA, kojih ima mnogo, npr. Evo, Evo и Evo, za ovo ćemo kreirati zahtjev za certifikat

Druga opcija je prepustiti se lijenosti i stvoriti samopotpisanu
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Učitavanje certifikata na uređaj
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registrirajte certifikat u sistemu

Uvjerite se da vaš certifikat izgleda kao base64 fajl:

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

Ako vaš sertifikat izgleda ovako:

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

tada trebate konvertirati certifikat iz DER formata u PEM format (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ponovo provjeravamo da li je sada sve u redu.

Dodajte sertifikat na listu pouzdanih sertifikata
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Posljednji red štiti listu pouzdanih certifikata od slučajne ili namjerne promjene od strane drugih korisnika. Ovo sprječava da neko ovdje doda svoj certifikat i da se može prijaviti u vaše ime.

7) Podesite autentifikaciju

Postavljanje našeg PAM modula je potpuno standardno i vrši se na potpuno isti način kao i postavljanje ostalih modula. Kreirajte u datoteku /usr/share/pam-configs/rutoken-gost-pam koji sadrži puno ime modula, da li je omogućeno prema zadanim postavkama, prioritet modula i parametre provjere autentičnosti.
Parametri provjere autentičnosti sadrže zahtjeve za uspjeh operacije:

  • potrebno: Takvi moduli moraju dati pozitivan odgovor. Ako rezultat poziva modula sadrži negativan odgovor, to će rezultirati greškom u autentifikaciji. Zahtjev će biti odbačen, ali će preostali moduli biti pozvani.
  • potrebnu: Slično potrebnom, ali odmah ne uspijeva provjera autentičnosti i ignorira druge module.
  • dovoljno: Ako nijedan od potrebnih ili dovoljnih modula prije takvog modula nije vratio negativan rezultat, tada će modul vratiti pozitivan odgovor. Preostali moduli će biti zanemareni.
  • opciono: Ako nema potrebnih modula na steku i nijedan od dovoljnih modula ne daje pozitivan rezultat, tada barem jedan od opcionih modula mora vratiti pozitivan rezultat.

Kompletan sadržaj fajla /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

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

sačuvajte datoteku, a zatim izvršite
$ sudo pam-auth-update
u prozoru koji se pojavi stavite zvjezdicu pored njega Rutoken PAM GOST i guranje OK

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

8) Provjerite postavke

Da biste razumjeli da je sve konfigurirano, ali da istovremeno ne izgubite mogućnost prijave na sistem, unesite naredbu
$ sudo login
Unesite svoje korisničko ime. Sve je ispravno konfigurisano ako sistem zahteva PIN kod uređaja.

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

9) Konfigurišite računar da bude blokiran kada se token ekstrahuje

Uključeno u paket libpam-pkcs11 uslužni program uključen pkcs11_eventmgr, koji vam omogućava da izvršite različite radnje kada dođe do PKCS#11 događaja.
Za postavke pkcs11_eventmgr služi kao konfiguracijski fajl: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Za različite Linux distribucije, naredba koja uzrokuje zaključavanje računa kada se ukloni pametna kartica ili token će se razlikovati. Cm. event card_remove.
Primjer konfiguracijske datoteke je prikazan ispod:

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

Nakon toga dodajte aplikaciju pkcs11_eventmgr za pokretanje. Da biste to učinili, uredite datoteku .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Dodajte red pkcs11_eventmgr na kraj datoteke i ponovo pokrenite sistem.

Opisani koraci za podešavanje operativnog sistema mogu se koristiti kao uputstva u bilo kojoj modernoj Linux distribuciji, uključujući i domaću.

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu koristeći GOST-2012 ključeve na Rutokenu

zaključak

Linux računari postaju sve popularniji u ruskim vladinim agencijama, a postavljanje pouzdane dvofaktorske autentifikacije u ovom OS nije uvijek lako. Rado ćemo vam pomoći da riješite „problem sa lozinkom“ pomoću ovog vodiča i pouzdano zaštitimo pristup vašem računaru bez trošenja puno vremena na njega.

izvor: www.habr.com

Dodajte komentar