Гид по технологиям

Google Authenticator на Ubuntu: как настроить двухфакторную аутентификацию (2FA)

8 min read Безопасность Обновлено 06 Jan 2026
Google Authenticator на Ubuntu: настройка 2FA
Google Authenticator на Ubuntu: настройка 2FA

Изображения используются для иллюстрации шагов — обратите внимание на описания под ними и сохраняйте резервные коды в надёжном месте.

Почему это важно

Война между злоумышленниками и специалистами по информационной безопасности продолжается. Согласно исследованиям Бюро трудовой статистики США (Bureau of Labor Statistics), спрос на специалистов по безопасности растёт быстрее, чем в большинстве других профессий. В повседневной практике простые меры защиты могут значительно снизить вероятность несанкционированного доступа. Двухфакторная аутентификация (2FA) добавляет второй независимый фактор кроме пароля — обычно это одноразовый код из мобильного приложения.

Защита учётной записи: изображение ноутбука с надписью о слабом пароле и «123456»

Изображение: демонстрация слабого пароля на ноутбуке

Важно: 2FA заметно повышает безопасность, но не делает систему неуязвимой. Есть векторы обхода (например, SIM-swap при использовании SMS), поэтому стоит знать альтернативы и меры смягчения рисков.

Основные понятия в одну строку

  • Двухфакторная аутентификация (2FA): проверка личности с помощью двух разных факторов (что-то, что вы знаете + что-то, что вы имеете).
  • TOTP: Time-based One-Time Password — временные одноразовые коды, которые генерирует Google Authenticator.
  • PAM: Pluggable Authentication Modules — система модульной аутентификации в Linux.

Сфера применения и предпосылки

Этот гид подходит для Ubuntu 16.04 (Desktop или Server) и объясняет настройку PAM-модуля libpam-google-authenticator в сочетании с мобильным приложением Google Authenticator (Android или iOS).

Перед началом убедитесь, что:

  • У вас есть локальный или удалённый доступ с правами sudo.
  • У всех пользователей, для которых вы включаете 2FA, есть смартфоны с возможностью установки приложений из Google Play или App Store.
  • Вы понимаете риски временной блокировки и подготовили способ восстановления доступа.

Установка мобильного приложения

Первый этап — мобильная сторона: установите Google Authenticator на смартфон.

Откройте Google Play или App Store, найдите «google authenticator», проверьте издателя (Google Inc.) и установите приложение. После установки откройте приложение и подготовьте его к сканированию QR-кодов.

Установка Google Authenticator на Android, значок и экран запуска установки

Изображение: экран установки приложения Google Authenticator

Установка PAM-модуля на Ubuntu

Откройте терминал на сервере или рабочей станции и выполните установку:

sudo apt-get install libpam-google-authenticator

При необходимости введите пароль и подтвердите установку.

Команда установки libpam-google-authenticator в терминале Ubuntu

Конфигурация PAM

Отредактируйте файл /etc/pam.d/common-auth, чтобы подключить модуль Google Authenticator. Запустите редактор от root:

sudo nano /etc/pam.d/common-auth

Найдите строку, похожую на:

auth [success=1 default=ignore] pam_unix.so nullok_secure

И прямо над ней добавьте строку:

auth required pam_google_authenticator.so

Файл должен выглядеть примерно так (с сохранением оригинальных строк):

Пример файла /etc/pam.d/common-auth в nano с добавленной строкой pam_google_authenticator.so

Сохраните и закройте файл (Ctrl+X, затем Y).

Важное замечание: если у вас в системе есть пользователи, для которых вы не готовы включать 2FA немедленно, рассмотрите возможность использовать параметры pam_google_authenticator.so nullok или настроить исключения, чтобы избежать массовой блокировки доступа. Будьте внимательны: неверные изменения в PAM могут привести к невозможности входа.

Настройка для каждого пользователя

Каждый пользователь, у которого вы хотите требовать 2FA, должен выполнить на своём сеансе команду:

google-authenticator

Команда сгенерирует набор данных и задаст вопросы конфигурации.

При запуске вы увидите:

  • QR-код для сканирования
  • Проверочный одноразовый код (одиноразовый код можно ввести сразу)
  • Секретный ключ (seed)
  • Набор из 5 запасных одноразовых «scratch» кодов

Пример вывода google-authenticator с QR-кодом и запасными кодами в терминале

Рекомендации по ответам на вопросы:

  • Разрешить обновление токенов и синхронизацию времени — рекомендуется отвечать Y.
  • Разрешать одноразовые коды scratch — сохраните их в безопасном месте (бумажный носитель или менеджер паролей с шифрованием).

Ниже приведён примерный набор вопросов и безопасные ответы (по умолчанию Y):

  • Do you want authentication tokens to be time-based? Y
  • Do you want to disallow multiple uses of the same authentication token? Y
  • Do you want to increase the original generation window? N (обычно N)
  • Do you want to enable rate-limiting? Y (защищает от перебора)

Не закрывайте терминал, пока не сохраните ключи или не отсканируете QR-код в приложение.

Настройка мобильного приложения

В приложении Google Authenticator выберите «Начать» или нажмите плюс, затем «Сканировать штрих-код» и отсканируйте QR-код в терминале. Если камера не распознаёт код, выберите «Ввести предоставленный ключ» и вручную введите секретный ключ, после чего укажите понятное имя учётной записи (например, user@hostname).

После добавления учётной записи приложение начнёт показывать шестизначные коды с таймером — эти коды действительны короткий промежуток времени и используются при логине.

Добавленная учётная запись в Google Authenticator на Android, список аккаунтов и коды

Тестирование входа и sudo

Протестируйте работу для второго пользователя. Например, смените пользователя в терминале:

sudo su slaghoople

При попытке выполнить команду требующую sudo вы увидите запрос одноразового кода. Откройте приложение на телефоне, введите текущий шестизначный код и затем ваш sudo-пароль.

Запустите также команду google-authenticator для нового пользователя и добавьте его учётную запись в мобильном приложении (укажите имя, например, slaghoople).

С этого момента при локальном входе и выполнении sudo (если PAM настроен) будет требоваться код из мобильного приложения.

Пример запроса кода при sudo и проверке входа

Запрос sudo в терминале Ubuntu

Важные дополнительные настройки для удалённого SSH-доступа

Если вы хотите требовать 2FA при входе по SSH, добавьте или проверьте в /etc/ssh/sshd_config следующие опции:

  • ChallengeResponseAuthentication yes
  • UsePAM yes

При SSH-конфигурации можно также комбинировать методы авторизации:

  • AuthenticationMethods publickey,keyboard-interactive

Это заставит сначала пройти проверку по ключу, а затем по двухфакторной форме. После изменения конфигурации перезапустите SSH:

sudo systemctl restart ssh

При работе с удалённым сервером: НЕ закрывайте текущую сессию до тех пор, пока не подтвердите, что новые соединения проходят успешно. В противном случае вы можете потерять доступ.

Устранение проблем и план отката

Возможные проблемы:

  • Потеря смартфона или приложение удалено: используйте сохранённые scratch-коды для доступа.
  • Блокировка входа для всех пользователей: загрузитесь в режим восстановления (single-user mode) или используйте live-образ, смонтируйте диск и удалите/закомментируйте строку pam_google_authenticator.so из /etc/pam.d/common-auth.
  • Неверное время на сервере или телефоне: TOTP зависит от синхронизированного времени. Проверьте системное время и синхронизацию NTP.

План отката (короткая инструкция):

  1. Получить доступ к серверу через физическую консоль или режим восстановления.
  2. Отключить строку pam_google_authenticator.so в /etc/pam.d/common-auth.
  3. Перезагрузить систему и войти штатно.
  4. Повторно настроить 2FA после исправления причины блокировки.

Меры безопасности и жёсткая конфигурация

  • Файл ~/.google_authenticator хранит секрет и настройки. Убедитесь, что его права = 600: chmod 600 ~/.google_authenticator.
  • Храните scratch-коды в офлайн-хранилище (бумага в сейфе) или в зашифрованном менеджере паролей.
  • Включите rate-limiting (ответить Y при настройке), чтобы ограничить перебор кодов.
  • Регулярно проверяйте журналы аутентификации (/var/log/auth.log) на предмет подозрительных попыток.
  • Используйте аппаратные ключи (U2F/FIDO) для особо критичных серверов.

Альтернативные подходы и когда они подходят

  • Аппаратные токены (YubiKey, FIDO2): более устойчивы к фишингу и атакам типа SIM-swap — подходят для высокозащищённых систем.
  • Authy и другие приложения: позволяют резервное копирование учётных записей в облаке (удобно, но требует дополнительной защиты аккаунта поставщика резервного копирования).
  • SMS 2FA: удобна, но уязвима к SIM-swap и перехвату — не рекомендуется для критичных систем.

Когда 2FA может не помочь

  • Если злоумышленник контролирует устройство аутентификации (компрометация телефона), TOTP станет бесполезным.
  • Фишинг, где пользователь вводит код в злонамеренную страницу, может позволить атакующему использовать код в реальном времени.

Роли и контрольный список (быстрый чек)

Администратор:

  • Установить libpam-google-authenticator на каждом сервере.
  • Настроить PAM и протестировать на пилотных учётных записях.
  • Обновить политику восстановления и задокументировать процедуру отката.

Обычный пользователь:

  • Установить Google Authenticator на смартфон.
  • Запустить google-authenticator и отсканировать QR.
  • Сохранить scratch-коды в надёжном месте.

DevOps/оператор:

  • Проверить SSH-конфигурацию и NTP.
  • Перезапустить ssh после изменений, тестируя с новой сессией.
  • Мониторить /var/log/auth.log и настраивать оповещения.

Матрица сравнения (коротко)

  • Google Authenticator (TOTP): бесплатно, просто, требует смартфона.
  • SMS: просто, но менее безопасно (риски SIM-swap).
  • U2F/FIDO: самый безопасный вариант для защиты от фишинга, требует аппаратного ключа и поддержки сервиса.

Критерии приёмки

  • Все целевые пользователи добавлены в Google Authenticator и успешно проходят проверку при входе.
  • При выполнении sudo в системе требуется 2FA-код.
  • SSH-подключения сохраняют доступность для администраторов и не вызывают массовых блокировок.
  • Документирован и протестирован план восстановления доступа.

Тестовые сценарии и приёмочные тесты

  • Локальный вход: пользователь вводит пароль и код — успешный вход.
  • sudo: пользователь вводит код после пароля — команда выполняется.
  • SSH: новая сессия требует 2FA, при этом существующая сессия остаётся активной.
  • Потеря телефона: пользователь использует scratch-код и восстанавливает доступ.

Конфиденциальность и соответствие

Секреты TOTP хранятся локально в файле ~/.google_authenticator и не передаются третьим лицам. При использовании облачных бэкапов (например, у Authy) удостоверьтесь, что выбранный сервис соответствует вашим требованиям по обработке персональных данных и требованиям локального законодательства.

Советы и эвристики

  • Всегда сначала тестируйте на непродуктивной машине или в отдельной учётной записи.
  • Не отключайте существующие методы доступа до подтверждения работоспособности 2FA.
  • Храните один запасной способ восстановления офлайн.

Короткое резюме

Настройка Google Authenticator на Ubuntu — это эффективный и относительно простой способ значительно повысить безопасность системы. Процесс включает установку libpam-google-authenticator, подключение PAM-модуля, генерацию ключей для каждого пользователя и добавление аккаунтов в мобильное приложение. Не забудьте про тестирование, защиту файлов с секретами и план восстановления.

Изображение: пример слабого пароля на ноутбуке

Image credit: designer491 via Shutterstock

Изображение: авторская фотография предоставлена Dave Clark Digital Photo via Shutterstock.com

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство