2FA на Linux через Google Authenticator
Почему это важно
Двухфакторная аутентификация (2FA) уменьшает риск доступа к учётным записям при компрометации пароля. Один фактор — это ваш пароль; второй фактор — временный код в приложении на телефоне. Даже если пароль украдут, злоумышленник не сможет войти без кода.

Установите Google Authenticator на Android
Скачайте приложение Google Authenticator из Google Play. Оно генерирует временные коды (TOTP), синхронизированные с секретным ключом, который мы сгенерируем на Linux. Приложение не требует регистрации — только локальное хранение секретов.
Коротко: TOTP — алгоритм одноразовых паролей, меняющий код каждые 30 секунд. Код действителен только короткое время.
Установка компонента на Linux
Установите пакет, который интегрирует PAM (Pluggable Authentication Modules) с Google Authenticator. На Debian/Ubuntu и производных это делается так:
sudo apt install libpam-google-authenticatorЭто добавит модуль pam_google_authenticator.so, который будет запрашивать второй фактор при логине.
См. также: можно применять 2FA отдельно для SSH — по ссылке в исходном материале.

Конфигурация PAM и пользователей
Откройте файл /etc/pam.d/common-auth с правами суперпользователя в любом текстовом редакторе (nano, vim):
sudo nano /etc/pam.d/common-authНайдите строку, обрабатывающую pam_unix.so. На многих системах она выглядит так:
auth [success=1 default=ignore] pam_unix.so nullok_secureДобавьте строку с Google Authenticator непосредственно выше неё:
auth required pam_google_authenticator.soСохраните файл и закройте редактор.
После изменения PAM каждому пользователю системы нужно запустить интерактивную команду для создания пары ключей и «scratch»‑кодов:
google-authenticatorКоманда проведёт через серию вопросов. Рекомендуемые ответы для базовой безопасности: yes, yes, no, no, yes. Разъяснение вопросов:
- Нужно ли обновлять файл .google_authenticator при каждом использовании? (обычно yes)
- Разрешать ли временные сдвиги времени? (yes помогает при лёгкой рассинхронизации)
- Отключить ли использование временных кодов при восстановлении из резервной копии? (обычно no)
После завершения вы получите:
- Секретный ключ (используется для добавления аккаунта в приложение)
- QR‑код (можно отсканировать камерой телефона)
- Набор одноразовых «scratch»‑кодов для аварийного доступа
Важно: сохраните «scratch»‑коды в надёжном и офлайн‑месте (печать, менеджер паролей с шифрованием, безопасная флешка).
Если вы настраиваете учётные записи других пользователей, переключитесь под их имя:
sudo su - otheruser
google-authenticatorНастройка приложения на Android
Откройте Google Authenticator на телефоне. Нажмите Begin → Enter a provided key. Введите удобное имя учётной записи и секретный ключ, который показал скрипт на Linux, либо отсканируйте QR‑код.

После добавления приложение будет генерировать 6‑значные коды. Вводите текущий код вместе с паролем при запросе на вход.

Как это работает в результате
При следующем входе в систему вам сначала предложат ввести обычный пароль, затем — код из приложения. То же самое произойдёт при использовании sudo.


Система станет заметно устойчивее к атакам по подбору пароля и компрометации учётной записи.
Что делать, если потеряли телефон
- Используйте один из сохранённых «scratch»‑кодов для входа и восстановления доступа.
- Если scratch‑коды недоступны, восстановите доступ с помощью резервных администраторских учётных записей или загрузочной среды, чтобы удалить/изменить файл ~/.google_authenticator.
- Для корпоративных сред заранее настройте процедуру восстановления (см. раздел «Чек‑лист для админа»).
Важно: храните минимум один способ восстановления вне телефона (печать, защищённый менеджер паролей).
Альтернативные подходы и когда 2FA по TOTP не подходит
- Аппаратные ключи (U2F/YubiKey) дают более высокий уровень защиты и устойчивы к фишингу. Рекомендуются для критичных систем.
- Authy позволяет синхронизировать секреты между устройствами, но добавляет единый провайдер; оцените риск централизованной синхронизации.
- Для автоматизированных сервисов и скриптов TOTP неудобен — используйте ключи SSH, сертификаты или отдельные сервисные учётные записи.
Когда TOTP не подходит:
- Нет доступа к смартфону и организации резервного доступа.
- Требуется бесконтактная автоматизация без человека.
Безопасность и тонкие места
- PAM‑модуль спрашивает код для интерактивного входа и для sudo. Если вам нужно отключить 2FA для sudo, правьте /etc/pam.d/sudo отдельно (делайте это осознанно).
- Синхронизация времени важна. Если на сервере и телефоне сильно разное время, коды не будут работать.
- Защищайте домашние каталоги и файл ~/.google_authenticator от чтения другими.
Мини‑методология внедрения (быстрый план)
- Тест: настройте 2FA на вспомогательном ненагруженном сервере.
- Подготовьте инструкции и чек‑лист для пользователей.
- Обучите администраторов процедурам восстановления.
- Внедряйте по группам, мониторьте инциденты и поддерживайте обратную связь.
Чек‑лист по ролям
Администратор:
- Установить libpam-google-authenticator.
- Обновить /etc/pam.d/common-auth.
- Настроить процедуру восстановления.
Пользователь:
- Запустить google-authenticator и сохранить scratch‑коды.
- Добавить аккаунт в Google Authenticator.
- Проверить вход и sudo перед рабочим днём.
Критерии приёмки
- Все тестовые учётные записи успешно выполняют вход с паролем + кодом.
- Члены команды подтвердили наличие сохранённых scratch‑кодов.
- Документация по восстановлению доступна и протестирована.
Небольшой глоссарий
- 2FA — двухфакторная аутентификация.
- TOTP — временные одноразовые пароли (Time-based One‑Time Password).
- PAM — модульная система аутентификации в Linux.
- Scratch‑коды — одноразовые аварийные коды для восстановления доступа.
Риски и смягчения
- Потеря телефона → храните scratch‑коды и процедуру восстановления.
- Синхрон времени → используйте NTP для серверов.
- Утечка секретов → храните ~/.google_authenticator с правами 600 и не публикуйте ключи.
Итог
Включение двухфакторной аутентификации с помощью Google Authenticator повышает безопасность Linux‑системы при низкой стоимости внедрения. Это хорошая ступень между паролями и аппаратными ключами. Продумайте восстановление и протестируйте процесс с пользователями.
Важно
- Всегда сохраняйте scratch‑коды в безопасном месте.
- Перед массовым развёртыванием протестируйте настройки и процедуру восстановления.
Конец статьи.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента