Что делать если Google authenticator всегда выдает неправильные коды

от автора

Доброго времени суток.
Я хотел бы рассказать вам о проблемах 2FA аутентификации на устройствах Android 4.4.2 KitKat и о решении, которое в нашем случае прекратило долгие поиски.

Некоторое время назад мы с коллегами решили добавить Двух-этапную аутентификацию (Two factor authentication или для краткости 2FA) для нашего маленького офисного сервера на базе Ubuntu Server.

2FA аутентификация это дополнительный уровень безопасности и приятное дополнение к механизму аутентификации. Кроме стандартной пары логин/пароль от вас требуется указать дополнительную информацию, которая содержится у вас и динамически изменяется. Приложение Google authenticator для мобильных телефонов после разовой настройки генерирует коды, имеющие срок жизни в 30 секунд. Такие же коды генерирует сервер и они сравниваются при аутентификации.

Так как данные не передаются от сервера при попытки авторизации и хранятся только на устройстве — этот механизм является более безопасным, чем коды подтверждения отправляемые сервером в SMS (например как 3D-secure подтверждение в банковских системах).

Пошаговых инструкций о настройках сервера в сети оказалось неожиданно много. В них все очень просто и доходчиво. Я руководствовался этой статьей.
После настроек сервера установили на телефон Lenovo p780 приложение Google Authenticator, «прочитали» телефоном с монитора QR-code и получили заветные циферки для авторизации. Перед тем как перезагрузить SSH не забывайте сохранить резервные ключи для восстановления доступа.

И вот, все готово к использованию! Перезагружаем SSH, заходим на сервер, указываем пароль, после пароля нас просят предъявить Verification code, переписываем его с телефона и… снова просят указать пароль?!!! Выглядит это так:

ssh user@server.ru
password: <ввели пароль>
Verification code: <ввели код>
password:

Испытав несколько разных устройств удалось выяснить, что коды генерируемые на телефонах Android 4.4.2 KitKat приложением Google Authenticator всегда ошибочны.

«Решения», которые удалось найти и их результаты:

1) Если откатить версию Android, начинает работать корректно. (с этим «решением» работали какое то время, но решили двигаться дальше)
2) Так как проблема сводится к некорректным часовым поясам — многие решения направлены именно на их исправление. Приложение TimeZone Fixer действительно может помочь с этой проблемой, однако часть приложений после его использования начинает отображать ошибочное время и потребуется чинить их вручную. (решение имеет свои минусы и риски. О приложении вся информация доступна на сайте 4pda)
3) Подгонять время вручную. Если честно этот способ у нас так и не заработал. Перевести часы вручную и тем самым синхронизировать время на телефоне и сервере. Увы, все попытки ничего не дали, хотя были люди утверждающие, что у них заработало. В любом случае перспектива потерять функцию часов в телефоне не самая приятная…
4) Синхронизация часов внутри настроек приложения Google authenticator (в нашем случае без результатов, однако были комментарии, что кому то помогло)

Финальное решение проблемы:

За время поиска решения в сети я уже натыкался на GitHub приложения Google Authenticator, в трекинге ошибок есть наша, и в качестве решения предложено:

«You can used FreeOTP Authenticator(by Red Hat) instead of Google Authenticator until someone fix it.»


Долгое время мне казалось, что рекомендуется использовать другой механизм-аутентификатор, который нужно ставить на сервер вместо Google, поэтому я усердно искал другие решения. Хотелось заставить работать именно Google authenticator, но на самом же деле рекомендуют использовать другое приложение для Android, а серверная часть остается без изменений.

Приложение FreeOTP Authenticator от компании Red Hat. После настройки по тому же QR-коду все начало работать без необходимости что то корректировать.

К сожалению я не могу указать вам точную причину возникновения ошибки в приложении Google authenticator, но надеюсь, что мой печальный опыт поможет сэкономить чье то время. Буду рад вашим комментариям.

Спасибо за внимание.

ссылка на оригинал статьи http://habrahabr.ru/post/257197/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *