Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚, Π° слоТныС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ часто ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° стикСрС ΠΏΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ… β€œΠ·Π°Π±Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Ρ…β€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½Π΅ Ρ‚Π΅Ρ€ΡΠ»Π°ΡΡŒ – Π΅ΡΡ‚ΡŒ двухфакторная аутСнтификация (2ЀА).

Благодаря ΡΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΡŽ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² владСния устройством ΠΈ знания Π΅Π³ΠΎ PIN-ΠΊΠΎΠ΄Π°, сам PIN-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Π»Π΅Π³Ρ‡Π΅ для запоминания. НСдостатки Π² Π΄Π»ΠΈΠ½Π΅ ΠΈΠ»ΠΈ случайности PIN-ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ физичСского владСния ΠΈ ограничСниями Π½Π° ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ PIN-ΠΊΠΎΠ΄Π°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² госучрСТдСниях Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ хотят, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΏΠΎ Π“ΠžΠ‘Π’Ρƒ. О Ρ‚Π°ΠΊΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ 2ЀА для Π²Ρ…ΠΎΠ΄Π° Π² Линукс ΠΈ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ. Начну ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°.

PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ (Pluggable Authentication Modules, PAM) β€” это ΠΌΠΎΠ΄ΡƒΠ»ΠΈ со стандартным API ΠΈ рСализациями Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² прилоТСниях.
ВсС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ прилоТСния, ΡƒΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с PAM, ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ… ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ: ΠΊΠΎΠΌΠ°Π½Π΄Π° login обращаСтся ΠΊ PAM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ login.

librtpam

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ «Актив» ΠΌΠΎΠ΄ΡƒΠ»ΡŒ добавляСт Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ смарт-ΠΊΠ°Ρ€Ρ‚Π°ΠΌ ΠΈΠ»ΠΈ USB-Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ асиммСтричных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΏΠΎ послСдним стандартам отСчСствСнной ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

  • Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Π΅ хранится сСртификат ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π΅Π³ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡;
  • сСртификат сохранён Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΠ°ΠΊ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. На Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅ выполняСтся поиск Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ сСртификата ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  2. Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ PIN-ΠΊΠΎΠ΄ Ρ‚ΠΎΠΊΠ΅Π½Π°.
  3. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ подпись случайных Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ нСпосрСдствСнно Π² Ρ‡ΠΈΠΏΠ΅ Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π°.
  4. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ подпись провСряСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ· сСртификата ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  5. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи.

МоТно Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’ Π  34.10-2012 (Π΄Π»ΠΈΠ½Ρ‹ 256 ΠΈΠ»ΠΈ 512 Π±ΠΈΡ‚) ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΌΡƒ Π“ΠžΠ‘Π’ Π  34.10-2001.

Π—Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ – ΠΎΠ½ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ нСпосрСдствСнно Π² Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΊΠΈΠ΄Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π²ΠΎ врСмя криптографичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

Π ΡƒΡ‚ΠΎΠΊΠ΅Π½ ЭЦП 2.0 сСртифицирован Π€Π‘Π‘ ΠΈ ЀБВЭК ΠΏΠΎ НДВ 4, поэтому ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ использованиС

ΠŸΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ практичСски любой соврСмСнный Линукс, для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ xUbuntu 18.10.

1) УстанавливаСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

sudo apt-get install libccid pcscd opensc
Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола скринсСйвСром – Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ установитС ΠΏΠ°ΠΊΠ΅Ρ‚ libpam-pkcs11.

2) ДобавляСм PAM-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π“ΠžΠ‘Π’ΠΎΠ²

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с https://download.rutoken.ru/Rutoken/PAM/
ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ содСрТимоС ΠΏΠ°ΠΏΠΊΠΈ PAM librtpam.so.1.0.0 Π² ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ
/usr/lib/ ΠΈΠ»ΠΈ /usr/lib/x86_64-linux-gnu/ΠΈΠ»ΠΈ /usr/lib64

3) УстанавливаСм ΠΏΠ°ΠΊΠ΅Ρ‚ с librtpkcs11ecp.so

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΈ устанавливаСм DEB- ΠΈΠ»ΠΈ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎ ссылкС: https://www.rutoken.ru/support/download/pkcs/

4) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π ΡƒΡ‚ΠΎΠΊΠ΅Π½ ЭЦП 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 ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ довСрия.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ (Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€)

Для получСния тСстового сСртификата ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Π΅Π±-сСрвис Β«Π¦Π΅Π½Ρ‚Ρ€ рСгистрации Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Β». ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π·Π°ΠΉΠΌΡ‘Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 5 ΠΌΠΈΠ½ΡƒΡ‚.

