Локальная аутентификация при помощи Рутокен ЭЦП в операционной системе ROSA Enterprise Linux Server — различия между версиями
(→Начальные требования) |
A.butyrin (обсуждение | вклад) м (оформление) |
||
(не показано 7 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
== Начальные требования == | == Начальные требования == | ||
− | Установленная система ROSA Enterprise Linux Server 6.8 в конфигурации «Стандартный сервер РОСА» | + | * Установленная система 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)». | ||
+ | * Скачайте и установите пакет (требуется пароль администратора). | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[File:Rutoken RELS1.png]] | [[File:Rutoken RELS1.png]] | ||
− | == Настройка | + | == Настройка == |
=== Проверка отображения устройства в системе и наличия на нём нужной информации === | === Проверка отображения устройства в системе и наличия на нём нужной информации === | ||
− | + | * Запустите ''pcscd'' (требуются права администратора): | |
− | + | su | |
− | + | ||
− | С этого момента токен должен быть вставлен в соответствующий разъём | + | * Завершите существующий процесс ''pcscd'', если таковой имелся: |
− | + | killall pcscd | |
− | + | ||
− | + | С этого момента токен должен быть вставлен в соответствующий разъём. | |
+ | |||
+ | * Выполните: | ||
+ | pcscd -adfffff | ||
+ | |||
+ | * Откройте отдельную вкладку или окно терминала и выполните в ней следующую команду: | ||
+ | pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T | ||
+ | |||
В выводе должны быть видны параметры и название устройства. Пример вывода приведён ниже. | В выводе должны быть видны параметры и название устройства. Пример вывода приведён ниже. | ||
[[File:Rutoken RELS2.png|Rutoken RELS2.png]] | [[File:Rutoken RELS2.png|Rutoken RELS2.png]] | ||
− | + | * Проверьте наличие на токене нужной информации при помощи следующей команды (требуется пароль от токена): | |
− | + | pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l | |
− | В выводе обязан присутствовать | + | В выводе обязан присутствовать <code>Certificate Object</code>. Такие параметры, как <code>ID</code> и <code>label</code>, могут отличаться от приведённых ниже. |
[[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 можно взять из вывода команды <code>pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l)</code>: | |
− | + | 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]] | ||
=== Проверка аутентификации через консоль === | === Проверка аутентификации через консоль === | ||
− | + | * Откройте новое окно или вкладку консоли. | |
− | * | + | * Выполните команду <code>su <имя_пользователя></code> (имя пользователя указано в subject_mapping). |
− | * | + | |
− | + | Пример вывода: | |
[[File:Rutoken RELS10.png|Rutoken RELS10.png]] | [[File:Rutoken RELS10.png|Rutoken RELS10.png]] | ||
+ | |||
+ | После проверки работы аутентификации через консоль можно убрать режим отладки. Для этого в файле /etc/pam.d/sysauth в добавленной строке уберите слово <code>debug</code>, а в файле /etc/pam_pkcs11/pam_pkcs11.conf поставьте напротив <code>debug</code> <code>false</code> вместо <code>true</code>. | ||
=== Настройка блокировки экрана === | === Настройка блокировки экрана === | ||
− | + | ||
− | + | * Откройте для редактирования файл 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]] |
Текущая версия на 12:32, 23 ноября 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 после редактирования:
При выборе аутентификации при помощи токена экран будет выглядеть примерно так: