Yubikey и Mac OS X login

Штатной поддержки у Mac OS X для поддержки yubikey нет. Сторонних тулзов делающих все за вас я тоже не нашел. Зато нашел на Github модуль PAM (yubico-pam) для авторизации через  Yubikey.

https://github.com/Yubico/yubico-pam

поставим его и попробуем что это такое.

В первую очередь нам нужен XCode. Ставим его прямо из App Store

Снимок экрана 2014-04-24 в 11.24.32

для того чтоб подтвердить прочтение лицензии Xcode license в терминале

sudo xcodebuild -license

 

далее устанавливаем MacPorts.

Для Маверика качаем https://distfiles.macports.org/MacPorts/MacPorts-2.2.1-10.9-Mavericks.pkg

и устанавливаем pkg

Снимок экрана 2014-04-24 в 11.48.19

обновляем порты.
в терминале

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

sudo port -v selfupdate

пробуем собрать и поставить pam модуль

sudo port install yubico-pam

конечно подтянул он за собой будь здоров зависимостей:

Computing dependencies for yubico-pam
---> Dependencies to be installed: ykpers libyubikey yubico-c-client curl curl-ca-bundle libidn gettext expat libiconv ncurses openssl zlib

но встал на “ура”

---> Installing yubico-pam @2.14_1
---> Activating yubico-pam @2.14_1
---> Cleaning yubico-pam
---> Updating database of binaries: 100.0%
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.

Приступаем у конфигурации нашего YubiKey

Делается это с помощью утилиты ykpersonalize. Проще и лучше воспользоваться ее аналогом от “проиводтеля”.

Качаем тут http://www.yubico.com/products/services-software/personalization-tools/

Можем с App Store https://itunes.apple.com/app/id638161122
Можем с сайта yubico – http://www.yubico.com/wp-content/uploads/2012/09/yubikey-personalization-gui-3.1.14.pkg

Запускаем и конфигурим ключ

3ebc5e4f4f4a7e65b58282b205af3c7a957b8c88

– жмем Challenge-Response

– выбираем HMAC-SHA1

0f76ed101cf7985c55432c0bbec8dbcc7e508213

– выбираем configuration slot который будем использовать. Я выбираю confuration slot 2

– Выберите, хотите ли вы требовать нажатия кнопки для аутентификации.
Если вы включите это, вам придется дважды нажимать кнопку для аутентификации с Yubico-PAM. Это потому, что модуль PAM не только посылает вызов на yubikey и проверяет, совпадает ли ответ, но и создает новую пару запрос-ответ в случае успеха.

2565cdafcdc620040c06bbb2a3920b3c65785179

– используйте “Variable input” в режиме HMAC-SHA1

– генерируйте секретный ключ

a7f36fd629b8e1825f8277570b6ee54e30282751

– жмем кнопочку Write Configuration и сохраняем полученный файлик в доступном месте.

208efac450a63e74ae04619c7610886463ce81c4

Теперь надо настроить аккаунт для работы с YubiKey

Открываем терминал

создаем в ~ директорию где ykpamcfg будет хранить начальные значения

[cce]
mkdir -m0700 -p ~/.yubico

ykpamcfg -2
Stored initial challenge and expected response in '/Users/vslip/.yubico/challenge-1384262'.
[/cce]

обратите внимание что 2 это slot number для которого вы чуть выше конфигурили свой yubikey. Если для 1-го слота – ставим 1

Если вы установили галочку на параметре “нажатие кнопки для аутентификации” (Require user input) то зеленая лампочка на ключе начнет моргать. Нажмите кнопку для того чтоб послать отклик.

При удачном окончании получаем ответ – Stored initial challenge and expected response in XXXXX

В результате будет создан файл с кодом ожидаемого ответа. Содержимое этого файла может быть получено только с помощью вашего секретного ключа. Потом модуль PAM будет проверять содержимое этого файла. Содержимое файла будет сравниваться с той частью что хранится на ключе.

Теперь конфигурируем систему для использования модуля PAM

Для пробы я хочу попробовать авторизировать sudo для использования ключа

sudo vim /etc/pam.d/sudo

и приводим к виду

# sudo: auth account password session
auth sufficient pam_yubico.so mode=challenge-response debug
auth required pam_opendirectory.so
account required pam_permit.so
password required pam_deny.so
session required pam_permit.so

Сохраняем файл – ESC :wq!

сразу хочу предупредить – оставьте открытую консоль с правами root на тот случай если что то пойдет не так.

все дальнейшее вы делаете на свой страх и риск.

проверяем работу:

829742de4a6617ec0d9b17d6a1800c139d1da076

ключ в слоте. все типа зашибись.

для использования yubikey про логине в систему правим файл:

sudo vim /etc/pam.d/authorization

и приводим его к виду

# authorization: auth account
auth sufficient pam_yubico.so mode=challenge-response debug
auth optional pam_krb5.so use_first_pass use_kcminit
auth optional pam_ntlm.so use_first_pass
auth required pam_opendirectory.so use_first_pass nullok
account required pam_opendirectory.so
~

кстати вот пример когда ключ вынут:

aaa49fdc11f3f9a624229c1ae9d55a53e8af635e

 

Еще раз хочу предупредить – чтоб не поиметь неожиданный геморрой – рекомендую как минимум включить ssh сервер на своем маке и проверить удаленный вход на него.

Снимок экрана 2014-04-24 в 13.27.08

 

ну и на последок. после того как все эксперименты закончились и вы уверены что все хорошо, меняем слово sufficient на слово required в строке. Параметр debug – по желанию можно убрать.

auth sufficient pam_yubico.so mode=challenge-response debug

вы сможете войти в систему _только при наличии_ ключа в usb слоте.

PS для того чтоб использовать yubikey с заставкой (screensaver) добавьте вышеупомянутую строку в

/etc/pam.d/screensaver

И да храните Ваш ключ!!! 🙂

1211312318X29gp0

Оставить комментарий