- Скачиваем актуальную версию КриптоПро CSP. Может потребоваться авторизация. Далее распаковываем архив и устанавливаем компоненты КриптоПро:
- Скачиваем и устанавливаем корневой сертификат УЦ.
- Скачиваем КриптоПро ЭЦП Browser plug-in.
- Перезапускаем браузер и заходим на тестовую страницу КриптоПро CSP.
- Pam_p11
- Rutoken s драйвер astra linux
- Блокировка компьютера при извлечении токена
- Для рутокен эцп
- Дополнительные источники информации
- Драйверы для *nix
- Занесение сертификата в список доверенных
- Извлечение сертификата из токена
- Конфигурация pam
- Модуль pam и его зависимости
- Настройка pam_p11
- Немного истории
- Очистка всех данных с рутокена
- Параметры
- Поддерживаемые модели
- Практическое использование
- Примеры использования
- Проверка
- Проверка работы рутокен в системе
- Разработка модуля аутентификации для pam
- Руководитель отдела продуктов и интеграций рутокен, актив
- Рутокен в astra linux
- Собственно разработка модуля
- Создание ключа и сертификата
- Способ №2
- Способ №3
- Структура pam
- Технический руководитель проектов департамента внедрения и сопровождения гк astra linux
- Установка
- Установка дополнительный пакетов
- Установка дополнительных пакетов
- Заключение
Скачиваем актуальную версию КриптоПро CSP. Может потребоваться авторизация. Далее распаковываем архив и устанавливаем компоненты КриптоПро:
/Downloads tar -xf linux-amd64_deb.tgz cd linux-amd64_deb sudo ./install_gui.sh #Установить необходимые компоненты, например, как на скриншоте
# Если необходима автоматическая установка, то можно использовать следующую команду
sudo ./install.sh cprocsp-rdr-pcsc cprocsp-rdr-rutoken cprocsp-rdr-cryptoki
# Ключ cprocsp-rdr-cryptoki указывается, если необходимо работать с библиотекой rtpkcs11ecp через КриптоПро CSP
Скачиваем и устанавливаем корневой сертификат УЦ.
В данном примере устанавливается корневой сертификат Тестового УЦ КриптоПро. Сертификаты, выданные данным УЦ, можно использовать только в тестовых целях.
Скачиваем КриптоПро ЭЦП Browser plug-in.
/Downloads tar -xf cades_linux_amd64.tar.gz cd cades_linux_amd64
# Устанавливаем пакеты sudo dpkg -i cprocsp-pki-cades_*_amd64.deb sudo dpkg -i cprocsp-pki-plugin_*_amd64.deb
# Копируем файл libnpcades.so в папку с плагинами (если используется Firefox) sudo cp /opt/cprocsp/lib/amd64/libnpcades.so /usr/lib/firefox-addons/plugins/libnpcades.so
Для Google Chrome устанавливаем расширение CryptoPro Extension for CAdES Browser из магазина Chrome.
Перезапускаем браузер и заходим на тестовую страницу КриптоПро CSP.
Источник
Pam_p11
Данный модуль позволяет осуществить двухфакторную аутентификацию пользователей по смарт-картам или USB-токенам с помощью ассиметричной криптографии. Рассмотрим общую схему его работы:
Аутентификация происходит следующим образом:
- На токене выполняется поиск сертификата пользователя
- Через PAM производится запрос PIN-кода к токену
- Если аутентификация на токене прошла успешно, то производится подпись случайных данных с помощью закрытого ключа с токена. Сама подпись выполняется аппаратно.
- Полученная ЭЦП проверяется с помощью сертификата пользователя
Если в итоге проверка подписи осуществлена успешно, то модуль говорит наружу, что все хорошо.
В данной схеме используются ключевая пара RSA длины 2048 бит, сгенерированная аппаратно на токене.
Rutoken s драйвер astra linux
Для обеспечения работы с электронными ключами Rutoken в ОС семейства Linux необходимо установить:
1. КриптоПро CSP
2. Пакеты из состава дистрибутива КриптоПро CSP : cprocsp-rdr-pcsc, cprocsp-rdr-rutoken
Блокировка компьютера при извлечении токена
В состав пакета libpam-pkcs11 входит утилита pkcs11_eventmgr, которая позволяет выполнять различные действия при возникновении событий PKCS#11.
Для настройки pkcs11_eventmgr служит файл конфигурации — /etc/pam_pkcs11/pkcs11_eventmgr.conf
Пример файла конфигурации представлен ниже:
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 ;
# Карта извлечена event card_remove < on_error = ignore;
# Вызываем функцию блокировки экрана action = «fly-wmfunc FLYWM_LOCK» ; >
# Карта долгое время извлечена event expire_time < # Оставляем значения по умолчанию (ничего не происходит) on_error = ignore;
После этого добавьте приложение pkcs11_eventmgr в автозагрузку и перезагрузитесь.
Для рутокен эцп
При установке новой версии opensc потребовалось удовлетворить зависимости пакетов. Для этого были взяты следующие пакеты из репозитория Debian squeeze:
Дополнительные источники информации
При возникновении вопроса, на который вам не удалось найти ответ в этой инструкции, рекомендуем обратиться к следующим дополнительным источникам информации:
Веб-сайт содержит большой объем справочной информации об устройствах Рутокен.
Драйверы для *nix
С инструкциями и техническими рекомендациями по использованию продуктов и программного обеспечения Рутокен можно ознакомиться в разделе Документация .
Для работы электронных идентификаторов Рутокен в deb-based системе должны быть установлены: библиотека libccid не ниже 1.4.2, пакеты pcscd и libpcsclite1.
Для работы в RPM-based системе должны быть установлены: пакеты ccid, pcscd и pcsc-lite.
Драйверы для Рутокен ЭЦП в современных операционных системах GNULinux не требуются (версия libccid не ниже 1.4.2). Пользователям стабильных или устаревших дистрибутивов может потребоваться внести изменения в конфигурационный файл.
Драйверы для Рутокен Lite в современных операционных системах GNULinux не требуются (версия libccid не ниже 1.4.2). Пользователям стабильных или устаревших дистрибутивов может потребоваться внести изменения в конфигурационный файл.
Необходимо загрузить установочный скрипт, запустить его и следовать указаниям установщика. После завершения процесса установки необходимо подключить Рутокен S в свободный USB-порт.
Занесение сертификата в список доверенных
На данном этапе нам осталось только прочитать с токена сертификат с нужным ID и записать его в файл доверенных сертификатов:
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ pkcs15-tool -r <certificate_id> > ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Извлечение сертификата из токена
вместо нужно подставить ID который вы увидите в выводе команды
Если после строчки
нет ничего, значит устройство пустое. Следует обратиться к администратору или создать ключи и сертификат самостоятельно.
Конфигурация pam
Если приложению требуется аутентификация, то оно должно создать файл со своим именем в каталоге /etc/pam.d, в котором должны быть указаны модули, с помощью которых производится аутентификация и прочие действия. Посмотрим, что лежит в каталоге /etc/pam.d в Ubuntu 11.10
Модуль pam и его зависимости
Для осуществления аутентификации по токену были установлены пакеты:
Настройка pam_p11
К счастью, нам не почти не придется править конфиги руками. Достаточно только создать файл /usr/share/pam-configs/p11 со следующим содержанием:
Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient pam_p11_opensc.so /usr/lib/opensc-pkcs11.so
Интерес предоставляет последняя строчка конфига, в которой мы указываем тип модуля, имя библиотеки и параметры, передаваемые модулю. Наш модуль принимает в качестве параметра путь к библиотеке PKCS#11.
Теперь нам осталось только выполнить команду
$ pam-auth-update
В появившемся диалоге необходимо выбрать pam_p11. Если вы хотите отключить аутентификацию по паролям, то можно отключить Unix authentication. Поскольку в конфигурационном файле профиля было указано, что модуль будет «sufficient», то при получении от нашего модуля ответа «PAM_SUCCESS» весь процесс аутентификации будет считаться успешным.
Немного истории
В старые добрые времена если приложению в Linux требовалось запросить аутентификацию пользователя, то ему приходилось обращаться к файлам /etc/passwd и /etc/shadow. Такой подход был прост как пробка, но при этом разработчикам приходилось думать не только о работе с файлами, но и о вопросах безопасности.
Решением тому стал проект Linux-PAM. К слову сказать, сама архитектура PAM была впервые предложена компанией Sun в октябре 1995 года, а в августе 1996 года инфраструктура Linux-PAM была включена в дистрибутив Red Hat Linux. В настоящее время существуют три основных реализации PAM:
- Linux-PAM – основная реализация архитектуры PAM, рассматривается нами в этой статье
- OpenPAM – альтернативная реализация PAM, используемая в BSD-системах и Mac OS X
- Java PAM – Java-обертка над Linux-PAM
Очистка всех данных с рутокена
Инициализация утилитой pkcs11-tool:
$ pkcs11-tool —slot 0 —init-token —so-pin ‘87654321’ —label ‘Название_Вашего_токена’ —module /usr/lib/librtpkcs11ecp.so
Также для очистки всех данных воспользуйтесь командами:
Параметры
Утилита запускается из командной строки и имеет следующие параметры:
Поддерживаемые модели
- Рутокен Lite
- Рутокен Lite SC
- Рутокен ЭЦП
- Рутокен ЭЦП 2.0
- Рутокен ЭЦП SC
- Рутокен ЭЦП PKI
- Рутокен ЭЦП Flash
- Рутокен ЭЦП 2.0 Flash/touch
- Рутокен PINPad
Ссылки на загрузку:
Практическое использование
В качестве подопытного дистрибутива можно было бы взять свежую Ubuntu, но учитывая то, что в 12.04 все слишком хорошо работает, мы решили с пользой для общего дела настроить аутентификацию в релизе «Смоленск» операционной системы Astra Linux Special Edition по USB-токенам Рутокен ЭЦП и Рутокен S.
Примеры использования
Отформатировать один токен с параметрами по умолчанию (для поточного выполнения убрать флаг -q)
Отформатировать токен, задав имя токена RutokenLabel , PIN-код пользователя 123456789 и PIN-код администратора 987654321 .
Проверка
Чтобы проверить наличие сертификатов и ключевых пар на Рутокене введите команду:
В результате в окне терминала отобразится информация обо всех сертификатах и ключевых парах, хранящихся на Рутокене:
Если после строчки выводится информация о ключах и сертификатах, то необходимо считать сертификат:
Проверка работы рутокен в системе
Для проверки работы Рутокена:Подключите устройство к компьютеру.
Разработка модуля аутентификации для pam
В этом разделе мы разберем исходный код модуля pam_p11 и рассмотрим основные моменты, которым стоит уделить внимание при написании своего собственного модуля.
Руководитель отдела продуктов и интеграций рутокен, актив
Компания «Актив» постоянно сотрудничает с производителями российских операционных платформ, интегрируя средства защиты информации Рутокен в самые актуальные и востребованные версии этих продуктов еще до их выхода на рынок. Так было и с ОС Astra Linux 1.7. В результате пользователи с первых дней работы с обновленной операционной системой получили возможность без каких-либо ограничений применять Рутокен в качестве защищенного носителя ключевой информации и устройства для аутентификации.
Рутокен в astra linux
Рутокен S– модель для надежного хранения контейнеров ГОСТ-криптопровайдеров: КриптоПро, VipNet и других. Сертифицированы во ФСТЭК.
Рутокен Lite– модель для надежного хранения контейнеров ГОСТ-криптопровайдеров: КриптоПро, VipNet и других. Сертифицированы во ФСТЭК. Обладает интерфейсом CCID и не требует установки дополнительных драйверов
Рутокен ЭЦП 2.0– имеет встроенный криптопровайдер и высокую производительность. Формирует квалифицированную электронную подпись (КЭП) при помощи сертифицированной реализации российских криптографических алгоритмов непосредственно в самом чипе устройстве, что повышает безопасность использования ЭП — ключ подписи никогда не покидает токен, его невозможно использовать или скопировать без ведома владельца. Работает с алгоритмами ГОСТ 2022. Сертифицированы в ФСБ и ФСТЭК.
Широко используется в системе ЕГАИС с 2022 года. В активном пользовании более полумиллиона устройств с квалифицированной электронной подписью.
Тестирование электронной подписи в Astra Linux:Кроме двухфакторной аутентификации, можно проверять также подписание документов.
Для Рутокен Lite/S подписание проверить через:
1) КриптоАРМ eSign или КриптоАРМ ГОСТ 2) Утилиту csptestf из состава КриптоПро CSP. Подробно в разделе на Подпись средствами «КриптоПро CSP»
Для Рутокен ЭЦП 2.0 подписание можно проверить несколькими способами:
1) КриптоАРМ eSign или КриптоАРМ ГОСТ 2) Тестовый центр регистрации Рутокен Рутокен Плагин 3) OpenSSL Рутокен engine 4) Утилиту csptestf из состава КриптоПро CSP. Подробно в разделе на Подпись средствами «КриптоПро CSP»
Рутокен для Байкала и Эльбруса
Рутокен Lite и Рутокен ЭЦП одинаково хорошо работают на всех платформах, где есть USB-интерфейс.Сейчас для Эльбруса и Байкала Рутокены подписывают через программы:1) Тестовый центр регистрации Рутокен Рутокен Плагин 2) Утилита из КриптоПро CSP 5.0
Собственно разработка модуля
В зависимости от функционала модуля, PAM может требовать от него наличия следующих функций:
Для того чтобы модуль мог выполнять аутентификацию, нам необходимо реализовать в нем функции pam_sm_authenticate и pam_sm_setcred. В остальных функциях достаточно просто добавить заглушки, чтобы наш модуль нельзя было использовать для других операций.
Для работы с PAM необходимо определить специальные константы, а только затем подключить заголовочные файлы:
#define PAM_SM_AUTH
#define PAM_SM_ACCOUNT
#define PAM_SM_SESSION
#define PAM_SM_PASSWORD
#include <security/pam_appl.h>
#include <security/pam_modules.h>
Эти константы необходимы, чтобы PAM знал, что наш модуль может выполнять все функции, описанные выше. Конечно, если мы реализуем только аутентификацию, то остальные функции можно отбросить, но разработчики pam_p11 решили, что надежнее будет поставить заглушки вместо неиспользуемых функций.
Приступим к написанию функции pam_sm_authenticate. Она имеет следующую сигнатуру:
PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv);
Из важных параметров тут стоит отметить:
Функция должна вернуть одно из следующих значений:
Внутри нашего модуля мы будем пользоваться библиотекой libp11 для работы с API PKCS#11 и OpenSSL для работы с сертификатами.
Первым делом определим переменные, которые нам потребуются:
Создание ключа и сертификата
Для начала создаем ключевую пару RSA длины 2048 бит c ID «45» (id стоит запомнить, он понадобится при создании сертификата).
$ pkcs15-init --generate-key rsa/2048 --auth-id 02 --id 45
<вводим PIN пользователя>
Проверим сгенерированный ключ:
$ pkcs15-tool --list-keys
Using reader with a card: Aktiv Rutoken ECP 00 00
Private RSA Key [Private Key]
Object Flags : [0x3], private, modifiable
Usage : [0x4], sign Access Flags : [0x1D], sensitive, alwaysSensitive, neverExtract, local
ModLength : 2048
Key ref : 1 (0x1)
Native : yes
Path : 3f001000100060020001
Auth ID : 02
ID : 45
Теперь с помощью OpenSSL создадим самоподписанный сертификат. Запускаем openssl и подгружаем модуль поддержки pkcs11:
$ openssl
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:opensc-pkcs11.so
(dynamic) Dynamic engine loading support
[Success]: SO_PATH:/usr/lib/engines/engine_pkcs11.so
[Success]: ID:pkcs11
[Success]: LIST_ADD:1
[Success]: LOAD
Loaded: (pkcs11) pkcs11 engine
Создаем сертификат в PEM-формате:
OpenSSL> req -engine pkcs11 -new -key 1:45 -keyform engine -x509 -out cert.pem –text
В последней команде 1:45 — это пара :. Таким образом, мы создали сертификат на базе ключевой пары, хранящейся на токене. При этом в текущем каталоге должен создаться файл сертификата с именем cert.pem.
Теперь сохраним сертификат на токен:
$ pkcs15-init --store-certificate cert.pem --auth-id 02 --id 45 --format pem
<Вводим PIN пользователя>
Способ №2
путь до библиотеки librtpkcs11ecp.so может различаться
Для того чтобы определить путь до библиотеки librtpkcs11ecp.so введите команду:
Способ №3
графическая утилита XCA:
Структура pam
Для начала разберемся, что же такое «Модуль PAM». Модули представляют собой библиотеки, в которых прописаны обработчики операций, которые может направлять к ним сам PAM. Для примера, стандартный модуль pam_unix умеет следующее:
Ниже представлена общая схема работы PAM
Сильно упрощенная схема аутентификации в приложении, использующем PAM, выглядит следующим образом:
- Приложение инициализирует библиотеку PAM (libpam.so)
- PAM в соответствии с конфигурационным файлом для приложения обращается к требуемым модулям
- Модули выполняют возложенные на них действия
- Приложению возвращается результат операции
Конечно, PAM позволяет проводить не только аутентификацию. Функции PAM классифицируются по типу модулей. В скобках указаны обозначения модулей в конфигурационных файлах:
Сейчас нам интересна только аутентификация, поэтому рассмотрение остальных функций оставим любопытству читателя.
Технический руководитель проектов департамента внедрения и сопровождения гк astra linux
Множество российских организаций давно использует ОС Astra Linux и устройства линейки Рутокен, и все они периодически обновляют свои ИТ-системы. Подтверждение корректной работы актуальных смарт-карт и USB-токенов в среде нашей ОС — это гарантия того, что клиентам при переходе на более новые версии тех или иных решений не придется беспокоиться об их совместимости с ОС. Удобство для заказчиков и экономия их времени — это одни из ключевых приоритетов нашей компании, и мы в рамках программы Ready for Astra Linux активно тестируем работу технологических стеков и официально сертифицируем те продукты, в работоспособности которых под Astra Linux уверены.
Установка
Для выполнения действий данной инструкции необходимо установить следующее программное обеспечение:
- библиотека libccid, librtpkcs11ecp.so;
- пакеты libpcsclite1 и pcscd;
- opensc;
Для установки в терминале введите команду:
Установка дополнительный пакетов
Пуск — Настройки — Менеджер пакетов
через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты:
- libccid
- pcscd
- libpam-p11
- libpam-pkcs11
- libp11-2
- libengine-pkcs11-openssl
- opensc
Либо воспользовавшись терминалом FLY:
Регистрация сертификата в системе
Конвертируем сертификат в текстовый формат
где cert.pem — Ваш сертификат из токена в текстовом формате
Теперь нам необходимо прочитать с токена сертификат с нужным ID и записать его в файл доверенных сертификатов: Добавляем сертификат в список доверенных сертификатов:
Для привязки токена к определенному пользователю необходимо указать его домашнюю директорию, например таким образом:
Важно помнить, что при регистрации нескольких токенов на одном компьютере, необходимо указывать пользователям раличные id.
Установка дополнительных пакетов
Для начала пришлось установить некоторые пакеты. Для работы Рутокен S необходима старая версия OpenSC: 0.11.13, а для работы Рутокен ЭЦП – более новая: 0.12.2. В качестве middleware для обоих токенов используется OpenCT версии 0.6.20.
В итоге были поставлены пакеты, переданные разработчиками дистрибутива:
Заключение
В статье я постарался рассмотреть механизм работы PAM, особо не углубляясь в специфику работы его внутренних функций. В связи с этим остались без особого внимания такие вещи, как механизм диалогов PAM, функции для работы со структурами PAM и некоторые тонкости настройки всей системы. Сами по себе они претендуют на отдельную статью, поэтому, если будет интерес, то могу их описать в новой статье.
Описанные шаги по настройке системы аутентификации можно использовать как инструкцию в любом современном дистрибутиве Linux.