Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

Vienkāršas paroles nav drošas, un sarežģītas nav iespējams atcerēties. Tāpēc tie tik bieži nonāk uz līmlapiņas zem tastatūras vai monitorā. Lai nodrošinātu, ka paroles paliek “aizmāršīgu” lietotāju prātos un aizsardzības uzticamība netiek zaudēta, tiek izmantota divu faktoru autentifikācija (2FA).

Pateicoties tam, ka jums pieder ierīce un zināt tās PIN, PIN pats var būt vienkāršāks un vieglāk iegaumējams. PIN garuma vai nejaušības trūkumus kompensē prasība par fizisku piederību un PIN brutālā spēka ierobežojumi.

Turklāt valsts aģentūrās gadās, ka viņi vēlas, lai viss darbotos saskaņā ar GOST. Šī 2FA opcija, lai pieteiktos Linux, tiks apspriesta. Sākšu no tālienes.

PAM moduļi

Pluggable Authentication Modules (PAM) ir moduļi ar standarta API un dažādu autentifikācijas mehānismu ieviešanu lietojumprogrammās.
Visas utilītas un lietojumprogrammas, kas var strādāt ar PAM, tos uztver un var izmantot lietotāja autentifikācijai.
Praksē tas darbojas apmēram šādi: pieteikšanās komanda izsauc PAM, kas veic visas nepieciešamās pārbaudes, izmantojot konfigurācijas failā norādītos moduļus, un atgriež rezultātu atpakaļ pieteikšanās komandai.

librtpam

Uzņēmuma Aktiv izstrādātais modulis pievieno divu faktoru lietotāju autentifikāciju, izmantojot viedkartes vai USB marķierus, izmantojot asimetriskas atslēgas atbilstoši jaunākajiem iekšzemes kriptogrāfijas standartiem.

Apskatīsim tā darbības principu:

  • Tokenā tiek saglabāts lietotāja sertifikāts un tā privātā atslēga;
  • Sertifikāts tiek saglabāts lietotāja mājas direktorijā kā uzticams.

Autentifikācijas process notiek šādi:

  1. Rutoken meklē lietotāja personīgo sertifikātu.
  2. Tiek pieprasīts marķiera PIN kods.
  3. Nejauši dati tiek parakstīti uz privātās atslēgas tieši Rutoken mikroshēmā.
  4. Iegūtais paraksts tiek pārbaudīts, izmantojot publisko atslēgu no lietotāja sertifikāta.
  5. Modulis atgriež paraksta pārbaudes rezultātu izsaucējai lietojumprogrammai.

Varat autentificēties, izmantojot GOST R 34.10-2012 atslēgas (garums 256 vai 512 biti) vai novecojušo GOST R 34.10-2001.

Jums nav jāuztraucas par atslēgu drošību – tās tiek ģenerētas tieši Rutoken un nekad neatstāj tās atmiņu kriptogrāfijas darbību laikā.

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

Rutoken EDS 2.0 ir FSB un FSTEC sertificēts saskaņā ar NDV 4, tāpēc to var izmantot informācijas sistēmās, kas apstrādā konfidenciālu informāciju.

Praktiska lietošana

Derēs gandrīz jebkura mūsdienu Linux, piemēram, mēs izmantosim xUbuntu 18.10.

1) Instalējiet nepieciešamās pakotnes

sudo apt-get install libccid pcscd opensc
Ja vēlaties pievienot darbvirsmas bloķēšanu ar ekrānsaudzētāju, instalējiet pakotni papildus libpam-pkcs11.

2) Pievienojiet PAM moduli ar GOST atbalstu

Notiek bibliotēkas ielāde no https://download.rutoken.ru/Rutoken/PAM/
Kopējiet PAM mapes librtpam.so.1.0.0 saturu sistēmas mapē
/usr/lib/ vai /usr/lib/x86_64-linux-gnu/vai /usr/lib64

3) Instalējiet pakotni ar librtpkcs11ecp.so

Lejupielādējiet un instalējiet DEB vai RPM pakotni no saites: https://www.rutoken.ru/support/download/pkcs/

4) Pārbaudiet, vai sistēmā darbojas Rutoken EDS 2.0

