Подробный гайд по настройке входа в РЕД ОС 7.3 по смарт-карте Рутокен ЭЦП

Подробный гайд по настройке входа в РЕД ОС 7.3 по смарт-карте Рутокен ЭЦП. Описаны генерация ключей ГОСТ Р 34.10-2012, конфигурация PAM и автоблокировка.

2026.10.16                  


Подробный гайд по настройке входа в РЕД ОС 7.3 по смарт-карте Рутокен ЭЦППодробный гайд по настройке входа в РЕД ОС 7.3 по смарт-карте Рутокен ЭЦП Ниже представлен подробный пошаговый гайд по настройке аутентификации (входа в систему) в операционной системе РЕД ОС 7.3 с использованием смарт-карты Рутокен ЭЦП и криптографических алгоритмов ГОСТ Р 34.10-2012.


В отличие от стандартных сценариев с ключами RSA, для работы с ГОСТ-алгоритмами используется специальный движок rtengine для OpenSSL и проприетарный PAM-модуль от производителя.


Важное предупреждение

Перед внесением изменений в системные конфигурационные файлы (особенно /etc/pam.d/ и /etc/ssl/) настоятельно рекомендуется сделать их резервные копии. Ошибка в PAM-конфигурации может привести к невозможности входа в систему.




Шаг 1. Установка базовых пакетов и библиотек

1. Обновите систему и установите необходимые пакеты из репозиториев РЕД ОС:

   sudo yum update
   sudo yum install ccid opensc pam_pkcs11 p11-kit openssl

Убедитесь, что установлен openssl версии 1.1 или выше (openssl version).

2. Скачайте с официального сайта Рутокен (раздел "Загрузки" -> "SDK" / "Linux") следующие компоненты:

  • PAM-модуль для Linux (librtpam.so.1.0.0).
  • Библиотеку PKCS#11 для Рутокен ЭЦП (librtpkcs11ecp в формате .rpm).
  • Комплект разработчика (Rutoken SDK) в формате .zip (нужен для rtengine).

3. Установите PAM-модуль:

   sudo cp librtpam.so.1.0.0 /usr/lib64/
   sudo chmod 644 /usr/lib64/librtpam.so.1.0.0

4. Установите PKCS#11 библиотеку:

   sudo rpm -i librtpkcs11ecp_X.X.X.X-X_x86_64.rpm

Проверьте, что токен определяется (вставьте Рутокен в USB-порт):

   pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T

Шаг 2. Настройка OpenSSL для работы с ГОСТ (rtengine)

Для генерации ГОСТ-сертификатов OpenSSL должен знать, как работать с Рутокеном.

1. Распакуйте скачанный архив rutoken-sdk-latest.zip и скопируйте движок rtengine в системную директорию:

   sudo cp /path/to/sdk/openssl/bin/1.1/rtengine-1.1/linux_glibc-x86_64/lib/librtengine.so /usr/lib64/engines-1.1/librtengine.so
   sudo mv /usr/lib64/engines-1.1/librtengine.so /usr/lib64/engines-1.1/rtengine.so

2. Отредактируйте конфигурацию OpenSSL:

   sudo nano /etc/ssl/openssl.cnf

В самом начале файла найдите или добавьте строку:

   openssl_conf = openssl_def

В самый конец файла добавьте следующие секции:

   [ openssl_def ]
   engines = engine_section

   [ engine_section ]
   rtengine = gost_section

   [ gost_section ]
   engine_id = rtengine
   dynamic_path = /usr/lib64/engines-1.1/rtengine.so
   pkcs11_path = /usr/lib64/librtpkcs11ecp.so
   default_algorithms = CIPHERS, DIGEST, PKEY, RAND

3. Разрешите использование ГОСТ-алгоритмов в системных политиках шифрования:

   sudo nano /etc/crypto-policies/back-ends/openssl.config

Замените содержимое файла на следующую строку:

   @SECLEVEL=1:aGOST:aGOST01:kGOST:GOST94:GOST89MAC:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8

