Модуль Yubico PAM обеспечивает простой способ интеграции YubiKey в существующую инфраструктуру аутентификации пользователей. PAM используется GNU/Linux, Solaris и Mac OS X для аутентификации пользователей, а также другими специализированными приложениями, такими как NCSA MyProxy.
Модуль работает для многопользовательских систем. Основной режим работы — онлайн-проверка с использованием службы проверки YubiKey (например, YubiCloud или частной службы, настроенной с использованием параметра «urllist»).
В версии 2.6 автономная проверка также стала возможной благодаря использованию запроса-ответа HMAC-SHA1, присутствующего в YubiKey 2.2 и более поздних версиях. Это привело к появлению зависимости libykpers-1 от пакета ykpersonalize. Передайте --without-cr
для configure
чтобы избежать этой зависимости.
Сообщество разработчиков координируется через страницу проекта GitHub.
Проект лицензирован по лицензии BSD. Точную формулировку смотрите в файле COPYING. Обратите внимание, что для любого диапазона лет авторских прав, указанного в этом пакете как YYYY-ZZZZ, диапазон указывает каждый год в этом закрытом интервале.
Перейдите к следующему разделу, если вы используете официальную упакованную версию.
Вы можете проверить исходники с помощью Git с помощью следующей команды:
$ git клон https://github.com/Yubico/yubico-pam.git
Это создаст каталог yubico-pam
.
Для создания компилируемого дерева исходного кода необходимо установить Autoconf, automake, libtool, asciidoc, xsltproc и docbook-xsl.
Создайте систему сборки, используя:
$ cd юбико-пэм $ autoreconf --install
Вам потребуется установить libykclient (ykclient.h, libykclient.so) и libpam-dev (security/pam_appl.h, libpam.so). Для этого, в свою очередь, требуется установленный cURL и libyubikey.
Для автономной аутентификации Challenge-Response требуется libykpers-1 из проекта yubikey-personalization:
Для самотестирования требуется Perl с установленным модулем Net::LDAP::Server.
Система сборки использует Autoconf, чтобы настроить запуск системы сборки:
./настроить
Используйте --without-ldap, чтобы отключить поддержку ldap.
Затем соберите код, запустите самотестирование и установите двоичные файлы:
сделать проверку установки
В Fedora/EPEL уже есть пакет yubico-pam, который можно установить с помощью yum:
$ sudo yum install pam_yubico
Существует Ubuntu PPA (персональный архив пакетов) для yubico-pam, который можно установить с помощью следующих команд на достаточно современных платформах Ubuntu:
$ sudo add-apt-repository ppa:yubico/stable $ sudo apt-get обновление $ sudo apt-get install libpam-yubico
После установки посмотрите файл /usr/share/doc/libpam-yubico/README.Debian
.
yubico-pam и поддерживающие его пакеты Yubico имеют соответствующие порты FreeBSD. Чтобы установить:
$ cd /usr/ports/security/pam_yubico $ сделать установку чистой
Примечания по расширенной конфигурации доступны здесь.
Установите его в настройках PAM, добавив строку в соответствующий файл /etc/pam.d/
:
достаточная аутентификация pam_yubico.so id=[Ваш идентификатор клиента API] отладка
и переместите pam_yubico.so в /lib/security/ (или в другое место, где в вашей системе находятся модули PAM):
mv /usr/local/lib/security/pam_yubico.so /lib/security/
Более подробную информацию смотрите в документации проекта.
Поддерживаемые параметры модуля PAM:
файл авторизации | Чтобы указать расположение файла, в котором хранятся сопоставления идентификаторов токенов YubiKey с именами пользователей. |
идентификатор | Ваш идентификатор клиента API на сервере проверки Yubico. Если вы хотите использовать службу YubiCloud по умолчанию, перейдите сюда. |
ключ | Указать свой клиентский ключ в формате base64. Ключ клиента также известен как ключ API и обеспечивает целостность связи между клиентом ( вами) и сервером проверки. Если вы хотите получить его для использования со службой YubiCloud по умолчанию, перейдите сюда. |
отлаживать | чтобы включить вывод отладки. |
файл_отладки | имя файла для записи отладки, файл должен существовать и быть обычным файлом. стандартный вывод используется по умолчанию. |
всегда ок | чтобы все попытки аутентификации были успешными (так называемый режим презентации). |
try_first_pass | Прежде чем запрашивать у пользователя пароль, модуль сначала пробует пароль предыдущего объединенного модуля в случае, если он удовлетворяет и этому модулю. |
use_first_pass | Аргумент use_first_pass заставляет модуль использовать пароль предыдущего стекового модуля и никогда не запрашивает пользователя - если пароль недоступен или пароль не подходит, пользователю будет отказано в доступе. |
всегда_подсказка | Если установлено, не пытайтесь выполнить поиск, чтобы определить, настроен ли у пользователя YubiKey, а вместо этого запрашивайте его, несмотря ни на что. Это полезно в случае, когда ldap_bind_as_user включен, но этот модуль используется для чтения пароля пользователя (в сценарии аутентификации YubiKey+OTP). |
нуллок | Если установлено, не происходит сбой, если для пользователя не объявлены токены в файлах сопоставления авторизации или в LDAP. Это можно использовать, чтобы сделать аутентификацию YubiKey необязательной, если у пользователя нет связанных токенов. |
ldap_starttls | Если установлено, перед попыткой привязки к соединению LDAP введите команду STARTTLS. Это обычная настройка для серверов, которые прослушивают только порт 389, но все равно требуют TLS. |
ldap_bind_as_user | Если установлено, используйте вход пользователя в систему для привязки к LDAP. При этом будет использоваться пароль, предоставленный пользователем через PAM. Если этот параметр установлен, необходимо также установить ldapdn и uid_attr. Включение этого параметра приведет к игнорированию «ldap_bind_user» и «ldap_bind_password». |
список ссылок | Список шаблонов URL, которые будут использоваться. Это устанавливается вызовом ykclient_set_url_bases. Список должен иметь следующий формат: |
URL | Эту опцию не следует использовать, вместо нее используйте опцию urllist. Укажите используемый шаблон URL-адреса. Он задается путем вызова yubikey_client_set_url_template, который по умолчанию имеет значение: |
Капат | укажите путь, по которому хранятся сертификаты X509. Это необходимо, если «https» или «ldaps» используются в «url» и «ldap_uri» соответственно. |
Каинфо | Возможность разрешить использование пакета CA вместо пути. |
прокси | укажите прокси для подключения к серверу проверки. Допустимые схемы: http://, https://,socks4://,socks4a://,socks5:// илиsocks5h://. Socks5h просит прокси выполнить разрешение DNS. Если схема или порт не указаны, будет использоваться порт HTTP-прокси 1080. |
verbose_otp | Этот аргумент используется для отображения OTP (одноразового пароля) при его вводе, т. е. для включения эха терминала введенных символов. Не рекомендуется использовать эту опцию, если вы используете двухфакторную аутентификацию, поскольку при этом ваш пароль будет отображаться на экране. Для этого требуется, чтобы служба использовала модуль PAM для отображения настраиваемых полей. Эту опцию нельзя использовать с OpenSSH. |
ldap_uri | укажите URI LDAP-сервера (например, ldap://localhost). |
ldapserver | укажите хост LDAP-сервера (используется порт LDAP по умолчанию). Устарело. Вместо этого используйте «ldap_uri». |
ldapdn | укажите dn, в котором хранятся пользователи (например: ou=users,dc=domain,dc=com). |
ldap_clientcertfile | Путь к файлу сертификата клиента, который будет использоваться при общении с сервером LDAP. Обратите внимание, что для этого также необходимо установить «ldap_clientkeyfile». |
ldap_clientkeyfile | Путь к ключу, который будет использоваться с сертификатом клиента при общении с сервером LDAP. Обратите внимание, что для этого также необходимо установить «ldap_clientcertfile». |
ldap_bind_user | Пользователь, который попытается выполнить привязку LDAP. |
ldap_bind_password | Пароль, который будет использоваться при привязке LDAP. |
ldap_filter | Фильтр LDAP, используемый для поиска правильного объекта в LDAP. В этой строке |
ldap_cacertfile | Файл сертификата CA для соединения LDAP. |
user_attr | укажите атрибут LDAP, используемый для хранения имен пользователей (например: cn). |
yubi_attr | укажите атрибут LDAP, используемый для хранения идентификатора YubiKey. |
yubi_attr_prefix | укажите префикс значения атрибута LDAP в случае общего атрибута, используемого для хранения нескольких типов идентификаторов. |
token_id_length | Длина идентификатора перед OTP (при использовании YubiCloud — 12). |
режим | Режим работы. Используйте «клиент» для онлайн-проверки с помощью службы проверки YubiKey, такой как YubiCloud, или используйте «запрос-ответ» для автономной проверки с использованием YubiKeys с конфигурациями «вызов-ответ» HMAC-SHA-1. См. справочную страницу ykpamcfg(1) для получения дополнительной информации о том, как настроить автономную проверку запроса-ответа. |
chalresp_path | Каталог, который используется для хранения файлов испытаний в случае общесистемной конфигурации (в отличие от файлов испытаний, хранящихся в домашнем каталоге пользователя). Это местоположение должно быть доступно для чтения и записи только пользователю root. Дополнительную информацию о такой настройке см. в документе |
mysql_server | Имя хоста/адрес сервера MySQL, который будет использоваться для сопоставления. |
mysql_port | Сетевой порт сервера MySQL. |
mysql_user | Пользователь для доступа к базе данных MySQL. |
mysql_password | Пароль для пользователя MySQL. |
mysql_database | Используемая база данных mysql. |
Если вы используете «отладку», вам может оказаться полезным создать файл журнала, доступный для записи всем:
touch /var/run/pam-debug.log
chmod go+w /var/run/pam-debug.log
Примечание | Помните, что физический доступ к системам часто позволяет обойти меры безопасности. Если злоумышленник имеет физический доступ к вашей системе (например, ноутбук, оставленный в номере отеля) и может загрузиться в однопользовательском режиме, он может отключить yubico-pam в конфигурации вашей системы. |
Необходимо установить соответствие между идентификатором токена YubiKey и идентификатором пользователя, к которому он привязан. Есть два способа сделать это: централизованно в одном файле или индивидуально, когда пользователи могут создавать сопоставления в своих домашних каталогах. Если используется файл сопоставления централизованной авторизации, сопоставления домашнего каталога пользователя не будут использоваться, и наоборот, если используются сопоставления домашнего каталога пользователя, файл сопоставления централизованной авторизации не будет использоваться.
Создайте файл /etc/yubikey_mappings
, файл должен содержать имя пользователя и идентификатор токена YubiKey, разделенные двоеточиями (тот же формат, что и файл passwd) для каждого пользователя, которому вы хотите разрешить доступ в систему с помощью YubiKey.
Сопоставления должны выглядеть следующим образом, по одному на строку:
<первое имя пользователя>:: :…. <второе имя пользователя>: : :….
Теперь добавьте authfile=/etc/yubikey_mappings
в строку конфигурации PAM, чтобы она выглядела так:
достаточная аутентификация pam_yubico.so id=[Идентификатор вашего API-клиента] authfile=/etc/yubikey_mappings
Каждый пользователь создает файл ~/.yubico/authorized_yubikeys
внутри своего домашнего каталога и помещает сопоставление в этот файл. В файле должна быть только одна строка:
<имя пользователя>::
Это во многом та же концепция, что и файл авторизованных ключей SSH.
Получить идентификатор токена YubiKey можно несколькими способами. Один из них — удаление последних 32 символов любого OTP (одноразового пароля), сгенерированного с помощью вашего YubiKey. Другой вариант — использовать калькулятор modhex.
Введите OTP YubiKey и преобразуйте его. Идентификатор вашего токена YubiKey состоит из 12 символов и отображается как:
Кодировка Modhex: XXXXXXX
Не знаете, что означает эта последняя фраза? Вот как получить копию вашего одноразового пароля.
Открыть терминал
Нажмите кнопку YubiKey. В оболочку будет выведен OTP:
$ cccccccgklgcvnkcvnnegrnhgrjkhlkfhdkclfncvlgj
bash: cccccccgklgcvnkcvnnegrnhgrjkhlkfhdkclfncvlgj: command not found
Это можно вставить на страницу Modhex_Calculator.
Для этого необходимо, чтобы у вас был включен модуль pam с включенной «отладкой». Когда будет предложено ввести YubiKey, нажмите кнопку. Модуль pam выведет в оболочку отладочную информацию, включая OTP и идентификатор вашего токена — скопируйте идентификатор в файл конфигурации, и все готово.
YubiKey для вашего пользователя: [pam_yubico.c:pam_sm_authenticate(867)] conv вернул 44 байта [pam_yubico.c:pam_sm_authenticate(885)] Пропуск первых 0 байтов. Длина равна 44, token_id установлен на 12, а OTP токена всегда равен 32. [pam_yubico.c:pam_sm_authenticate(892)] OTP: ccccccclabcabkhbdncicglfltnukadfoifadfhhhhfe ID: cccccclabcab
Пользователи SELinux в принудительном режиме (по умолчанию в Fedora 17+) могут столкнуться с проблемами входа в службы, в том числе проверенные с помощью polkit-agent-helper-1, sshd и входа в систему.
Это описано в Red Hat bugzilla, включая обходной путь для ssh (эквивалентные файлы могут быть созданы для других служб). Системы в «разрешительном» режиме будут генерировать предупреждения AVC, но аутентификация пройдет успешно.
Чтобы определить, включен ли у вас SELinux, запустите команду sestatus
.
Если вы хотите использовать YubiKey для аутентификации при входе в консоль Linux, добавьте следующее в начало файла /etc/pam.d/login
:
достаточная аутентификация pam_yubico.so id=[Ваш идентификатор клиента API] отладка
См. пример расширений схемы Active Directory Майкла Людвига для хранения/ассоциации атрибутов общедоступного идентификатора YubiKey с определенной учетной записью пользователя: https://github.com/mludvig/yubikey-ldap/tree/master/microsoft-schema
создайте файл «/etc/pam.d/openvpn»:
требуется авторизация pam_yubico.so ldap_uri=ldap://contoso.com debug id=[Ваш идентификатор API] yubi_attr=YubiKeyID ldapdn=DC=contoso,DC=com ldap_filter=(&(sAMAccountName=%u)(objectClass=user)(memberOf=CN=somegroup,DC=contoso,DC=com)) [ldap_bind_user=CN=binduser,OU=служебные учетные записи,DC=contoso,DC=com] ldap_bind_password=bind_password try_first_pass требуется учетная запись pam_yubico.so
создать файл «openvpn.conf»
плагин openvpn-plugin-auth-pam.so openvpn