Время прочтения
3 мин
Просмотры 139K
Доброго времени суток.
Я хотел бы рассказать вам о проблемах 2FA аутентификации на устройствах Android 4.4.2 KitKat и о решении, которое в нашем случае прекратило долгие поиски.
Некоторое время назад мы с коллегами решили добавить Двухэтапную аутентификацию (Two factor authentication или для краткости 2FA) для нашего маленького офисного сервера на базе Ubuntu Server.
2FA это дополнительный уровень безопасности и приятное дополнение к уже существующему механизму аутентификации. Кроме обычной пары логин + пароль от пользователя, выполняющего авторизацию, требуется цифровой ключ, который динамически изменяется каждые 30 секунд и генерируется устройством, находящимся во владении пользователя. Для генерации ключа мы использовали Приложение Google authenticator и мобильный телефон на платформе Android. После разовой настройки приложение генерирует коды, имеющие срок жизни в 30 секунд, точно такие же коды генерирует сервер. При аутентификации коды сравниваются.
Так как данные не передаются от сервера и хранятся только на устройстве — этот механизм является более безопасным, чем отправка кодов подтверждения (например, как 3D-secure SMS подтверждение в банковских системах).
Пошаговых инструкций о настройках сервера в сети оказалось неожиданно много. В них все очень просто и доходчиво. Я руководствовался этой статьей.
После настроек сервера установили на телефон Lenovo p780 приложение Google Authenticator, «прочитали» телефоном с монитора QR-code и получили заветные циферки для авторизации. Перед тем как перезагрузить SSH не забывайте сохранить резервные ключи для восстановления доступа.
И вот, все готово к использованию! Перезагружаем SSH, заходим на сервер, указываем пароль, после пароля нас просят предъявить Verification code, переписываем его с телефона и… снова просят указать пароль?!!! Выглядит это так:
ssh user@server.ru
Password: <вводим пароль>
Verification code: <вводим код с телефона>
Password: <?!!, вводим пароль еще раз>
Verification code: <вводим код с телефона>
Password: <еще раз вводим пароль>
Verification code: <еще раз вводим код>
user@server.ru’s password: <еще раз пароль>
Permission denied, please try again.
user@server.ru’s password: <снова вводим пароль>
Received disconnect from xx.xxx.xx.xx: 2: Too many authentication failures for user
Вначале думали, что ошибка допущена в настройках, но испробовав несколько мобильных устройств стало очевидно, что коды генерируемые на Android 4.4.2 KitKat приложением Google Authenticator всегда ошибочны.
«Решения», которые удалось найти и их результаты:
- Если откатить версию Android, начинает работать корректно. (с этим «решением» работали какое то время, но решили двигаться дальше)
- Так как проблема сводится к некорректным часовым поясам — многие решения направлены именно на их исправление. Приложение TimeZone Fixer действительно может помочь с этой проблемой, однако часть приложений после его использования начинает отображать ошибочное время и потребуется чинить их вручную. (решение имеет свои минусы и риски. вся информация о приложении доступна на сайте 4pda)
- Подгонять время вручную. Если честно этот способ у нас так и не заработал. Перевести часы вручную и тем самым синхронизировать время на телефоне и сервере. Увы, все попытки ничего не дали, хотя были люди утверждающие, что у них заработало. В любом случае перспектива потерять функцию часов в телефоне не самая приятная…
- Синхронизация часов внутри настроек приложения Google authenticator (в нашем случае без результатов, однако были комментарии, что кому то помогло)
Финальное решение проблемы: FreeOTP
За время поиска решения в сети я уже натыкался на 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, но надеюсь, что мой печальный опыт поможет сэкономить чье-то время.
Буду рад вашим комментариям! Спасибо за внимание.
Основные причины и ошибки, из-за которых на телефон не приходят SMS с кодами подтверждения.
Во многих сервисах для регистрации или входа требуется ввести код подтверждения из SMS. Расскажем, почему этот код может не приходить на телефон, и как решить проблему.
Неправильно введен номер
Нужно убедиться, что номер, на который должно прийти SMS-сообщение, введен правильно. Важно обратить внимание на формат — во многих формах для ввода номера уже есть код страны, поэтому вводить повторно его не нужно. Если его нет, начинать номер необходимо с +7, а не с восьмерки. Иногда между этими двумя форматами есть существенная разница.
Проблемы с соединением
Запрос кода из SMS-сообщения может прерваться из-за нестабильного соединения. В этом случае рекомендуется:
- Выключить и вновь включить мобильные данные.
- Включить и отключить режим полета — это быстрая перезагрузка беспроводного соединения.
Проверить, работает ли интернет на смартфоне, можно в других приложениях. Убедитесь, что в браузере открываются страницы. Если причина во временных сбоях на стороне мобильного оператора, остается дождаться, пока они не будут исправлены.
Иногда в этой ситуации может помочь переключение на более низкий стандарт связи — 3G или 2G.
Новая SIM-карта
Если SIM-карта была только что куплена, на нее могут не поступать SMS-сообщения. Чаще всего для полной активации SIM-карты требуется около суток, после чего код потребуется запросить снова.
Сообщения отправляются в спам
Если на смартфоне включена защита от спама для SMS, она может сработать некорректно. Из-за этого нужное сообщение не поступит пользователю, а окажется в разделе спама (если такой предусмотрен на телефоне). В этом случае в настройках сообщений или блокировки необходимо временно отключить защиту от спама. Также в этих разделах может находиться функция блокировки по ключевым словам — нужно убедиться, что список ключевых слов пуст.
Временный сбой смартфона
Различные факторы могут привести к тому, что смартфон перестает принимать любые сообщения или зависает. Чаще всего исправить это может обычная перезагрузка, после которой работоспособность устройства возвращается.
Неверная дата или время
SMS-сообщения могут не приходить из-за неправильной даты или времени на смартфоне. В настройках необходимо убедиться, что эта информация указана верно. Оптимальным решением будет установка автоматического выбора даты и времени, которые будут задаваться исходя из местоположения смартфона и данных, полученных через интернет.
Зависло приложение
Если код из SMS-сообщения необходимо ввести в каком-либо приложении, его необходимо закрыть и открыть заново. Программа могла зависнуть еще на стадии отправки кода. После перезагрузки нужно снова попытаться получить код. Если он снова не придет, рекомендуется воспользоваться веб-версией этого же приложения и ввести свой номер для получения кода в браузере.
Короткий номер в черном списке
Номер, с которого пользователь должен получить SMS-сообщение, может быть занесен в черный список. Проверить это необходимо в четырех разных источниках:
- В настройках вызовов — необходимо найти список заблокированных номеров.
- В настройках антивирусной программы — во многих из них также можно вносить номера в черный список.
- В настройках установленных на телефон определителей номеров. Могло произойти так, что номер мог быть заблокирован одной из подобных программ.
- В настройках черного списка приложения мобильного оператора.
Если короткий номер действительно находится в черном списке, его необходимо удалить оттуда и запросить код повторно.
Сторонние программы для приема сообщений
Если на смартфоне установлены другие приложения для приема SMS-сообщений (кроме стандартного), они могут конфликтовать между собой. В этой ситуации лучше удалить стороннюю программу и повторить попытку получения кода.
Отсутствие свободного места
На смартфоне может критически не хватать памяти, из-за чего даже получение SMS будет проходить со сбоями. Очистка хотя бы минимального пространства позволит исправить проблему, после чего код необходимо запросить повторно. Также может помочь удаление старых SMS, из-за большого количества которых новые сообщения не приходят.
Проблема в SIM-карте
Иногда проблема заключается в конкретной SIM-карте или в ее блокировке. Чтобы исключить эту возможность, необходимо ввести другой номер и запросить отправку кода на него. Если все сработало, нужно связаться с оператором связи и выяснить, почему на смартфон не приходит SMS с кодом подтверждения.
Также можно проверить, приходят ли на смартфон SMS в целом. Для этого нужно отправить сообщение на свой номер с другого телефона. SIM-карта может быть слишком старой или иметь повреждения, из-за чего на нее не поступают SMS. В этом случае ее лучше заменить на новую у мобильного оператора.
Проблема в смартфоне
Кроме временного сбоя на смартфоне могут быть и более серьезные неполадки. Исключить их можно, если переставить свою SIM-карту в другое устройство и вновь попробовать запросить код. Если на новый смартфон он поступил без проблем, pyfxbn проблема именно в мобильном устройстве. Виной может быть внутреннее повреждение или системный сбой, требующий сброса настроек телефона до заводских. Конечно, это очень редкий сценарий.
Ранняя версия Android
На старых смартфонах с версией Android 8 и ниже есть отдельная настройка, отвечающая за получение SMS с коротких номеров. Найти ее можно в разделе «Приложения и уведомления» или просто «Приложения». Здесь нужно выполнить несколько действий:
- Нажать на троеточие в углу экрана.
- Выбрать «Особые права доступа».
- Нажать на строку «Использование премиум-сервисов».
- В вариантах ниже выбрать «Спрашивать» или «Разрешать всегда».
Отрицательный баланс
Даже для получения SMS-сообщений у многих операторов требуется иметь положительный баланс телефона. Поэтому если на счете задолженность, прием сообщений может блокироваться. Исправить эту проблему просто — достаточно пополнить баланс и запросив код повторно.
Две SIM-карты
Если в телефон вставлены и работают две SIM-карты, перед получением кода необходимо вынуть обе и вставить обратно только ту, на которую должно прийти SMS-сообщение.
Безопасность вашей учетной записи имеет решающее значение, и благодаря двухфакторной аутентификации мошенникам будет сложно раскрыть и угадать ваши пароли. Google Authenticator добавляет еще один уровень защиты для пользователей, поэтому хакерам будет сложно получить доступ к вашим учетным записям.
Однако некоторые пользователи сообщили, что они есть проблемы с кодами, сгенерированными приложением двухфакторной аутентификации от Google. Коды Google Authenticator не работают, что заставляет пользователей беспокоиться о защите своих учетных записей. Если вы оказались в такой же ситуации, есть способы решить проблему. Ознакомьтесь с приведенными ниже инструкциями, чтобы узнать, как это сделать.
Изображение / Google
Решение №1 — Синхронизируйте дату и время
Неправильная синхронизация времени — одна из причин, по которой ваши коды Google Authenticator могли перестать работать. Если время не синхронизируется правильно, вы столкнетесь с ошибкой.
Решение №2 — Правильно установите время и дату на мобильном телефоне.
Для iOS:
- Откройте настройки.
- Щелкните Общие.
- Перейдите в Дата и время.
- Установите переключатель в положение «Включить» или «Вкл.».
Для Android:
- Щелкните «Настройки».
- Найдите Систему и нажмите, чтобы открыть.
- Щелкните Дата и время.
- Найдите Автоматические дата и время и установите переключатель в положение «Включить» или «Вкл.».
- Найдите Автоматический часовой пояс и переключите на Включено или Включено.
- Перезагрузите Android-устройство.
Решение № 3 — Создание резервных кодов
Коды резервного копирования полезны, когда ваше приложение Google Authenticator не работает или вы теряете свое устройство с приложением. Это номера, которые вы можете использовать для входа в систему. Убедитесь, что у вас есть копии этих резервных кодов, и храните их в непредсказуемом и безопасном месте.
- Чтобы сгенерировать резервные коды на рабочем столе, откройте страницу двухэтапной проверки учетной записи Google. Войдите в свою учетную запись Google.
- Найдите Добавить дополнительные вторые шаги, чтобы подтвердить, что это вы, и нажмите, чтобы открыть.
- Ищите резервные коды.
- Нажмите «Настройка», чтобы настроить резервные коды. Если вы делали это раньше, нажмите Показать коды.
- Скопируйте коды и сохраните их. Вы также можете распечатать их на бумаге и нажать кнопку «Печать».
- Вы можете использовать один из этих резервных кодов за раз. Если вам нужно сгенерировать новые коды, нажмите Получить новые коды.
Как использовать резервные коды
- Когда вас попросят ввести код подтверждения, нажмите Дополнительные параметры.
- Введите один из 8-значных кодов.
Устранение проблемы с кодами, сгенерированными Google Authenticator, поможет поддерживать безопасность ваших учетных записей. Попробуйте описанные выше действия и дайте нам знать в комментариях ниже, как это происходит.