4. Экспортируйте переменную окружения для текущей сессии терминала (чтобы OpenSSL подхватил конфиг при генерации):

   export OPENSSL_CONF=/etc/ssl/openssl.cnf

Шаг 3. Генерация ключевой пары на Рутокене

При генерации ключа через pkcs11-tool необходимо задать --id в виде hex-кодов ASCII. Например, кодам 3132 соответствует строка "12". Именно эту строку (12) мы будем передавать в OpenSSL.

Сгенерируйте ключевую пару ГОСТ Р 34.10-2012 (512 бит, параметр А):

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

(Команда запросит PIN-код токена. По умолчанию для Рутокен ЭЦП это 12345678).


Шаг 4. Создание самоподписанного сертификата

Создайте сертификат с помощью rtengine, указав ID ключа в формате OpenSSL (pkcs11:id=12):

openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer -md_gost12_512

Запишите полученный сертификат обратно на Рутокен:

pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.cer --id 3132

Шаг 5. Регистрация сертификата в системе



Чтобы PAM-модуль мог сопоставить сертификат с локальным пользователем, его нужно экспортировать и добавить в доверенные.

1. Скачайте сертификат с токена (ID = 3132):

   pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -r -y cert --id 3132 --output-file cert.crt

2. Конвертируйте его в PEM-формат:

   openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM

3. Добавьте сертификат в список авторизованных для вашего пользователя:

   mkdir ~/.eid
   chmod 0755 ~/.eid
   cat cert.pem >> ~/.eid/authorized_certificates
   chmod 0644 ~/.eid/authorized_certificates

Шаг 6. Настройка PAM для входа по смарт-карте

Откройте конфигурационные файлы PAM:

sudo nano /etc/pam.d/system-auth
sudo nano /etc/pam.d/password-auth

В самое начало обоих файлов добавьте следующую строку:

auth sufficient /usr/lib64/librtpam.so.1.0.0 /usr/lib64/librtpkcs11ecp.so

Проверка:

Выполните команду su <ваш_username>. Если всё настроено верно, система запросит не пароль пользователя, а PIN-код Рутокена. После успешного ввода PIN-кода вы войдете в сессию.


Шаг 7. Настройка автоблокировки при извлечении токена (Опционально)

Для повышения безопасности можно настроить автоматическую блокировку экрана, если Рутокен был физически извлечен из USB-порта.

1. Узнайте вашу графическую оболочку:

   echo $XDG_CURRENT_DESKTOP

В зависимости от оболочки команда блокировки будет разной (MATE: mate-screensaver-command --lock, Cinnamon: cinnamon-screensaver-command --lock, GNOME: xdg-screensaver lock).

2. Отредактируйте конфиг менеджера событий (замените команду в блоке card_remove на нужную для вашей оболочки):

   sudo nano /etc/pam_pkcs11/pkcs11_eventmgr.conf
   pkcs11_eventmgr
   {
       daemon = true;
       debug = false;
       polling_time = 1;
       expire_time = 0;
       pkcs11_module = /usr/lib64/librtpkcs11ecp.so;

       event card_insert {
           on_error = ignore ;
           action = "/bin/false";
       }

       event card_remove {
           on_error = ignore;
           action = "mate-screensaver-command --lock"; # Укажите вашу команду
       }

       event expire_time {
           on_error = ignore;
           action = "/bin/false";
       }
   }

3. Добавьте pkcs11_eventmgr в автозагрузку пользователя:

   mkdir -p ~/.config/autostart
   nano ~/.config/autostart/smartcard-screensaver.desktop

Вставьте содержимое:

   [Desktop Entry]
   Type=Application
   Name=Smart Card Screensaver
   Comment=Application to lock screen on smart card removal.
   Exec=/usr/bin/pkcs11_eventmgr daemon
  1. Перезагрузите компьютер для применения всех настроек.

Если в процессе настройки у вас возникнут ошибки (например, Engine not found или Token not recognized), убедитесь, что служба pcscd запущена (sudo systemctl status pcscd) и библиотека librtpkcs11ecp.so корректно определилась на Шаге 1. Удачи в настройке!


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта