We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Разработка многофакторной аутентификации на Android‑устройствах через Termux и PAM

Многофакторная аутентификация (MFA) становится обязательным элементом защиты мобильных устройств. В этой статье мы покажем, как запустить процесс разработки MFA на Android, используя терминальное окружение Termux и подсистему аутентификации PAM. Для начала, обратимся к базовому определению глагола start, которое подчеркивает смысл «начинать» любой процесс: cambridge.org, merriam-webster.com, dictionary.com.

Что такое Termux?

Termux – это эмулятор терминала для Android, предоставляющий полноценный Linux‑окружение без root‑прав. Он позволяет устанавливать пакеты через pkg и apt, что делает его идеальной платформой для развертывания серверных компонентов непосредственно на смартфоне.

Обзор PAM (Pluggable Authentication Modules)

PAM – гибкая система модульной аутентификации, используемая в большинстве Unix‑подобных ОС. С помощью PAM можно добавить любые методы проверки подлинности, включая OTP, TOTP, YubiKey и биометрические данные.

Подготовка окружения в Termux

pkg update && pkg upgrade -y
pkg install git clang make openssl-dev libffi-dev python python-pip -y
pip install --upgrade pip setuptools wheel

Эти команды обновят репозитории и установят необходимые инструменты для компиляции PAM‑модулей.

Установка PAM и необходимых модулей

# Клонируем репозиторий PAM (пример для libpam)
git clone https://github.com/linux-pam/linux-pam.git
cd linux-pam
./configure --prefix=$PREFIX
make -j$(nproc)
make install

После установки базовой библиотеки можно добавить модуль pam_google_authenticator для генерации TOTP‑кодов.

git clone https://github.com/google/google-authenticator-libpam.git
cd google-authenticator-libpam
./configure --prefix=$PREFIX
make -j$(nproc)
make install

Создание пользовательского PAM‑профиля для MFA

Создаём файл /etc/pam.d/termux-mfa со следующей конфигурацией:

auth    required    pam_unix.so nullok
auth    required    pam_google_authenticator.so nullok

Эта конфигурация сначала проверяет пароль через стандартный pam_unix, а затем требует ввод одноразового кода из Google Authenticator.

Регистрация пользователя в системе Google Authenticator

google-authenticator -t -d -f -r 3 -R 30 -w 3

Опции:

  • -t – использовать тайм‑базированные коды (TOTP).
  • -d – отключить ограничение по количеству попыток.
  • -f – записать секретный ключ в файл .google_authenticator в домашнем каталоге.
  • -r 3 – разрешить 3 попытки ввода кода.
  • -R 30 – окно в 30 секунд.
  • -w 3 – резервные коды.

Интеграция MFA в Android‑приложения

Для проверки аутентификации из пользовательского скрипта используем pam-auth-update и утилиту su (в Termux доступно без root). Пример скрипта mfa_login.sh:

#!/data/data/com.termux/files/usr/bin/bash
read -p "Password: " -s passwd
export PAM_USER=$USER
export PAM_AUTHTOK=$passwd
if pam-auth-update --package termux-mfa; then
    echo "
Authentication successful"
else
    echo "
Authentication failed"
fi

Скрипт запрашивает пароль, передаёт его PAM, а затем PAM проверяет OTP, указанный в .google_authenticator.

Тестирование и отладка

Для отладки используем режим повышенной детализации:

export PAM_DEBUG=1
./mfa_login.sh

Логи появятся в терминале, позволяя быстро найти ошибку конфигурации.

Безопасность и лучшие практики

  • Храните файл .google_authenticator в зашифрованном контейнере (cryptsetup).
  • Регулярно обновляйте пакеты Termux (pkg upgrade -y).
  • Ограничьте доступ к PAM‑модулям через chmod 600 файлы конфигурации.
  • Рассмотрите возможность добавления pam_u2f для поддержки аппаратных токенов (YubiKey).

Заключение

Мы продемонстрировали, как начать (start) процесс разработки MFA на Android‑устройствах, используя Termux и PAM. Такая конфигурация позволяет добавить уровень защиты, сравнимый с корпоративными решениями, непосредственно на мобильный телефон без необходимости в рут‑правах.

RybinskLab предлагает профессиональные услуги по настройке и поддержке MFA‑решений на Android, включая кастомные PAM‑модули, аудит безопасности и обучение персонала. Свяжитесь с нами для получения индивидуального решения, которое начнёт защищать ваш бизнес уже сегодня.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной
Поддержать проект