Terminālī mēs izpildām
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ja redzat līniju Rutoken ECP <no label> - tas nozīmē, ka viss ir kārtībā.

5) Izlasiet sertifikātu

Pārbauda, ​​vai ierīcei ir sertifikāts
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ja aiz rindas:
Using slot 0 with a present token (0x0)

  • tiek parādīta informācija par atslēgām un sertifikātiem, jums ir jāizlasa sertifikāts un jāsaglabā diskā. Lai to izdarītu, palaidiet šo komandu, kur {id} vietā ir jāaizstāj sertifikāta ID, ko redzējāt iepriekšējās komandas izvadē:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ja ir izveidots fails cert.crt, pārejiet uz 6. darbību).
  • tur nav nekā, tad ierīce ir tukša. Sazinieties ar savu administratoru vai pats izveidojiet atslēgas un sertifikātu, veicot nākamo darbību.

5.1) Izveidojiet pārbaudes sertifikātu

Uzmanību! Aprakstītās atslēgu un sertifikātu izveides metodes ir piemērotas testēšanai un nav paredzētas izmantošanai kaujas režīmā. Lai to izdarītu, jums ir jāizmanto atslēgas un sertifikāti, ko izdevusi jūsu organizācijas uzticamā sertifikācijas iestāde vai akreditēta sertifikācijas iestāde.
PAM modulis ir paredzēts vietējo datoru aizsardzībai un ir paredzēts darbam mazās organizācijās. Tā kā lietotāju ir maz, administrators var uzraudzīt sertifikātu atsaukšanu un manuāli bloķēt kontus, kā arī sertifikātu derīguma termiņu. PAM modulis vēl nezina, kā pārbaudīt sertifikātus, izmantojot CRL, un izveidot uzticamības ķēdes.

Vienkāršākais veids (izmantojot pārlūkprogrammu)

Lai iegūtu pārbaudes sertifikātu, izmantojiet tīmekļa pakalpojums "Rutoken reģistrācijas centrs". Process prasīs ne vairāk kā 5 minūtes.

Geek's way (izmantojot konsoli un, iespējams, kompilatoru)

Pārbaudiet OpenSC versiju
$ opensc-tool --version
Ja versija ir mazāka par 0.20, atjauniniet vai izveidojiet pkcs11-rīka filiāle ar GOST-2012 atbalstu no mūsu GitHub (šī raksta publicēšanas laikā 0.20 versija vēl nebija izlaista) vai no galvenā OpenSC projekta galvenās filiāles ne vēlāk izdarīt 8cf1e6f

Ģenerējiet atslēgu pāri ar šādiem parametriem:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: objekta identifikators (CKA_ID) kā divciparu heksadecimālais rakstzīmju skaitļi no ASCII tabulas. Drukājamām rakstzīmēm izmantojiet tikai ASCII kodus, jo... ID būs jānodod OpenSSL kā virkne. Piemēram, ASCII kods “3132” atbilst virknei “12”. Ērtības labad varat izmantot tiešsaistes pakalpojums virkņu konvertēšanai ASCII kodos.

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

Tālāk mēs izveidosim sertifikātu. Tālāk tiks aprakstīti divi veidi: pirmais ir caur CA (mēs izmantosim testa CA), otrais ir pašparakstīts. Lai to izdarītu, vispirms ir jāinstalē un jākonfigurē OpenSSL versija 1.1 vai jaunāka versija darbam ar Rutoken, izmantojot īpašu rtengine moduli, izmantojot rokasgrāmatu OpenSSL instalēšana un konfigurēšana.
Piemēram: “--id 3132"OpenSSL jums jānorāda"pkcs11:id=12".

Varat izmantot testa CA pakalpojumus, kuru ir daudz, piemēram, šeit, šeit и šeit, šim nolūkam mēs izveidosim sertifikāta pieprasījumu

Vēl viena iespēja ir ļauties slinkumam un izveidot pašparakstu
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Sertifikāta augšupielāde ierīcē
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Reģistrēt sertifikātu sistēmā

Pārliecinieties, vai jūsu sertifikāts izskatās kā base64 fails:

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

Ja jūsu sertifikāts izskatās šādi:

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

tad jums ir jāpārveido sertifikāts no DER formāta uz PEM formātu (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Vēlreiz pārbaudām, vai tagad viss ir kārtībā.

Pievienojiet sertifikātu uzticamo sertifikātu sarakstam
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Pēdējā rindiņa aizsargā uzticamo sertifikātu sarakstu, lai citi lietotāji tos nejauši vai tīši mainītu. Tas neļauj kādam šeit pievienot savu sertifikātu un pieteikties jūsu vārdā.

7) Iestatiet autentifikāciju

Mūsu PAM moduļa iestatīšana ir pilnībā standarta un tiek veikta tieši tāpat kā citu moduļu iestatīšana. Izveidot failā /usr/share/pam-configs/rutoken-gost-pam satur pilnu moduļa nosaukumu, vai tas ir iespējots pēc noklusējuma, moduļa prioritāti un autentifikācijas parametrus.
Autentifikācijas parametri satur prasības veiksmīgai darbībai:

  • nepieciešams: šādiem moduļiem ir jāsniedz pozitīva atbilde. Ja moduļa izsaukuma rezultāts satur negatīvu atbildi, tiks parādīta autentifikācijas kļūda. Pieprasījums tiks atmests, bet pārējie moduļi tiks izsaukti.
  • Nepieciešamais: līdzīgs obligātajam, taču nekavējoties neizdodas autentificēt un ignorē citus moduļus.
  • Pietiekami: ja neviens no nepieciešamajiem vai pietiekamajiem moduļiem pirms šāda moduļa nesniedza negatīvu rezultātu, modulis atgriezīs pozitīvu atbildi. Pārējie moduļi tiks ignorēti.
  • neobligāti: ja kaudzē nav obligātu moduļu un neviens no pietiekošajiem moduļiem neatgriež pozitīvu rezultātu, tad vismaz vienam no izvēles moduļiem ir jāatgriež pozitīvs rezultāts.

Pilns faila saturs /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

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

saglabājiet failu un pēc tam izpildiet
$ sudo pam-auth-update
parādītajā logā ievietojiet tai zvaigznīti Rutoken PAM GOST un noklikšķiniet uz OK

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

8) Pārbaudiet iestatījumus

Lai saprastu, ka viss ir konfigurēts, bet tajā pašā laikā nezaudētu iespēju pieteikties sistēmā, ievadiet komandu
$ sudo login
Ievadiet savu lietotājvārdu. Viss ir pareizi konfigurēts, ja sistēmai ir nepieciešams ierīces PIN kods.

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

9) Konfigurējiet datoru, lai tas tiktu bloķēts, kad tiek izvilkts marķieris

Iekļauts iepakojumā libpam-pkcs11 iekļauta lietderība pkcs11_eventmgr, kas ļauj veikt dažādas darbības, kad notiek PKCS#11 notikumi.
Iestatījumiem pkcs11_eventmgr kalpo kā konfigurācijas fails: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Dažādiem Linux izplatījumiem komanda, kas izraisa konta bloķēšanu, kad tiek noņemta viedkarte vai marķieris, atšķiras. Cm. event card_remove.
Tālāk ir parādīts konfigurācijas faila piemērs:

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

Pēc tam pievienojiet lietojumprogrammu pkcs11_eventmgr palaišanai. Lai to izdarītu, rediģējiet .bash_profile failu:
$ nano /home/<имя_пользователя>/.bash_profile
Pievienojiet rindiņu pkcs11_eventmgr faila beigās un restartējiet.

Aprakstītās operētājsistēmas iestatīšanas darbības var izmantot kā instrukcijas jebkurā mūsdienu Linux izplatīšanā, ieskaitot vietējos.

Kā izmantot PAM moduļus vietējai autentifikācijai operētājsistēmā Linux, izmantojot GOST-2012 atslēgas Rutoken

Secinājums

Linux datori kļūst arvien populārāki Krievijas valdības aģentūrās, un uzticamas divu faktoru autentifikācijas iestatīšana šajā operētājsistēmā ne vienmēr ir vienkārša. Mēs ar prieku palīdzēsim jums atrisināt “paroles problēmu”, izmantojot šo rokasgrāmatu, un droši aizsargāsim piekļuvi datoram, netērējot tam daudz laika.

Avots: www.habr.com

Pievieno komentāru