Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

Jednostavne lozinke nisu sigurne, a složene je nemoguće zapamtiti. Zato tako često završe na ceduljici ispod tipkovnice ili na monitoru. Kako bi se osiguralo da lozinke ostanu u glavama "zaboravnih" korisnika i da se pouzdanost zaštite ne izgubi, postoji dvofaktorska autentifikacija (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 duljini ili nasumičnosti PIN-a nadoknađuju se zahtjevom za fizičkim posjedovanjem i ograničenjima grube upotrebe PIN-a.

Osim toga, u državnim agencijama se događa da žele da sve radi prema GOST-u. Razgovarat ćemo o ovoj 2FA opciji za prijavu u Linux. Počet ću izdaleka.

PAM moduli

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

librtpam

Modul koji je razvila tvrtka Aktiv dodaje dvofaktorsku 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 se sprema u korisnikov kućni imenik kao pouzdan.

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

  1. Rutoken traži osobni certifikat korisnika.
  2. Zatražen je PIN tokena.
  3. Nasumični podaci potpisuju se na privatnom ključu izravno u Rutoken čipu.
  4. Dobiveni potpis se provjerava pomoću javnog ključa iz korisničkog certifikata.
  5. Modul vraća rezultat provjere potpisa pozivnoj aplikaciji.

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

Ne morate brinuti o sigurnosti ključeva - oni se generiraju izravno u Rutokenu i nikada ne napuštaju njegovu memoriju tijekom kriptografskih operacija.

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

Rutoken EDS 2.0 je certificiran od strane FSB i FSTEC prema NDV 4, stoga se može koristiti u informacijskim sustavima koji obrađuju povjerljive informacije.

Praktična upotreba

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

1) Instalirajte potrebne pakete

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

2) Dodajte PAM modul s GOST podrškom

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

3) Instalirajte paket s librtpkcs11ecp.so

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

4) Provjerite radi li Rutoken EDS 2.0 u sustavu

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

5) Pročitajte potvrdu

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

  • informacije se prikazuju o ključevima i certifikatima, trebate 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 naredbe:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ako je datoteka cert.crt stvorena, prijeđite na korak 6).
  • Nema ničega, tada je uređaj prazan. Obratite se svom administratoru ili sami izradite ključeve i certifikat slijedeći sljedeći korak.

5.1) Izradite potvrdu o testiranju

Pažnja! Opisane metode za izradu ključeva i certifikata prikladne su za testiranje i nisu namijenjene za korištenje u borbenom načinu rada. Da biste to učinili, trebate koristiti ključeve i certifikate koje je izdalo pouzdano tijelo za izdavanje certifikata vaše organizacije ili ovlašteno tijelo za izdavanje certifikata.
PAM modul je dizajniran za zaštitu lokalnih računala i dizajniran je za rad u malim organizacijama. Budući da ima malo korisnika, Administrator može pratiti opoziv certifikata i ručno blokirati račune, kao i rok valjanosti certifikata. PAM modul još ne zna kako provjeriti certifikate pomoću CRL-ova i izgraditi lance povjerenja.

Jednostavan način (putem preglednika)

Za dobivanje potvrde o ispitivanju koristite web usluga "Centar za registraciju Rutokena". Proces neće trajati više od 5 minuta.

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

Provjerite verziju OpenSC-a
$ opensc-tool --version
Ako je verzija manja od 0.20, ažurirajte ili izgradite grana pkcs11-tool s podrškom za GOST-2012 s našeg GitHuba (u vrijeme objave ovog članka izdanje 0.20 još nije objavljeno) ili iz glavne grane glavnog OpenSC projekta najkasnije počiniti 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 dvoznamenkasti heksadecimalni broj znakova iz ASCII tablice. Koristite samo ASCII kodove za ispisne znakove, jer... id će se morati proslijediti OpenSSL-u kao niz. 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 izraditi certifikat. U nastavku će biti opisana dva načina: prvi je kroz CA (koristit ćemo testne CA), drugi je samopotpisani. Da biste to učinili, prvo trebate instalirati i konfigurirati OpenSSL verziju 1.1 ili noviju za rad s Rutokenom putem posebnog modula rtengine pomoću priručnika Instalacija i konfiguracija OpenSSL-a.
Na primjer: za '--id 3132' u OpenSSL morate navesti "pkcs11:id=12”.

Možete koristiti usluge testnog CA, kojih ima mnogo, npr. ovdje, ovdje и ovdje, za to ćemo izraditi zahtjev za certifikat

Druga mogućnost je prepustiti se lijenosti i stvoriti samopotpisani
$ 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 sustavu

Provjerite izgleda li vaš certifikat kao base64 datoteka:

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

Ako vaš certifikat izgleda ovako:

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

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

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

Dodajte certifikat na popis pouzdanih certifikata
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

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

7) Postavite autentifikaciju

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

  • potrebno: Takvi moduli moraju vratiti pozitivan odgovor. Ako rezultat poziva modula sadrži negativan odgovor, to će rezultirati pogreškom provjere autentičnosti. Zahtjev će biti odbačen, ali će preostali moduli biti pozvani.
  • Requisite: Slično potrebnom, ali odmah ne uspijeva provjera autentičnosti i zanemaruje druge module.
  • dovoljan: ako nijedan od potrebnih ili dovoljnih modula prije takvog modula nije vratio negativan rezultat, tada će modul vratiti pozitivan odgovor. Preostali moduli bit će zanemareni.
  • izborno: Ako nema potrebnih modula na stogu i niti jedan od dovoljnih modula ne vraća pozitivan rezultat, tada barem jedan od izbornih modula mora vratiti pozitivan rezultat.

Cijeli sadržaj datoteke /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 pomoću GOST-2012 ključeva na Rutokenu

spremite datoteku, a zatim je izvršite
$ sudo pam-auth-update
u prozoru koji se pojavi stavite zvjezdicu pored Rutoken PAM GOST i kliknite OK

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

8) Provjerite postavke

Da biste shvatili da je sve konfigurirano, ali da istovremeno ne izgubite mogućnost prijave u sustav, unesite naredbu
$ sudo login
Unesite svoje korisničko ime. Sve je ispravno konfigurirano ako sustav zahtijeva PIN kod uređaja.

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

9) Konfigurirajte računalo da bude blokirano kada se token izdvoji

Uključeno u paket libpam-pkcs11 uslužni program uključen pkcs11_eventmgr, koji vam omogućuje izvođenje raznih radnji kada se dogode PKCS#11 događaji.
Za postavke pkcs11_eventmgr služi kao konfiguracijska datoteka: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Za različite distribucije Linuxa, naredba koja uzrokuje zaključavanje računa kada se ukloni pametna kartica ili token razlikovat će se. Cm. event card_remove.
Primjer konfiguracijske datoteke prikazan je u nastavku:

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 redak pkcs11_eventmgr na kraj datoteke i ponovno pokrenite sustav.

Opisani koraci za postavljanje operativnog sustava mogu se koristiti kao upute u bilo kojoj modernoj Linux distribuciji, pa tako i domaćoj.

Kako koristiti PAM module za lokalnu autentifikaciju u Linuxu pomoću GOST-2012 ključeva na Rutokenu

Zaključak

Linux računala postaju sve popularnija u ruskim vladinim agencijama, a postavljanje pouzdane dvofaktorske autentifikacije u ovom OS-u nije uvijek lako. Rado ćemo vam pomoći riješiti “problem s lozinkom” pomoću ovog vodiča i pouzdano zaštititi pristup vašem računalu bez trošenja puno vremena na to.

Izvor: www.habr.com

Dodajte komentar