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

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Новая страница: «== Начальные требования == Установленная система ROSA Enterprise Linux Server 6.8 в конфигурации «Станд…»)
 
м (оформление)
 
(не показано 16 промежуточных версий 4 участников)
Строка 1: Строка 1:
 +
 
== Начальные требования ==
 
== Начальные требования ==
Установленная система ROSA Enterprise Linux Server 6.8 в конфигурации «Стандартный сервер РОСА», доступ к репозиториям (для этого нужно использовать ключ, заранее полученный у службы поддержки, выполнив команду '''echo «<ключ>» > /etc/rosa-support-id-server''' с правами администратора).
+
* Установленная система ROSA Enterprise Linux Server версии не ниже 6.8 в конфигурации «Стандартный сервер РОСА»
Необходимо устройство (любое из приведённых) Рутокен ЭЦП/Рутокен ЭЦП Flash или Рутокен ЭЦП SC вместе с ридером. На устройстве должен присутствовать контейнер с сертификатом в формате ''PKCS#12''.
+
* Доступ к репозиториям
 +
* Устройство Рутокен ЭЦП/Рутокен ЭЦП Flash/Рутокен ЭЦП SC вместе с ридером. На устройство должен быть записан сертификат
 +
 
 +
Для получения доступа к репозиториям получите у службы поддержки ключ и выполните следующую команду с правами администратора:
 +
echo <ключ> > /etc/rosa-support-id-server
  
 
== Применимость ==
 
== Применимость ==
В инструкции описаны установка и конфигурирование утилит для аутентификации с использование Рутокен ЭЦП для ROSA Enterprise Linux Server 6.8. Пример указан для Архитектуры AMD64, для 32-разрядной системы настройка и установка аналогичны с точностью до названий папок.
+
В инструкции описаны установка и настройка утилит 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]]
 +
 
 +
== Настройка ==
 +
=== Проверка отображения устройства в системе и наличия на нём нужной информации ===
 +
* Запустите ''pcscd'' (требуются права администратора):
 +
su
 +
 
 +
* Завершите существующий процесс ''pcscd'', если таковой имелся:
 +
killall pcscd
 +
 
 +
С этого момента токен должен быть вставлен в соответствующий разъём.
 +
 
 +
* Выполните:
 +
  pcscd -adfffff
 +
 
 +
* Откройте отдельную вкладку или окно терминала и выполните в ней следующую команду:
 +
  pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T
 +
 
 +
В выводе должны быть видны параметры и название устройства. Пример вывода приведён ниже.
 +
 
 +
[[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]]
 +
 
 +
=== Добавление сертификата в доверенные ===
 +
* Создайте базу данных доверенных сертификатов (требуются права администратора):
 +
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]]
 +
 
 +
* Скопируйте сертификат с токена (требуется пароль токена. Параметр 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]]
 +
 
 +
* Добавьте сертификат в доверенные (требуются права администратора):
 +
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|nano]]'' или ''mcedit'':
 +
nano /etc/pam.d/system-auth
 +
 
 +
* Добавьте вверху следующую строку:
 +
auth   sufficient pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so debug
 +
 
 +
[[File:Rutoken RELS7.png]]
 +
 
 +
* Сохраните файл (<Ctrl+O>) и закройте редактор (<Ctrl+X>).
 +
 
 +
==== subject_mapping ====
 +
* Выполните команды:
 +
su
 +
pkcs11_inspect
 +
 
 +
[[File:Rutoken RELS8.png|Rutoken RELS8.png]]
 +
 
 +
* Скопируйте вывод предыдущей команды в файл /etc/pam_pkcs11/subject_mapping и укажите, какому пользователю принадлежит сертификат.
 +
 
 +
Строка конфигурации имеет вид:
 +
Вывод команды pkcs11_inspect -> <имя_пользователя>
 +
 
 +
[[File:Rutoken RELS9.png|Rutoken RELS9.png]]
 +
 
 +
=== Проверка аутентификации через консоль ===
 +
* Откройте новое окно или вкладку консоли.
 +
* Выполните команду <code>su <имя_пользователя></code> (имя пользователя указано в subject_mapping).
 +
 
 +
Пример вывода:
 +
 
 +
[[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 RELS12.png|Rutoken RELS12.png]]
  
== Установка требуемых компонентов ==
+
[[Категория:ROSA Enterprise Linux Server]]
Установка требуемых и удаление конфликтующих утилит (требуются права администратора):
+
  '''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) "
+
* Скачиваем и устанавливаем пакет (требуется пароль администратора)
+

Текущая версия на 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)».
  • Скачайте и установите пакет (требуется пароль администратора).

Rutoken RELS1.png

Настройка

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

  • Запустите pcscd (требуются права администратора):
su
  • Завершите существующий процесс pcscd, если таковой имелся:
killall 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 (может занять некоторое время)

Изменение конфигурационных файлов

Для изменения конфигурационных файлов потребуются права администратора.

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

Rutoken RELS7.png

  • Сохраните файл (<Ctrl+O>) и закройте редактор (<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