Локальная аутентификация при помощи Рутокен ЭЦП в операционной системе ROSA Enterprise Linux Server — различия между версиями
A.butyrin (обсуждение | вклад) (оформление, стилевые правки) |
A.butyrin (обсуждение | вклад) (оформление, стилевые правки) |
||
Строка 43: | Строка 43: | ||
Проверьте наличие на токене нужной информации при помощи следующей команды (требуется пароль от токена): | Проверьте наличие на токене нужной информации при помощи следующей команды (требуется пароль от токена): | ||
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l | pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l | ||
− | В выводе обязан присутствовать '' | + | В выводе обязан присутствовать ''Certificate Object''. Такие параметры, как ''ID'' и ''label'', могут отличаться от приведённых ниже. |
[[File:Rutoken RELS3.png]] | [[File: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 ''(утилита потребует отключить браузер)'' | |
[[File:Rutoken RELS4.png]] | [[File: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)'' | |
[[File:Rutoken RELS5.png]] | [[File:Rutoken RELS5.png]] | ||
− | + | * Добавьте сертификат в доверенные (требуются права администратора): | |
− | + | su | |
− | + | cp cert.crt /etc/pki/ca-trust/source/anchors/ ''(команда вводится из директории, в которую был помещён сертификат)'' | |
− | + | update-ca-trust force-enable | |
− | + | update-ca-trust extract ''(может занять некоторое время)'' | |
=== Изменение конфигурационных файлов === | === Изменение конфигурационных файлов === | ||
− | Для изменения конфигурационных файлов | + | Для изменения конфигурационных файлов потребуются права администратора. |
− | ==== | + | ==== 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 ==== | ==== system-auth ==== | ||
− | + | * Подключите модуль к системе авторизации PAM: | |
− | + | su ''(получение прав администратора)'' | |
− | + | ||
− | + | * Откройте файл ''system-auth'' в редакторе [[nano|nano]] или ''mcedit'': | |
− | + | nano /etc/pam.d/system-auth | |
+ | |||
+ | * Добавьте вверху следующую строку: | ||
+ | auth sufficient pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so debug | ||
[[File:Rutoken RELS7.png]] | [[File:Rutoken RELS7.png]] | ||
− | + | * Сохраните файл (<Ctrl+O>) и закройте редактор (<Ctrl+X>) | |
==== subject_mapping ==== | ==== subject_mapping ==== | ||
− | + | * Выполните команды: | |
− | + | su | |
+ | pkcs11_inspect | ||
[[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]] | [[File:Rutoken RELS9.png|Rutoken RELS9.png]] | ||
=== Проверка аутентификации через консоль === | === Проверка аутентификации через консоль === | ||
− | + | * Откройте новое окно или вкладку консоли | |
− | * | + | * Выполните команду ''su <имя_пользователя>'' (имя пользователя, указанное в subject_mapping) |
− | * | + | Пример вывода: |
− | + | ||
[[File:Rutoken RELS10.png|Rutoken RELS10.png]] | [[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 RELS11.png|Rutoken RELS11.png]] | ||
− | При выборе аутентификации при помощи токена экран будет выглядеть примерно | + | При выборе аутентификации при помощи токена экран будет выглядеть примерно так: |
[[File:Rutoken RELS12.png|Rutoken RELS12.png]] | [[File:Rutoken RELS12.png|Rutoken RELS12.png]] | ||
[[Категория:ROSA Enterprise Linux Server]] | [[Категория:ROSA Enterprise Linux Server]] |
Версия 16:58, 13 ноября 2018
Начальные требования
- Установленная система ROSA Enterprise Linux Server версии не ниже 6.8 в конфигурации «Стандартный сервер РОСА»
- Доступ к репозиториям
- Устройство Рутокен ЭЦП/Рутокен ЭЦП Flash/Рутокен ЭЦП SC вместе с ридером. На устройство должен быть записан сертификат.
Для получения доступа к репозиториям получите у службы поддержки ключ и выполните следующую команду с правами администратора:
echo <ключ> > /etc/rosa-support-id-server
Применимость
В инструкции описаны установка и настройка утилит ROSA Enterprise Linux Server, необходимых для аутентификации с использованием Рутокен ЭЦП. В примере используется архитектура 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
- Завершите существующий процесс pcscd, если таковой имелся:
killall 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 (может занять некоторое время)
Изменение конфигурационных файлов
Для изменения конфигурационных файлов потребуются права администратора.
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 (получение прав администратора)
- Откройте файл system-auth в редакторе nano или mcedit:
nano /etc/pam.d/system-auth
- Добавьте вверху следующую строку:
auth sufficient pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so debug
- Сохраните файл (<Ctrl+O>) и закройте редактор (<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 после редактирования:
При выборе аутентификации при помощи токена экран будет выглядеть примерно так: