Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

Энгийн нууц үг нь аюулгүй биш бөгөөд нарийн төвөгтэй нууц үгийг санах боломжгүй юм. Тийм ч учраас тэд ихэвчлэн гар эсвэл дэлгэцэн дээрх наалдамхай тэмдэглэл дээр зогсдог. Нууц үг нь "мартамхай" хэрэглэгчдийн оюун санаанд үлдэж, хамгаалалтын найдвартай байдал алдагдахгүй байхын тулд хоёр хүчин зүйлийн баталгаажуулалт (2FA) байдаг.

Төхөөрөмжийг эзэмших, түүний PIN кодыг мэдэх хосолсон тул ПИН код нь өөрөө илүү хялбар бөгөөд санахад хялбар болно. ПИН кодын урт эсвэл санамсаргүй байдлын сул талуудыг физик эзэмших шаардлага болон PIN-ийн бүдүүлэг хүчний хязгаарлалтаар нөхдөг.

Үүнээс гадна төрийн байгууллагуудад бүх зүйл ГОСТ-ийн дагуу ажиллахыг хүсдэг нь тохиолддог. Линукс руу нэвтрэх энэхүү 2FA сонголтыг авч үзэх болно. Би холоос эхэлье.

PAM модулиуд

Pluggable Authentication Modules (PAM) нь стандарт API бүхий модулиуд бөгөөд програмууд дахь янз бүрийн баталгаажуулалтын механизмуудыг хэрэгжүүлдэг.
PAM-тай ажиллах боломжтой бүх хэрэгслүүд болон програмууд тэдгээрийг авч, хэрэглэгчийн баталгаажуулалтад ашиглах боломжтой.
Практикт энэ нь иймэрхүү ажилладаг: нэвтрэх тушаал нь PAM-г дууддаг бөгөөд энэ нь тохиргооны файлд заасан модулиудыг ашиглан шаардлагатай бүх шалгалтыг хийж, үр дүнг нэвтрэх команд руу буцаадаг.

librtpam

Актив компанийн боловсруулсан модуль нь дотоодын криптографийн хамгийн сүүлийн үеийн стандартын дагуу тэгш хэмт бус түлхүүр ашиглан ухаалаг карт эсвэл USB жетон ашиглан хэрэглэгчдийн хоёр хүчин зүйлийн баталгаажуулалтыг нэмж өгдөг.

Түүний үйл ажиллагааны зарчмыг авч үзье.

  • Токен нь хэрэглэгчийн гэрчилгээ болон түүний хувийн түлхүүрийг хадгалдаг;
  • Сертификат нь хэрэглэгчийн үндсэн лавлахад итгэмжлэгдсэн байдлаар хадгалагдана.

Баталгаажуулах үйл явц дараах байдлаар явагдана.

  1. Rutoken нь хэрэглэгчийн хувийн гэрчилгээг хайдаг.
  2. Токен ПИН-г хүссэн байна.
  3. Санамсаргүй өгөгдөл Rutoken чип дэх хувийн түлхүүр дээр шууд гарын үсэг зурдаг.
  4. Гарсан гарын үсгийг хэрэглэгчийн гэрчилгээний нийтийн түлхүүрээр баталгаажуулна.
  5. Модуль нь гарын үсгийн баталгаажуулалтын үр дүнг дуудаж буй програм руу буцаана.

Та GOST R 34.10-2012 түлхүүрүүд (урт 256 эсвэл 512 бит) эсвэл хуучирсан GOST R 34.10-2001 ашиглан баталгаажуулах боломжтой.

Түлхүүрүүдийн аюулгүй байдлын талаар санаа зовох хэрэггүй - тэдгээр нь Rutoken-д шууд үүсгэгддэг бөгөөд криптографийн ажиллагааны явцад санах ойг хэзээ ч орхидоггүй.

Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

Rutoken EDS 2.0 нь NDV 4-ийн дагуу FSB болон FSTEC-ээс баталгаажсан тул нууц мэдээллийг боловсруулдаг мэдээллийн системд ашиглах боломжтой.

Практик хэрэглээ

Бараг ямар ч орчин үеийн Линукс үүнийг хийх болно, жишээ нь бид xUbuntu 18.10 ашиглах болно.

1) Шаардлагатай багцуудыг суулгана уу

sudo apt-get install libccid pcscd opensc
Хэрэв та дэлгэц амраагчтай ширээний түгжээ нэмэхийг хүсвэл багцыг нэмж суулгана уу libpam-pkcs11.

2) ГОСТ дэмжлэгтэй PAM модулийг нэмнэ

Номын санг ачаалж байна https://download.rutoken.ru/Rutoken/PAM/
librtpam.so.1.0.0 PAM хавтасны агуулгыг системийн хавтас руу хуулна уу
/usr/lib/ буюу /usr/lib/x86_64-linux-gnu/буюу /usr/lib64

3) librtpkcs11ecp.so ашиглан багцыг суулгана уу

Холбоосоос DEB эсвэл RPM багцыг татаж аваад суулгана уу: https://www.rutoken.ru/support/download/pkcs/

4) Rutoken EDS 2.0 системд ажиллаж байгаа эсэхийг шалгана уу

Терминал дээр бид гүйцэтгэдэг
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Хэрэв та мөрийг харвал Rutoken ECP <no label> - бүх зүйл зүгээр гэсэн үг.

5) Гэрчилгээг уншина уу

Төхөөрөмж нь гэрчилгээтэй эсэхийг шалгаж байна
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Хэрэв мөрийн дараа:
Using slot 0 with a present token (0x0)

  • мэдээлэл гарч ирнэ Түлхүүр болон гэрчилгээний талаар та гэрчилгээг уншиж, дискэнд хадгалах хэрэгтэй. Үүнийг хийхийн тулд дараах тушаалыг ажиллуулж, {id}-ийн оронд өмнөх командын гаралт дээр харсан гэрчилгээний ID-г орлуулах шаардлагатай.
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Хэрэв cert.crt файл үүсгэсэн бол 6-р алхамыг үргэлжлүүлнэ үү).
  • юу ч алга, дараа нь төхөөрөмж хоосон байна. Дараачийн алхамыг дагаж админтайгаа холбоо барина уу эсвэл түлхүүр, гэрчилгээг өөрөө үүсгэнэ үү.

5.1) Туршилтын гэрчилгээ үүсгэх

Анхаар! Түлхүүр, гэрчилгээ үүсгэх тайлбарласан аргууд нь туршилтанд тохиромжтой бөгөөд байлдааны горимд ашиглахад зориулагдаагүй болно. Үүнийг хийхийн тулд та байгууллагынхаа итгэмжлэгдсэн баталгаажуулалтын байгууллага эсвэл итгэмжлэгдсэн баталгаажуулалтын байгууллагаас олгосон түлхүүр, гэрчилгээг ашиглах хэрэгтэй.
PAM модуль нь орон нутгийн компьютеруудыг хамгаалахад зориулагдсан бөгөөд жижиг байгууллагуудад ажиллахад зориулагдсан. Цөөн хэрэглэгчтэй тул администратор нь гэрчилгээг хүчингүй болгох, бүртгэлийг гараар хаах, гэрчилгээний хүчинтэй байх хугацааг хянах боломжтой. PAM модуль нь CRL ашиглан гэрчилгээг хэрхэн баталгаажуулах, итгэлцлийн гинжин хэлхээг бий болгох талаар хараахан мэдэхгүй байна.

Хялбар арга (хөтөчөөр дамжуулан)

Туршилтын гэрчилгээ авахын тулд ашиглана уу "Rutoken бүртгэлийн төв" вэб үйлчилгээ. Процесс нь 5 минутаас ихгүй хугацаа шаардагдана.

Геекийн арга (консол болон магадгүй хөрвүүлэгчээр дамжуулан)

OpenSC хувилбарыг шалгана уу
$ opensc-tool --version
Хэрэв хувилбар нь 0.20-аас бага бол шинэчлэх эсвэл бүтээх pkcs11-хэрэгслийн салбар ГОСТ-2012 дэмжлэгтэй Манай GitHub-аас (энэ нийтлэлийг нийтлэх үед 0.20 хувилбар хараахан гараагүй байгаа) эсвэл үндсэн OpenSC төслийн мастер салбараас 8cf1e6f хийх

Дараах параметр бүхий түлхүүрийн хослолыг үүсгэнэ үү.
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: объект танигч (CKA_ID) нь ASCII хүснэгтээс хоёр оронтой зургаан өнцөгт тэмдэгтийн тоо юм. Хэвлэх тэмдэгтүүдэд зөвхөн ASCII кодыг ашигла, учир нь... id-г OpenSSL-д мөр болгон дамжуулах шаардлагатай. Жишээлбэл, "3132" ASCII код нь "12" мөртэй тохирч байна. Тохиромжтой болгохын тулд та ашиглаж болно мөрүүдийг ASCII код руу хөрвүүлэх онлайн үйлчилгээ.

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

Дараа нь бид гэрчилгээ үүсгэх болно. Хоёр аргыг доор тайлбарлах болно: эхнийх нь CA-аар (бид туршилтын CA-г ашиглах болно), хоёр дахь нь өөрөө гарын үсэг зурдаг. Үүнийг хийхийн тулд та эхлээд гарын авлагыг ашиглан тусгай rtengine модулиар дамжуулан Rutoken-тэй ажиллахын тулд OpenSSL 1.1 эсвэл түүнээс хойшхи хувилбарыг суулгаж, тохируулах хэрэгтэй. OpenSSL-г суулгаж, тохируулж байна.
Жишээ нь: '--id 3132' OpenSSL дээр та зааж өгөх хэрэгтэй "pkcs11:id=12".

Та туршилтын CA-ийн үйлчилгээг ашиглаж болно, үүнээс олон байдаг, жишээлбэл, болгоогтун, болгоогтун и болгоогтун, үүний тулд бид гэрчилгээ авах хүсэлтийг үүсгэх болно

Өөр нэг сонголт бол залхуу байдалд бууж өгөх, өөрөө гарын үсэг зурах явдал юм
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Сертификатыг төхөөрөмжид байршуулж байна
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Сертификатыг системд бүртгүүлнэ үү

Таны гэрчилгээ base64 файл шиг харагдаж байгаа эсэхийг шалгаарай:

Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

Хэрэв таны гэрчилгээ дараах байдалтай байвал:

Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

Дараа нь та гэрчилгээг DER форматаас PEM формат руу хөрвүүлэх хэрэгтэй (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Одоо бүх зүйл эмх цэгцтэй байгаа эсэхийг бид дахин шалгана.

Итгэмжлэгдсэн гэрчилгээний жагсаалтад гэрчилгээг нэмнэ үү
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Сүүлийн мөр нь итгэмжлэгдсэн гэрчилгээнүүдийн жагсаалтыг бусад хэрэглэгчид санамсаргүйгээр эсвэл санаатайгаар өөрчлөхөөс хамгаална. Энэ нь хэн нэгэн энд гэрчилгээгээ нэмж, таны өмнөөс нэвтэрч орохоос сэргийлнэ.

7) Баталгаажуулалтыг тохируулах

Манай PAM модулийг тохируулах нь бүрэн стандарт бөгөөд бусад модулиудыг тохируулахтай яг ижил аргаар хийгддэг. Файл руу үүсгэх /usr/share/pam-configs/rutoken-gost-pam модулийн бүтэн нэр, энэ нь анхдагчаар идэвхжсэн эсэх, модулийн тэргүүлэх чиглэл, баталгаажуулалтын параметрүүдийг агуулсан.
Баталгаажуулалтын параметрүүд нь үйл ажиллагааг амжилттай явуулах шаардлагыг агуулна.

  • шаардлагатай: Ийм модулиуд эерэг хариу өгөх ёстой. Хэрэв модулийн дуудлагын үр дүнд сөрөг хариу байвал энэ нь баталгаажуулалтын алдааг бий болгоно. Хүсэлтийг цуцлах боловч үлдсэн модулиудыг дуудах болно.
  • шаардлагатай: Шаардлагатайтай төстэй боловч баталгаажуулалт нэн даруй амжилтгүй болж, бусад модулиудыг үл тоомсорлодог.
  • хангалттай: Хэрэв ийм модулиас өмнө шаардлагатай эсвэл хангалттай модулиудын аль нь ч сөрөг үр дүн өгөөгүй бол модуль эерэг хариу өгөх болно. Үлдсэн модулиудыг үл тоомсорлох болно.
  • нэмэлт: Хэрэв стек дээр шаардлагатай модулиуд байхгүй бөгөөд хангалттай модулиудын аль нь ч эерэг үр дүнг өгөхгүй бол нэмэлт модулиудын ядаж нэг нь эерэг үр дүнг өгөх ёстой.

Файлын бүрэн агуулга /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 дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

файлыг хадгалаад дараа нь ажиллуулна уу
$ sudo pam-auth-update
гарч ирэх цонхонд хажууд нь одоор тавь Rutoken PAM ГОСТ дээр дарна уу OK

Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

8) Тохиргоог шалгана уу

Бүх зүйл тохируулагдсан боловч системд нэвтрэх чадвараа алдахгүйн тулд командыг оруулна уу.
$ sudo login
Хэрэглэгчийн нэрээ оруулна уу. Хэрэв системд төхөөрөмжийн PIN код шаардлагатай бол бүх зүйл зөв тохируулагдсан байна.

Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

9) Токеныг задлах үед компьютерийг блоклохоор тохируулна уу

Багцанд багтсан болно libpam-pkcs11 хэрэгсэл багтсан pkcs11_eventmgr, PKCS # 11 үйл явдал тохиолдоход янз бүрийн үйлдэл хийх боломжийг танд олгоно.
Тохиргооны хувьд pkcs11_eventmgr тохиргооны файл болж үйлчилнэ: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Линуксийн өөр өөр түгээлтийн хувьд ухаалаг карт эсвэл жетон устгах үед бүртгэлийг түгжих команд өөр байна. см. event card_remove.
Жишээ тохиргооны файлыг доор харуулав.

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

Үүний дараа програмыг нэмнэ үү pkcs11_eventmgr эхлүүлэх. Үүнийг хийхийн тулд .bash_profile файлыг засварлана уу:
$ nano /home/<имя_пользователя>/.bash_profile
Файлын төгсгөлд pkcs11_eventmgr мөрийг нэмээд дахин ачаална уу.

Үйлдлийн системийг тохируулах талаар тайлбарласан алхмуудыг орчин үеийн Linux түгээлт, түүний дотор дотоодод ашиглах заавар болгон ашиглаж болно.

Rutoken дээрх GOST-2012 түлхүүрүүдийг ашиглан Linux-д локал нэвтрэлт танилтад PAM модулийг хэрхэн ашиглах вэ

дүгнэлт

Линукс компьютерууд Оросын төрийн байгууллагуудад улам бүр түгээмэл болж байгаа бөгөөд энэ үйлдлийн системд найдвартай хоёр хүчин зүйлийн баталгаажуулалтыг тохируулах нь тийм ч хялбар биш юм. Бид танд энэхүү гарын авлагын тусламжтайгаар "нууц үгийн асуудлыг" шийдвэрлэхэд туслахдаа баяртай байх болно, үүнд их цаг зарцуулахгүйгээр компьютерт нэвтрэх эрхийг найдвартай хамгаалах болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх