У нас есть Aladdin eToken Pro 32k от компании Aladdin и Debian GNU/Linux 4.0 Etch.
При работе с eToken Pro можно использовать один из двух
методов:
1. Работа через opensc и openct по стандарту PKCS#15
1. Работа через демон от Aladdin по их протоколу
Мы будем использовать PKCS#15.
Сначала устанавливаем opensc и openct для
доступа к смарт-карте.
Список поддерживаемых карт можно посмотреть на
официальном сайте.
Сначала eToken нужно отформатировать и инициализировать в Windows. Это
нужно потому что драйвер от Aladdin и Open SC? используют разные
структуры данных. Кроме того форматирование из Windows с помощью
программы от Aladdin форматирует весь eToken, а Open SC? стирает только
структуру PKCS#15.
Поэтому если хочется использовать eToken в Windows и Linux
одновременно то сначала его нужно отформатировать и инициализировать в
Windows, а потом инициализировать в Linux с помощью Open SC?.
Теперь вставляем eToken и смотрим определился ли он:
Запоминаем идентификатор ключа (0) – он нам в дальнейшем понадобится.
Теперь создадим структуру PKCS#15 на eToken
Если eToken не будет использоваться в Microsoft Windows то создаем
структуру PKCS#15 и форматируем токен.
вводим PIN для Secirity Officer (SO PIN) и PUK для Security Officer
(максимум 8 символов).
SO PIN будет нужен для создания профилей.
SO PUK будет нужен для разблокирования профилей.
Теперь создаем сертификат x509 в Tiny CA? 2 (RSA 1024bit, SHA1 digest)
и экспортируем его в формате PKCS#12 вместе с ключом (ставим галочку
«Include Key (PEM)"). Не забываем отключить вставку в PKCS#12 сертификата CA.
Теперь создаем профиль на eToken:
вводим PIN, PUK и SO PIN
И заливаем сертификат:
Идентификатор по умолчанию – 45.
Если залился только один сертификат значит опция split-key не
сработала тогда смотрим для какого использования залился сертификат
Видно что сертификат используется для подписи, поэтому заливаем еще
раз и указываем использовать для расшифровки:
Если залился сертификат для расшифровки тогда заливаем с опцией
--key-usage sign.
И теперь смотрим ключи:
Видим что есть оба сертификата (подписи и расшифровки).
Теперь смотрим ID залитого сертификата:
Теперь нужно включить пользователей, авторизирующихся с помощью eToken
в группу scard:
Чтоб пользоваться ssh используя авторизацию по eToken нужно
пересобрать openssh.
Устанавливаем исходники:
Заходим в каталог debian и правим файл control:
1. Добавляем в Build-Depends libopensc2-dev
1. Добавляем в Recommends для openssh-client libopensc2 и opensc
Правим файл rules:
1. Добавляем в configure параметр --with-opensc=/usr
1. Убираем комментарий со строки:
Теперь нужно наложить патч из opensc
Устанавливаем исходники opensc:
Достаем патч ask-for-pin.diff из src/openssh и накладываем его на
openssh.
Без этого патча не будет работать запрос PIN в ssh.
Исходники opensc больше не понадобятся.
Теперь добавляем запись для changelog для openssh, собираем и устанавливаем
пакет.
После установки пакета можно пользоваться авторизацией по eToken в
ssh.
Сначала достанем из токена открытую часть ключа:
Теперь authorized_keys нужно закинуть на серверы в /.ssh/
После этого можно авторизоваться на сервере:
Есть несколько модулей pam которые используют eToken для авторизации в
системе.
Начнем с самого простого.
Проект pam_p11 состоит из
двух простых модулей pam, даже не имеющих настроек:
1. pam_p11_opensc.so
1. pam_p11_openssh.so
Работают они одинаково и различаются только проверяемым сертификатом.
pam_p11_openssh.so проверяет пользователя по сертификатам в
/.ssh/authorized_keys
pam_p11_opensc.so проверяет пользователя по сертификатам в
/.eid/authorized_certificates
Модуль libpam-p11 версии 0.1.2 из Etch не будет работать с eToken.
Нужно сделать backport из Lenny версии 0.1.3.
Кроме того его надо пропатчить перед сборкой.
Вот патч:
Собираем пакет и устанавливаем его.
Теперь можно настроить авторизацию.
Для pam_p11_opensc нужные файлы создаются так:
Для pam_p11_openssh:
И теперь правим конфигурацию pam.
Например для su правим файл /etc/pam.d/su В начало файла после строки
добавляем строку
И теперь пользователи с eToken открытый ключ которых лежит в
/root/.ssh/authorized_keys могут запускать su и у них будет спрашивать
только PIN токена
При отсутствии токена авторизация будет проходить штатно.
И так для всех необходимых файлов в /etc/pam.d/