Локальная аутентификация при помощи Рутокен ЭЦП в операционной системе ROSA Enterprise Linux Server — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(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) "
  • Скачиваем и устанавливаем пакет (требуется пароль администратора)

Rutoken RELS1.png

Настройка системы

Проверка отображения устройства в системе и наличия на нём нужной информации

Запуск pcscd (требуются права администратора):

 su
 killall pcscd (отключение существующего процесса pcscd, если такой был)

С этого момента токен должен быть вставлен в соответствующий разъём

 pcscd -adfffff

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

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

В выводе должны быть видны параметры и название устройства. Пример вывода приведён ниже.

Rutoken RELS2.png

Проверим наличие на токене нужной информации при помощи следующей команды (требуется пароль от токена):

 pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l

В выводе обязан присутствовать "Certificate Object". Такие параметры как ID и label могут отличаться от приведённых ниже.

Rutoken RELS3.png

Добавление сертификата в доверенные

Создание базы данных доверенных сертификатов (требуются права администратора):

 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 (утилита потребует отключить браузер)

Rutoken RELS4.png

Копирование сертификата с токена (требуется пароль токена) (параметр 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)

Rutoken RELS5.png

Добавление сертификата в доверенные (требуются права администратора):

 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

Rutoken RELS7.png

Сохраняем файл (Ctrl+o) и выходим из nano (Ctrl+x)

subject_mapping

 su
 pkcs11_inspect

Rutoken RELS8.png

Копируем вывод предыдущей команды в файл /etc/pam_pkcs11/subject_mapping и указываем, какому пользователю принадлежит сертификат.

Строка конфигурации имеет вид:

 Вывод команды pkcs11_inspect> -> <Имя пользователя>

Rutoken RELS9.png

Проверка аутентификации через консоль

Для проверки аутентификации можно поступить следующим образом:

  • Открыть новое окно или вкладку консоли
  • Выполнить команду su <имя пользователя> (имя пользователя, указанное в subject_mapping)

Вывод должен получиться примерно как на картинках ниже

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 может выглядеть следующим образом:

Rutoken RELS11.png

При выборе аутентификации при помощи токена экран будет выглядеть примерно следующим образом:

Rutoken RELS12.png