ΠŸΡƒΡ‚ΡŒ Π³ΠΈΠΊΠ° (Ρ‡Π΅Ρ€Π΅Π· консоль ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, компилятор)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ OpenSC
$ opensc-tool --version
Если вСрсия мСньшС Ρ‡Π΅ΠΌ 0.20, Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ собСритС Π²Π΅Ρ‚ΠΊΡƒ pkcs11-tool с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π“ΠžΠ‘Π’-2012 ΠΈΠ· нашСго GitHub-Π° (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π° этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ€Π΅Π»ΠΈΠ· 0.20 Π΅Ρ‰Ρ‘ Π½Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½) ΠΈΠ»ΠΈ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ master основного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenSC Π½Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° 8cf1e6f

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:
--key-type: GOSTR3410-2012-512:А (Π“ΠžΠ‘Π’-2012 512 Π±ΠΈΡ‚ c парамсСтом А), GOSTR3410-2012-256:A (Π“ΠžΠ‘Π’-2012 256 Π±ΠΈΡ‚ с парамсСтом A)

--id: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (CKA_ID) Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΠ·Π½Π°Ρ‡Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² символов Π² hex ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ASCII. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ASCII-ΠΊΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… символов, Ρ‚.ΠΊ. id Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ OpenSSL Π² Π²ΠΈΠ΄Π΅ строки. НапримСр, ASCII-ΠΊΠΎΠ΄Π°ΠΌ β€œ3132” соотвСтствуСт строка Β«12Β». Для удобства, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-сСрвисом ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ строки Π² ASCII-ΠΊΠΎΠ΄Ρ‹.

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

Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сСртификат. НиТС Π±ΡƒΠ΄Π΅Ρ‚ описано Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· Π£Π¦ (ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстовыС Π£Π¦), Π²Ρ‚ΠΎΡ€ΠΎΠΉ – самоподписанный. Для этого сначала Π½Π°Π΄ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ OpenSSL вСрсии 1.1 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π ΡƒΡ‚ΠΎΠΊΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ rtengine ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ руководство Установка ΠΈ настройка OpenSSL.
НапримСр: для β€˜--id 3132’ Π² OpenSSL Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ «pkcs11:id=12«.

МоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ услугами тСстового Π£Π¦, ΠΊΠΎΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΡ‚, Π²ΠΎΡ‚ ΠΈ Π²ΠΎΡ‚, для этого создадим запрос Π½Π° сСртификат

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π°Ρ‚ΡŒΡΡ Π»Π΅Π½ΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ самоподписанный
$ 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 Ρ„Π°ΠΉΠ»:

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

Если ваш сСртификат выглядит Ρ‚Π°ΠΊ:

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСртификат ΠΈΠ· Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 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 содСрТащий ΠΏΠΎΠ»Π½ΠΎΠ΅ имя модуля, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π»ΠΈ ΠΎΠ½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ модуля ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ трСбования ΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

  • required (Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ): Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° модуля содСрТит ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, это ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Запрос Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½, Π½ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Π½Ρ‹.
  • requisite (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ): ΠΏΠΎΡ…ΠΎΠΆ Π½Π° required, Π½ΠΎ сразу ΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сбою Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.
  • sufficient (достаточный): Ссли ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π°ΠΊΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ required ΠΈΠ»ΠΈ sufficient Π½Π΅ Π²Π΅Ρ€Π½ΡƒΠ» ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚. ΠžΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.
  • optional (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ): Ссли Π² стСкС Π½Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ required ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ sufficient Π½Π΅ Π²Π΅Ρ€Π½ΡƒΠ» ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‚ΠΎ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ optional Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚.

ПолноС содСрТаниС Ρ„Π°ΠΉΠ»Π° /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

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

сохраняСм Ρ„Π°ΠΉΠ», послС этого выполняСм
$ sudo pam-auth-update
Π² появившСмся ΠΎΠΊΠ½Π΅ ставим Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΡƒ ΠΎΠΊΠΎΠ»ΠΎ Rutoken PAM GOST ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ OK

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

8) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ настройку

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ всё настроСно, Π½ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π° Π² систСму Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
$ sudo login
Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Всё настроСно ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ссли систСма ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ PIN-ΠΊΠΎΠ΄ устройства.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

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, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ отСчСствСнныС.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PAM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для локальной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Linux ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π“ΠžΠ‘Π’-2012 Π½Π° Π ΡƒΡ‚ΠΎΠΊΠ΅Π½Π΅

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ПК с Linux Π² российских госструктурах становятся всС популярнСС, Π° Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½ΡƒΡŽ Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² этой ОБ Π½Π΅ всСгда просто. Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹ этим руководством ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ β€œΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ паролСй” ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ доступ ΠΊ ПК, Π½Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚ΠΈΠ² Π½Π° это ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com