Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

I password simplici ùn sò micca sicuri, è quelli cumplessi sò impussibili di ricurdà. Hè per quessa chì spessu finiscinu nantu à una nota appiccicosa sottu à u teclatu o nantu à u monitor. Per assicurà chì e password restanu in a mente di l'utilizatori "dimentichi" è l'affidabilità di a prutezzione ùn hè micca persa, ci hè l'autentificazione à dui fattori (2FA).

A causa di a cumminazzioni di pussede un dispositivu è cunnosce u so PIN, u PIN stessu pò esse più simplice è più faciule da ricurdà. I svantaghji in a lunghezza di u PIN o l'aleatoriu sò compensati da u requisitu di pussessu fisicu è e restrizioni à a forza bruta di PIN.

Inoltre, succede in l'agenzii di u guvernu chì volenu chì tuttu u travagliu secondu GOST. Questa opzione 2FA per accede à Linux serà discututa. Cuminciaraghju da luntanu.

Moduli PAM

Pluggable Authentication Modules (PAM) sò moduli cù una API standard è implementazioni di varii meccanismi di autenticazione in applicazioni.
Tutte l'utilità è l'applicazioni chì ponu travaglià cù PAM piglialli è ponu aduprà per l'autentificazione di l'utilizatori.
In pratica, funziona qualcosa di questu: u cumandamentu di login chjama PAM, chì eseguisce tutti i cuntrolli necessarii cù i moduli specificati in u schedariu di cunfigurazione è torna u risultatu à u cumandamentu di login.

librtpam

U modulu sviluppatu da a cumpagnia Aktiv aghjusta l'autentificazione à dui fattori di l'utilizatori chì utilizanu smart cards o tokens USB chì utilizanu chjavi asimmetrici secondu l'ultimi standard di criptografia domestica.

Fighjemu u principiu di u so funziunamentu:

  • U token guarda u certificatu di l'utilizatore è a so chjave privata;
  • U certificatu hè salvatu in u cartulare di casa di l'utilizatore cum'è fiduciale.

U prucessu d'autentificazione si faci cusì:

  1. Rutoken cerca u certificatu persunale di l'utilizatore.
  2. U token PIN hè dumandatu.
  3. I dati casuali sò firmati nantu à a chjave privata direttamente in u chip Rutoken.
  4. A firma resultanti hè verificata cù a chjave publica da u certificatu di l'utilizatore.
  5. U modulu torna u risultatu di verificazione di a firma à l'applicazione di chjama.

Pudete autentificà cù e chjave GOST R 34.10-2012 (lunghezza 256 o 512 bit) o ​​GOST R 34.10-2001 obsoleti.

Ùn avete micca preoccupatu di a sicurità di e chjave - sò generati direttamente in Rutoken è ùn lascianu mai a so memoria durante l'operazioni criptografiche.

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

Rutoken EDS 2.0 hè certificatu da u FSB è FSTEC secondu NDV 4, per quessa pò esse usatu in sistemi d'infurmazione chì processanu infurmazioni cunfidenziale.

Usu praticu

Quasi ogni Linux mudernu farà, per esempiu useremu xUbuntu 18.10.

1) Installa i pacchetti necessarii

sudo apt-get install libccid pcscd opensc
Se vulete aghjunghje un serratura di u scrittore cù un screensaver, installate u pacchettu in più libpam-pkcs11.

2) Aghjunghjite un modulu PAM cù supportu GOST

Caricà a biblioteca da https://download.rutoken.ru/Rutoken/PAM/
Copia u cuntenutu di u cartulare PAM librtpam.so.1.0.0 à u cartulare di u sistema
/usr/lib/ o /usr/lib/x86_64-linux-gnu/o /usr/lib64

3) Installa u pacchettu cù librtpkcs11ecp.so

Scaricate è installate u pacchettu DEB o RPM da u ligame: https://www.rutoken.ru/support/download/pkcs/

4) Verificate chì Rutoken EDS 2.0 travaglia in u sistema

In u terminal eseguimu
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Se vede a linea Rutoken ECP <no label> - significa chì tuttu hè bè.

5) Leghjite u certificatu

Verificate chì u dispusitivu hà un certificatu
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Se dopu a linea:
Using slot 0 with a present token (0x0)

  • l'infurmazione hè visualizata circa chjavi è certificati, vi tocca à leghje u certificatu è salvà lu à u discu. Per fà questu, eseguite u cumandimu seguitu, induve invece di {id} avete bisognu di rimpiazzà l'ID di certificatu chì avete vistu in l'output di u cumandimu precedente:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Se u schedariu cert.crt hè statu creatu, andate à u passu 6).
  • ùn ci hè nunda, allura u dispusitivu hè viotu. Cuntattate u vostru amministratore o creanu e chjave è certificate sè stessu seguitendu u prossimu passu.

5.1) Crea un certificatu di prova

Attenzione ! I metudi descritti per creà chjavi è certificati sò adattati per a prova è ùn sò micca pensati per l'usu in modu di cummattimentu. Per fà questu, avete bisognu di utilizà chjavi è certificati emessi da l'autorità di certificazione di fiducia di a vostra urganizazione o una autorità di certificazione accreditata.
U modulu PAM hè pensatu per prutege l'urdinatori lucali è hè pensatu per travaglià in picculi urganisazioni. Siccomu ci sò pochi utilizatori, l'Amministratore pò monitorà a revocazione di certificati è bluccà manualmente i cunti, è ancu u periodu di validità di i certificati. U modulu PAM ùn sapi ancu cumu verificà i certificati utilizendu CRL è custruisce catene di fiducia.

U modu faciule (via navigatore)

Per uttene un certificatu di prova, utilizate serviziu web "Rutoken Registration Center". U prucessu ùn durà micca più di 5 minuti.

U modu di geek (via a cunsola è possibbilmente u compilatore)

Verificate a versione OpenSC
$ opensc-tool --version
Se a versione hè menu di 0.20, allora aghjurnà o custruisce pkcs11-tool branch cù supportu GOST-2012 da u nostru GitHub (à u mumentu di questu articulu a liberazione 0.20 ùn hè micca stata liberata) o da u ramu maestru di u prughjettu principale OpenSC più tardi. cummette 8cf1e6f

Generate una coppia di chjave cù i seguenti parametri:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: identificatore di l'ughjettu (CKA_ID) cum'è numeri di caratteri hexadecimale di dui cifre da a tabella ASCII. Aduprate solu codici ASCII per i caratteri stampabili, perchè ... id duverà esse passatu à OpenSSL cum'è una stringa. Per esempiu, u codice ASCII "3132" currisponde à a stringa "12". Per comodità, pudete aduprà serviziu in linea per cunvertisce stringhe in codici ASCII.

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

Dopu avemu da creà un certificatu. Dui manere seranu descritti quì sottu: u primu hè attraversu un CA (avemu aduprà CA di prova), u sicondu hè firmatu da sè stessu. Per fà questu, prima deve installà è cunfigurà OpenSSL versione 1.1 o più tardi per travaglià cù Rutoken per mezu di un modulu rtengine speciale cù u manuale. Installazione è cunfigurazione OpenSSL.
Per esempiu: per '--id 3132' in OpenSSL avete bisognu di specificà "pkcs11:id=12".

Pudete aduprà i servizii di una prova CA, di quale ci sò assai, per esempiu, eccu, eccu и eccu, per questu avemu da creà una dumanda per un certificatu

Un'altra opzione hè di dà à a pigrizia è di creà un autofirmatu
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Caricà u certificatu à u dispusitivu
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Registrate u certificatu in u sistema

Assicuratevi chì u vostru certificatu s'assumiglia à un schedariu base64:

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

Se u vostru certificatu pare cusì:

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

dopu avete bisognu di cunvertisce u certificatu da u formatu DER à u formatu PEM (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Avemu verificatu di novu chì tuttu hè in ordine avà.

Aghjunghjite u certificatu à a lista di certificati di fiducia
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

L'ultima linea prutege a lista di certificati di fiducia da esse cambiatu accidentalmente o intenzionalmente da altri utilizatori. Questu impedisce à qualcunu di aghjunghje u so certificatu quì è di pudè login in u vostru nome.

7) Configurate l'autentificazione

L'installazione di u nostru modulu PAM hè cumplettamente standard è hè fatta esattamente in u listessu modu cum'è a creazione di altri moduli. Crea à u schedariu /usr/share/pam-configs/rutoken-gost-pam chì cuntene u nome cumpletu di u modulu, s'ellu hè attivatu per automaticamente, a priorità di u modulu è i paràmetri di autentificazione.
I paràmetri di autentificazione cuntenenu esigenze per u successu di l'operazione:

  • necessariu: tali moduli devenu vultà una risposta positiva. Se u risultatu di una chjama di modulu cuntene una risposta negativa, questu risultatu in un errore di autentificazione. A dumanda serà abbandunata, ma i moduli rimanenti seranu chjamati.
  • requisite: Simile à ubligatoriu, ma subitu falla l'autentificazione è ignora altri moduli.
  • suffissu: Se nimu di i moduli richiesti o sufficienti prima chì un tali modulu hà restituutu un risultatu negativu, u modulu restituverà una risposta positiva. I moduli rimanenti seranu ignorati.
  • optional: Se ùn ci sò micca moduli richiesti nantu à a pila è nimu di i moduli suffirenti restituiscenu un risultatu pusitivu, allora almenu unu di i moduli opzionali deve rinvià un risultatu pusitivu.

Cuntinutu cumpletu di u schedariu /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

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

salvà u schedariu, poi eseguite
$ sudo pam-auth-update
in a finestra chì appare, mette un asteriscu accantu Rutoken PAM GOST è cliccate OK

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

8) Verificate i paràmetri

Per capisce chì tuttu hè cunfiguratu, ma à u stessu tempu ùn perde micca a capacità di log in u sistema, entre in u cumandimu
$ sudo login
Inserite u vostru nome d'utilizatore. Tuttu hè cunfiguratu currettamente se u sistema richiede un codice PIN di u dispositivu.

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

9) Configurate l'urdinatore per esse bluccatu quandu u token hè estrattu

Inclusu in u pacchettu libpam-pkcs11 utilità inclusa pkcs11_eventmgr, chì vi permette di fà diverse azzioni quandu l'avvenimenti PKCS # 11 accadenu.
Per i paràmetri pkcs11_eventmgr serve cum'è un schedariu di cunfigurazione: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Per e diverse distribuzioni Linux, u cumandamentu chì provoca un contu per esse chjusu quandu una smart card o token hè sguassatu serà diversu. Cm. event card_remove.
Un esempiu di schedariu di cunfigurazione hè mostratu quì sottu:

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

Dopu quì aghjunghje l'applicazione pkcs11_eventmgr per inizià. Per fà questu, edità u schedariu .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Aghjunghjite a linea pkcs11_eventmgr à a fine di u schedariu è reboot.

I passi descritti per a stallazione di u sistema operatore ponu esse aduprati cum'è struzzioni in ogni distribuzione Linux moderna, cumpresi quelli domestici.

Cumu utilizà i moduli PAM per l'autentificazione locale in Linux utilizendu e chjave GOST-2012 in Rutoken

cunchiusioni

I PC Linux sò diventati sempre più populari in l'agenzii di u guvernu russu, è a creazione di l'autentificazione affidabile à dui fattori in questu OS ùn hè micca sempre faciule. Seremu cuntenti di aiutà vi risolve u "prublemu di password" cù sta guida è prutegge in modu affidabile l'accessu à u vostru PC senza passà assai tempu nantu à questu.

Source: www.habr.com

Add a comment