Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

Oddiy parollar xavfsiz emas va murakkab parollarni eslab qolish mumkin emas. Shuning uchun ular tez-tez klaviatura yoki monitor ostidagi yopishqoq yozuvga tushadilar. Parollar "unutuvchi" foydalanuvchilarning ongida qolishi va himoyaning ishonchliligi yo'qolmasligi uchun ikki faktorli autentifikatsiya (2FA) mavjud.

Qurilmaga egalik qilish va uning PIN-kodini bilish kombinatsiyasi tufayli PIN-kodning o'zi sodda va eslab qolish osonroq bo'lishi mumkin. PIN-kod uzunligi yoki tasodifiyligidagi kamchiliklar jismoniy egalik talabi va PIN-kodning qo'pol kuchiga cheklovlar bilan qoplanadi.

Bundan tashqari, davlat idoralarida hamma narsa GOST bo'yicha ishlashini xohlashlari sodir bo'ladi. Linuxga kirish uchun ushbu 2FA varianti muhokama qilinadi. Men uzoqdan boshlayman.

PAM modullari

Pluggable autentifikatsiya modullari (PAM) standart API va ilovalarda turli autentifikatsiya mexanizmlarini amalga oshirishga ega modullardir.
PAM bilan ishlay oladigan barcha yordamchi dasturlar va ilovalar ularni tanlab oladi va ulardan foydalanuvchi autentifikatsiyasi uchun foydalanishi mumkin.
Amalda, u shunday ishlaydi: login buyrug'i PAMni chaqiradi, u konfiguratsiya faylida ko'rsatilgan modullar yordamida barcha kerakli tekshiruvlarni amalga oshiradi va natijani login buyrug'iga qaytaradi.

librtpam

Aktiv kompaniyasi tomonidan ishlab chiqilgan modul mahalliy kriptografiyaning eng so'nggi standartlariga muvofiq assimetrik kalitlardan foydalangan holda smart-kartalar yoki USB tokenlar yordamida foydalanuvchilarning ikki faktorli autentifikatsiyasini qo'shadi.

Keling, uning ishlash printsipini ko'rib chiqaylik:

  • Token foydalanuvchi sertifikati va uning shaxsiy kalitini saqlaydi;
  • Sertifikat foydalanuvchining uy katalogida ishonchli sifatida saqlanadi.

Autentifikatsiya jarayoni quyidagicha amalga oshiriladi:

  1. Rutoken foydalanuvchining shaxsiy sertifikatini qidiradi.
  2. Token PIN-kodi so‘raladi.
  3. Tasodifiy ma'lumotlar Rutoken chipida shaxsiy kalitda imzolanadi.
  4. Olingan imzo foydalanuvchi sertifikatidagi ochiq kalit yordamida tekshiriladi.
  5. Modul imzoni tekshirish natijasini chaqiruvchi ilovaga qaytaradi.

Siz GOST R 34.10-2012 kalitlari (uzunligi 256 yoki 512 bit) yoki eskirgan GOST R 34.10-2001 yordamida autentifikatsiya qilishingiz mumkin.

Kalitlarning xavfsizligi haqida tashvishlanishingiz shart emas - ular to'g'ridan-to'g'ri Rutoken-da yaratiladi va kriptografik operatsiyalar paytida uning xotirasini hech qachon tark etmaydi.

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

Rutoken EDS 2.0 NDV 4 ga muvofiq FSB va FSTEC tomonidan sertifikatlangan, shuning uchun uni maxfiy ma'lumotlarni qayta ishlaydigan axborot tizimlarida qo'llash mumkin.

Amaliy foydalanish

Deyarli har qanday zamonaviy Linux buni amalga oshiradi, masalan, biz xUbuntu 18.10 dan foydalanamiz.

1) Kerakli paketlarni o'rnating

sudo apt-get install libccid pcscd opensc
Agar siz ekran pardasi bilan ish stoli blokirovkasini qo'shmoqchi bo'lsangiz, paketni qo'shimcha ravishda o'rnating libpam-pkcs11.

2) GOST qo'llab-quvvatlashi bilan PAM modulini qo'shing

Kutubxona yuklanmoqda https://download.rutoken.ru/Rutoken/PAM/
librtpam.so.1.0.0 PAM jildining tarkibini tizim papkasiga nusxalash
/usr/lib/ yoki /usr/lib/x86_64-linux-gnu/yoki /usr/lib64

3) Paketni librtpkcs11ecp.so bilan o'rnating

DEB yoki RPM paketini havoladan yuklab oling va o'rnating: https://www.rutoken.ru/support/download/pkcs/

4) Rutoken EDS 2.0 tizimda ishlashini tekshiring

Terminalda biz bajaramiz
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Agar siz chiziqni ko'rsangiz Rutoken ECP <no label> - bu hammasi joyida degani.

5) Sertifikatni o'qing

Qurilmada sertifikat borligini tekshirish
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Agar qatordan keyin:
Using slot 0 with a present token (0x0)

  • ma'lumotlar ko'rsatiladi kalitlar va sertifikatlar haqida siz sertifikatni o'qib chiqishingiz va uni diskda saqlashingiz kerak. Buni amalga oshirish uchun quyidagi buyruqni bajaring, bu erda {id} o'rniga oldingi buyruqning chiqishida ko'rgan sertifikat identifikatorini almashtirishingiz kerak:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Agar cert.crt fayli yaratilgan bo'lsa, 6-bosqichga o'ting).
  • hech narsa mavjud emas, keyin qurilma bo'sh. Administratoringizga murojaat qiling yoki keyingi bosqichga amal qilib, kalit va sertifikatni oʻzingiz yarating.

5.1) Test sertifikatini yaratish

Diqqat! Kalitlar va sertifikatlarni yaratishning tavsiflangan usullari sinov uchun mos va jangovar rejimda foydalanish uchun mo'ljallanmagan. Buning uchun tashkilotingizning ishonchli sertifikatlashtirish organi yoki akkreditatsiyalangan sertifikatlashtirish organi tomonidan berilgan kalit va sertifikatlardan foydalanishingiz kerak.
PAM moduli mahalliy kompyuterlarni himoya qilish uchun mo'ljallangan va kichik tashkilotlarda ishlash uchun mo'ljallangan. Foydalanuvchilar kam bo'lganligi sababli, Administrator sertifikatlarning bekor qilinishini kuzatishi va hisoblarni qo'lda blokirovka qilish, shuningdek sertifikatlarning amal qilish muddatini kuzatishi mumkin. PAM moduli CRL yordamida sertifikatlarni qanday tekshirishni va ishonch zanjirlarini yaratishni hali bilmaydi.

Oson yo'l (brauzer orqali)

Sinov sertifikatini olish uchun foydalaning "Rutoken ro'yxatga olish markazi" veb-xizmati. Jarayon 5 daqiqadan ko'proq vaqtni oladi.

Geekning yo'li (konsol va ehtimol kompilyator orqali)

OpenSC versiyasini tekshiring
$ opensc-tool --version
Agar versiya 0.20 dan kam bo'lsa, yangilang yoki yarating GOST-11 qo'llab-quvvatlash bilan pkcs2012-asbob filiali bizning GitHub-dan (ushbu maqola nashr etilganda, 0.20 versiyasi hali chiqarilmagan) yoki asosiy OpenSC loyihasining asosiy filialidan kechiktirmasdan. 8cf1e6f bajaring

Quyidagi parametrlar bilan kalit juftligini yarating:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: ob'ekt identifikatori (CKA_ID) ASCII jadvalidagi ikki xonali olti burchakli belgilar raqamlari sifatida. Chop etiladigan belgilar uchun faqat ASCII kodlaridan foydalaning, chunki... identifikator OpenSSL ga string sifatida uzatilishi kerak. Masalan, "3132" ASCII kodi "12" qatoriga mos keladi. Qulaylik uchun siz foydalanishingiz mumkin satrlarni ASCII kodlariga aylantirish uchun onlayn xizmat.

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

Keyinchalik biz sertifikat yaratamiz. Quyida ikkita usul tasvirlanadi: birinchisi CA orqali (biz test CAlaridan foydalanamiz), ikkinchisi o'z-o'zidan imzolanadi. Buni amalga oshirish uchun siz avval Rutoken bilan ishlash uchun OpenSSL 1.1 yoki undan keyingi versiyasini qo'llanma yordamida maxsus rtengine moduli orqali o'rnatishingiz va sozlashingiz kerak. OpenSSL-ni o'rnatish va sozlash.
Masalan: '- uchun-id 3132' OpenSSL'da siz belgilashingiz kerak "pkcs11:id=12".

Siz test CA xizmatlaridan foydalanishingiz mumkin, ularning ko'plari, masalan, ko'raylik, ko'raylik и ko'raylik, buning uchun biz sertifikat uchun so'rov yaratamiz

Yana bir variant - dangasalikka berilish va o'z-o'zidan imzo qo'yishdir
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Sertifikat qurilmaga yuklanmoqda
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Sertifikatni tizimda ro'yxatdan o'tkazing

Sertifikatingiz base64 fayliga o'xshashligiga ishonch hosil qiling:

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

Agar sizning sertifikatingiz quyidagicha ko'rinsa:

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

keyin siz sertifikatni DER formatidan PEM formatiga (base64) aylantirishingiz kerak.

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Hozir hamma narsa tartibda ekanligini yana bir bor tekshiramiz.

Sertifikatni ishonchli sertifikatlar ro'yxatiga qo'shing
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Oxirgi qator ishonchli sertifikatlar ro'yxatini boshqa foydalanuvchilar tomonidan tasodifiy yoki ataylab o'zgartirishdan himoya qiladi. Bu kimningdir sertifikatini bu yerga qo‘shishiga va sizning nomingizdan tizimga kirishiga to‘sqinlik qiladi.

7) Autentifikatsiyani sozlang

PAM modulimizni o'rnatish butunlay standart va boshqa modullarni o'rnatish bilan bir xil tarzda amalga oshiriladi. Faylga yaratish /usr/share/pam-configs/rutoken-gost-pam modulning to'liq nomini, sukut bo'yicha yoqilganligini, modulning ustuvorligini va autentifikatsiya parametrlarini o'z ichiga oladi.
Autentifikatsiya parametrlari operatsiyaning muvaffaqiyati uchun talablarni o'z ichiga oladi:

  • zarur: Bunday modullar ijobiy javob qaytarishi kerak. Agar modul chaqiruvining natijasi salbiy javobni o'z ichiga olsa, bu autentifikatsiya xatosiga olib keladi. So'rov bekor qilinadi, ammo qolgan modullar chaqiriladi.
  • rekvizit: talab qilinganga o'xshaydi, lekin darhol autentifikatsiyadan o'tmaydi va boshqa modullarga e'tibor bermaydi.
  • etarli: Agar bunday moduldan oldin kerakli yoki etarli modullardan hech biri salbiy natija bermasa, modul ijobiy javob qaytaradi. Qolgan modullar e'tiborga olinmaydi.
  • ixtiyoriy: Agar stekda kerakli modullar bo'lmasa va yetarli modullarning hech biri ijobiy natija bermasa, ixtiyoriy modullardan kamida bittasi ijobiy natija berishi kerak.

To'liq fayl mazmuni /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

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

faylni saqlang, keyin bajaring
$ sudo pam-auth-update
paydo bo'lgan oynada uning yoniga yulduzcha qo'ying Rutoken PAM GOST va bosing OK

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

8) Sozlamalarni tekshiring

Hamma narsa sozlanganligini tushunish uchun, lekin shu bilan birga tizimga kirish qobiliyatini yo'qotmaslik uchun buyruqni kiriting.
$ sudo login
Foydalanuvchi nomingizni kiriting. Tizim qurilma PIN kodini talab qilsa, hamma narsa to'g'ri sozlangan.

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

9) Token chiqarilganda blokirovka qilinadigan kompyuterni sozlang

Paketga kiritilgan libpam-pkcs11 yordamchi dastur kiritilgan pkcs11_eventmgr, PKCS # 11 hodisalari sodir bo'lganda turli harakatlarni amalga oshirish imkonini beradi.
Sozlamalar uchun pkcs11_eventmgr konfiguratsiya fayli sifatida xizmat qiladi: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Turli xil Linux distributivlari uchun smart-karta yoki token olib tashlanganida hisobni blokirovka qilishga olib keladigan buyruq boshqacha bo'ladi. Sm. event card_remove.
Misol konfiguratsiya fayli quyida ko'rsatilgan:

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

Shundan so'ng dasturni qo'shing pkcs11_eventmgr ishga tushirish uchun. Buning uchun .bash_profile faylini tahrirlang:
$ nano /home/<имя_пользователя>/.bash_profile
Faylning oxiriga pkcs11_eventmgr qatorini qo'shing va qayta ishga tushiring.

Operatsion tizimni o'rnatish bo'yicha tavsiflangan qadamlar har qanday zamonaviy Linux tarqatishda, shu jumladan mahalliy distribyutorlarda ko'rsatmalar sifatida ishlatilishi mumkin.

Rutoken-da GOST-2012 kalitlari yordamida Linuxda mahalliy autentifikatsiya qilish uchun PAM modullaridan qanday foydalanish kerak

xulosa

Linux kompyuterlari Rossiya davlat idoralarida tobora ommalashib bormoqda va ushbu OTda ishonchli ikki faktorli autentifikatsiyani o'rnatish har doim ham oson emas. Ushbu qo'llanma yordamida "parol muammosi" ni hal qilishda yordam berishdan va shaxsiy kompyuteringizga ko'p vaqt sarflamasdan kirishni ishonchli himoya qilishdan mamnun bo'lamiz.

Manba: www.habr.com

a Izoh qo'shish