Termux предоставляет полноценную Linux‑среду на Android‑устройствах. При работе с удалёнными серверами, управлении конфиденциальными данными или выполнении привилегированных команд многофакторная аутентификация (MFA) становится обязательным требованием безопасности. В статье мы разберём два самых популярных подхода к MFA в Termux:
- Одноразовые пароли (OTP) по стандартам
TOTPиHOTPс помощьюgoogle-authenticator; - Аппаратные токены (YubiKey, Nitrokey) через
libpam-u2fиpam-u2f.
Все команды адаптированы под Termux, где пакеты устанавливаются через pkg и apt.
1. Подготовка среды Termux
Перед началом убедитесь, что у вас актуальная версия Termux и репозитории включены:
pkg update && pkg upgrade -y
pkg install -y git curl wget proot-distro
Для работы с PAM нам потребуется установить termux-tools и libpam из репозитория termux:
pkg install -y libpam libpam-dev termux-tools
После установки откройте новый сеанс, чтобы переменные окружения обновились.
2. Настройка OTP (TOTP/HOTP) через Google Authenticator
OTP‑коды генерируются по алгоритму TOTP (Time‑Based One‑Time Password) и хранятся в приложении‑генераторе (Google Authenticator, Authy, Aegis и т.п.).
2.1 Установка пакета
pkg install -y libpam-google-authenticator
2.2 Генерация секретного ключа
Запустите интерактивный мастер, который создаст файл .google_authenticator в домашней директории:
google-authenticator -t -d -f -r 3 -R 30 -w 3
Параметры:
-t— использоватьTOTP;-d— запрещать повторное использование кода;-f— принудительно перезаписать файл, если он существует;-r 3— разрешить 3 попытки ввода;-R 30— блокировать на 30 секунд после неудачных попыток;-w 3— окна влево/вправо (плюс‑минус 3 периода).
Сохраните QR‑код (отображённый в терминале) в приложение‑генератор, либо скопируйте секретный ключ вручную.
2.3 Интеграция с PAM для SSH
Отредактируйте файл /data/data/com.termux/files/usr/etc/pam.d/sshd (если его нет – создайте):
auth required pam_google_authenticator.so nullok
Параметр nullok позволяет пользователям без настроенного OTP входить без кода (удобно для администраторов). При необходимости можно убрать его, чтобы требовать OTP у всех.
2.4 Настройка OpenSSH
Откройте конфигурацию демона SSH:
nano $HOME/.ssh/sshd_config
Убедитесь, что включены следующие директивы:
ChallengeResponseAuthentication yes
UsePAM yes
Перезапустите SSH‑демон (в Termux он запускается как сервис):
sv restart sshd
Теперь при подключении к Termux по SSH будет запрашиваться пароль пользователя, а затем одноразовый код из приложения‑генератора.
3. Аппаратные токены (YubiKey, Nitrokey) через libpam-u2f
Аппаратные токены обеспечивают более высокий уровень защиты, так как требуют физического устройства.
3.1 Установка зависимостей
pkg install -y libu2f-host libu2f-server libpam-u2f
3.2 Регистрация токена
Подключите YubiKey (или совместимый токен) к USB‑OTG‑адаптеру. Затем выполните:
pamu2fcfg > $HOME/.config/u2f_keys
Команда pamu2fcfg запросит касание токена, после чего запишет в файл публичный ключ в формате base64. При необходимости можно добавить несколько токенов, каждый в новой строке.
3.3 Настройка PAM для sudo и ssh
Для sudo откройте /data/data/com.termux/files/usr/etc/pam.d/sudo и добавьте строку:
auth required pam_u2f.so authfile=$HOME/.config/u2f_keys cue
Для SSH‑подключений отредактируйте /data/data/com.termux/files/usr/etc/pam.d/sshd (если уже есть строка с pam_google_authenticator.so, оставьте её – будет использоваться комбинированный MFA):
auth required pam_u2f.so authfile=$HOME/.config/u2f_keys cue
Опция cue заставит PAM вывести инструкцию «Touch your security key». При желании можно добавить debug для журналирования.
3.4 Тестирование
Для проверки работы токена выполните:
sudo -v
После ввода пароля система запросит касание YubiKey. Если всё настроено правильно, привилегия будет предоставлена.
4. Комбинирование OTP и аппаратных токенов
Для максимальной защиты рекомендуется требовать оба фактора – OTP и токен. В файлах PAM порядок строк определяет последовательность запросов. Пример для SSH:
# /data/data/com.termux/files/usr/etc/pam.d/sshd
auth required pam_google_authenticator.so nullok
auth required pam_u2f.so authfile=$HOME/.config/u2f_keys cue
При такой конфигурации пользователь сначала вводит пароль, затем OTP‑код, а в конце – касание токена.
5. Отладка и журналирование
Для диагностики проблем включите детальное логирование PAM:
export PAM_DEBUG=1
Запуск SSH‑сессии с повышенной детализацией:
ssh -vvv user@android-device
Сообщения PAM будут записаны в системный журнал Termux (logcat), который можно просмотреть командой:
logcat | grep pam
Для токенов полезно проверять статус через pamu2fcfg -v.
Заключение
Многофакторная аутентификация в Termux не только повышает безопасность мобильных рабочих станций, но и позволяет интегрировать Android‑устройства в корпоративные политики доступа. Мы рассмотрели настройку OTP‑кодов с помощью google-authenticator и работу с аппаратными токенами через pam_u2f, а также показали, как комбинировать оба метода для SSH и sudo.
Если вам требуется профессиональная настройка MFA, аудит безопасности мобильных Linux‑сред или автоматизация развертывания Termux‑контейнеров, обратитесь в RybinskLab. Мы предоставляем услуги:
- Консультации и обучение по безопасному использованию Termux;
- Разработку кастомных PAM‑модулей и скриптов автоматизации;
- Поддержку и сопровождение инфраструктуры мобильных устройств.
Свяжитесь с нами через сайт rybinsklab.com или по электронной почте info@rybinsklab.com – мы поможем сделать ваш мобильный Linux надёжным и удобным в эксплуатации.