Локальная аутентификация при помощи Рутокен ЭЦП в операционной системе ROSA Enterprise Linux Server — различия между версиями
(→pam_pkcs11.conf) |
(→subject_mapping) |
||
Строка 118: | Строка 118: | ||
[[File:Rutoken RELS8.png|Rutoken RELS8.png]] | [[File:Rutoken RELS8.png|Rutoken RELS8.png]] | ||
+ | |||
+ | Копируем вывод предыдущей команды в файл ''/etc/pam_pkcs11/subject_mapping'' и указываем, какому пользователю принадлежит сертификат. | ||
+ | |||
+ | Строка конфигурации имеет вид: | ||
+ | Вывод команды ''pkcs11_inspect>'' -> <Имя пользователя> | ||
+ | [[File:Rutoken RELS9.png|Rutoken RELS9.png]] | ||
+ | |||
+ | === Проверка аутентификации через консоль === | ||
+ | Для проверки аутентификации можно поступить следующим образом: | ||
+ | * Открыть новое окно или вкладку консоли | ||
+ | * Выполнить команду '''su <имя пользователя>''' (имя пользователя, указанное в subject_mapping) | ||
+ | Вывод должен получиться примерно как на картинках ниже | ||
+ | |||
+ | [[File:Rutoken RELS10.png|Rutoken RELS10.png]] | ||
+ | |||
+ | === Настройка блокировки экрана === | ||
+ | После проверки работы аутентификации через консоль можно убрать режим отладки, для этого в файле ''/etc/pam.d/sysauth'' в добавленной строке надо убрать слово "debug", а в файле ''/etc/pam_pkcs11/pam_pkcs11.conf'' - поставить на против "debug" "false" вместо "true". | ||
+ | Для настройки блокировки экрана необходимо отредактировать файл pkcs11_eventmgr (требуются права администратора) : | ||
+ | '''su''' | ||
+ | '''cd /etc/pam_pkcs11/''' | ||
+ | '''mv pkcs11_eventmgr.conf pkcs11_eventmgr.conf.default''' (резервное копирование) | ||
+ | '''nano pkcs11_eventmgr.conf''' | ||
+ | |||
+ | После редактирования конфигурационный файл должен выглядеть следующим образом: | ||
+ | |||
+ | ''pkcs11_eventmgr {'' | ||
+ | ''# Run in background? Implies debug=false if true'' | ||
+ | ''daemon = true;'' | ||
+ | ''# show debug messages?'' | ||
+ | ''debug = false;'' | ||
+ | ''# polling time in seconds'' | ||
+ | ''polling_time = 1;'' | ||
+ | ''# expire time in seconds'' | ||
+ | ''# default = 0 ( no expire )'' | ||
+ | ''expire_time = 0;'' | ||
+ | ''# pkcs11 module to use'' | ||
+ | ''pkcs11_module = /usr/lib64/librtpkcs11ecp.so;'' | ||
+ | ''#'' | ||
+ | ''# list of events and actions'' | ||
+ | ''# Card inserted'' | ||
+ | ''event card_insert {'' | ||
+ | ''# what to do if an action fail?'' | ||
+ | ''# ignore : continue to next action'' | ||
+ | ''# return : end action sequence'' | ||
+ | ''# quit : end program'' | ||
+ | ''on_error = ignore ;'' | ||
+ | ''}'' | ||
+ | ''# Card has been removed'' | ||
+ | ''event card_remove {'' | ||
+ | ''on_error = ignore;'' | ||
+ | ''action = "gdmflexiserver";'' | ||
+ | ''}'' | ||
+ | ''# Too much time card removed'' | ||
+ | ''event expire_time {'' | ||
+ | ''on_error = ignore;'' | ||
+ | ''action = "/bin/false";'' | ||
+ | ''}'' | ||
+ | ''}'' | ||
+ | |||
+ | Далее надо поставить утилиту ''pkcs11_eventmgr'' на автозагрузку. Для этого отредактируем файл .''bash_profile'' пользователя, проходящего аутентификацию: | ||
+ | '''nano /home/<имя_пользователя>/.bash_profile''' | ||
+ | Добавим в конце строку, запускающую ''pkcs11_eventmgr''. После редактирования .bash_profile может выглядеть следующим образом: | ||
+ | |||
+ | [[File:Rutoken RELS11.png|Rutoken RELS11.png]] | ||
+ | |||
+ | При выборе аутентификации при помощи токена экран будет выглядеть примерно следующим образом: | ||
+ | |||
+ | [[File:Rutoken RELS12.png|Rutoken RELS12.png]] |
Версия 06:25, 20 марта 2017
Содержание
Начальные требования
Установленная система ROSA Enterprise Linux Server 6.8 в конфигурации «Стандартный сервер РОСА», доступ к репозиториям (для этого нужно использовать ключ, заранее полученный у службы поддержки, выполнив команду echo «<ключ>» > /etc/rosa-support-id-server с правами администратора). Необходимо устройство (любое из приведённых) Рутокен ЭЦП/Рутокен ЭЦП Flash или Рутокен ЭЦП SC вместе с ридером. На устройстве должен присутствовать контейнер с сертификатом в формате PKCS#12.
Применимость
В инструкции описаны установка и конфигурирование утилит для аутентификации с использование Рутокен ЭЦП для ROSA Enterprise Linux Server 6.8. Пример указан для Архитектуры AMD64, для 32-разрядной системы настройка и установка аналогичны с точностью до названий папок. В инструкции описана процедура, после выполнения которой аутентификация по Рутокен ЭЦП будет возможна, но не будет являться обязательной.
Установка требуемых компонентов
Установка требуемых и удаление конфликтующих утилит (требуются права администратора):
su yum install ccid opensc pam_pkcs11 gdm-plugin-smartcard yum remove coolkey
Библиотека PKCS#11 для Рутокен ЭЦП (важно установить утилиты перед установкой библиотеки):
- Заходим на сайт Рутокен: https://www.rutoken.ru/support/download/pkcs/
- Открываем вкладку "Пользователям GNU/Linux" и нажимаем на ссылку "Библиотека rtPKCS11ecp для GNU/Linux RPM 64-bit (x64) "
- Скачиваем и устанавливаем пакет (требуется пароль администратора)
Настройка системы
Проверка отображения устройства в системе и наличия на нём нужной информации
Запуск pcscd (требуются права администратора):
su killall pcscd (отключение существующего процесса pcscd, если такой был)
С этого момента токен должен быть вставлен в соответствующий разъём
pcscd -adfffff
Открываем отдельную вкладку или окно терминала и набираем в ней следующую команду:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T
В выводе должны быть видны параметры и название устройства. Пример вывода приведён ниже.
Проверим наличие на токене нужной информации при помощи следующей команды (требуется пароль от токена):
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l
В выводе обязан присутствовать "Certificate Object". Такие параметры как ID и label могут отличаться от приведённых ниже.
Добавление сертификата в доверенные
Создание базы данных доверенных сертификатов (требуются права администратора):
su mkdir /etc/pam_pkcs11/nssdb chmod 0644 /etc/pam_pkcs11/nssdb certutil -d /etc/pam_pkcs11/nssdb -N (создание базы данных) modutil -dbdir /etc/pam_pkcs11/nssdb/ -add p11-kit-trust -libfile /usr/lib64/pkcs11/p11-kit-trust.so (утилита потребует отключить браузер)
Копирование сертификата с токена (требуется пароль токена) (параметр ID можно взять из вывода команды pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l):
pkcs11-tool --module=/usr/lib64/librtpkcs11ecp.so -l -r -y cert -d <ID> -o cert.crt (команда запишет сертификат в текущую директорию как cert.crt)
Добавление сертификата в доверенные (требуются права администратора):
su cp cert.crt /etc/pki/ca-trust/source/anchors/ (команда вводится из директории, в которую был помещён сертификат) update-ca-trust force-enable update-ca-trust extract (может занять некоторое время)
Изменение конфигурационных файлов
Для изменения конфигурационных файлов нам понадобятся права администратора (root)
pam_pkcs11.conf
Создаём (допустим, на рабочем столе) текстовый файл со следующим содержимым (называем его pam_pkcs11.conf):
pam_pkcs11 { nullok = false; debug = true; use_first_pass = false; use_authtok = false; card_only = false; wait_for_card = false; use_pkcs11_module = rutokenecp; # Aktiv Rutoken ECP pkcs11_module rutokenecp { module = /usr/lib64/librtpkcs11ecp.so slot_num = 0; support_thread = true; ca_dir = /etc/pam_pkcs11/cacerts; crl_dir = /etc/pam_pkcs11/crls; cert_policy = signature; } use_mappers = subject;
mapper_search_path = /usr/lib64/pam_pkcs11; mapper subject { debug = true; module = internal; ignorecase = false; mapfile = file:///etc/pam_pkcs11/subject_mapping; } }
Далее положим файл "куда надо", т.е. в /etc/pam_pkcs11/
cd /etc/pam_pkcs11/ su - получаем права администратора mv pam_pkcs11.conf pam_pkcs11.conf.default (резервное копирование) mkdir cacerts crls cp /home/<имя_пользователя>/Desktop/pam_pkcs11.conf /etc/pam_pkcs11/
system-auth
Подключим наш модуль к системе авторизации PAM
su - получаем права администратора nano /etc/pam.d/system-auth - открываем файл для редактирование в редакторе nano. Впрочем, можно использовать и другой, например mcedit
Добавляем сверху следующую строку:
auth sufficient pam_pkcs11.so pkcs_module=/usr/lib64/librtpkcs11ecp.so debug
Сохраняем файл (Ctrl+o) и выходим из nano (Ctrl+x)
subject_mapping
su pkcs11_inspect
Копируем вывод предыдущей команды в файл /etc/pam_pkcs11/subject_mapping и указываем, какому пользователю принадлежит сертификат.
Строка конфигурации имеет вид:
Вывод команды pkcs11_inspect> -> <Имя пользователя>
Проверка аутентификации через консоль
Для проверки аутентификации можно поступить следующим образом:
- Открыть новое окно или вкладку консоли
- Выполнить команду su <имя пользователя> (имя пользователя, указанное в subject_mapping)
Вывод должен получиться примерно как на картинках ниже
Настройка блокировки экрана
После проверки работы аутентификации через консоль можно убрать режим отладки, для этого в файле /etc/pam.d/sysauth в добавленной строке надо убрать слово "debug", а в файле /etc/pam_pkcs11/pam_pkcs11.conf - поставить на против "debug" "false" вместо "true". Для настройки блокировки экрана необходимо отредактировать файл pkcs11_eventmgr (требуются права администратора) :
su cd /etc/pam_pkcs11/ mv pkcs11_eventmgr.conf pkcs11_eventmgr.conf.default (резервное копирование) nano pkcs11_eventmgr.conf
После редактирования конфигурационный файл должен выглядеть следующим образом:
pkcs11_eventmgr {
# Run in background? Implies debug=false if true daemon = true; # show debug messages? debug = false; # polling time in seconds polling_time = 1; # expire time in seconds # default = 0 ( no expire ) expire_time = 0; # pkcs11 module to use pkcs11_module = /usr/lib64/librtpkcs11ecp.so; # # list of events and actions # Card inserted event card_insert { # what to do if an action fail? # ignore : continue to next action # return : end action sequence # quit : end program on_error = ignore ; } # Card has been removed event card_remove { on_error = ignore; action = "gdmflexiserver"; } # Too much time card removed event expire_time { on_error = ignore; action = "/bin/false"; }
}
Далее надо поставить утилиту pkcs11_eventmgr на автозагрузку. Для этого отредактируем файл .bash_profile пользователя, проходящего аутентификацию:
nano /home/<имя_пользователя>/.bash_profile
Добавим в конце строку, запускающую pkcs11_eventmgr. После редактирования .bash_profile может выглядеть следующим образом:
При выборе аутентификации при помощи токена экран будет выглядеть примерно следующим образом: