Штатной поддержки у Mac OS X для поддержки yubikey нет. Сторонних тулзов делающих все за вас я тоже не нашел. Зато нашел на Github модуль PAM (yubico-pam) для авторизации через Yubikey.
https://github.com/Yubico/yubico-pam
поставим его и попробуем что это такое.
В первую очередь нам нужен XCode. Ставим его прямо из App Store
для того чтоб подтвердить прочтение лицензии Xcode license в терминале
sudo xcodebuild -license
далее устанавливаем MacPorts.
Для Маверика качаем https://distfiles.macports.org/MacPorts/MacPorts-2.2.1-10.9-Mavericks.pkg
и устанавливаем pkg
обновляем порты.
в терминале
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
Запускаем и конфигурим ключ
– жмем Challenge-Response
– выбираем HMAC-SHA1
– выбираем configuration slot который будем использовать. Я выбираю confuration slot 2
– Выберите, хотите ли вы требовать нажатия кнопки для аутентификации.
Если вы включите это, вам придется дважды нажимать кнопку для аутентификации с Yubico-PAM. Это потому, что модуль PAM не только посылает вызов на yubikey и проверяет, совпадает ли ответ, но и создает новую пару запрос-ответ в случае успеха.
– используйте “Variable input” в режиме HMAC-SHA1
– генерируйте секретный ключ
– жмем кнопочку Write Configuration и сохраняем полученный файлик в доступном месте.
Теперь надо настроить аккаунт для работы с 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 на тот случай если что то пойдет не так.
все дальнейшее вы делаете на свой страх и риск.
проверяем работу:
ключ в слоте. все типа зашибись.
для использования 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 ~
кстати вот пример когда ключ вынут:
Еще раз хочу предупредить – чтоб не поиметь неожиданный геморрой – рекомендую как минимум включить ssh сервер на своем маке и проверить удаленный вход на него.
ну и на последок. после того как все эксперименты закончились и вы уверены что все хорошо, меняем слово sufficient на слово required в строке. Параметр debug – по желанию можно убрать.
auth sufficient pam_yubico.so mode=challenge-response debug
вы сможете войти в систему _только при наличии_ ключа в usb слоте.
PS для того чтоб использовать yubikey с заставкой (screensaver) добавьте вышеупомянутую строку в
/etc/pam.d/screensaver
И да храните Ваш ключ!!! 🙂