Описание
При входе в ALT Linux пользователи проходят двухэтапную аутентификацию: вводят логин и пароль (первый фактор) и подтверждают вход с помощью второго фактора (Push-уведомление, TOTP или Telegram-бот).
Для интеграции используется PAM-адаптер Simple2FA, который устанавливается на сервер или рабочую станцию с ALT Linux и взаимодействует с локальным модулем Simple2FA.
Инструкция охватывает следующие сценарии:
- подключение по SSH с паролем;
- подключение по SSH с ключом и вторым фактором;
- подключение по RDP (xRDP).
Схема работы:
- Пользователь входит в систему и вводит логин и пароль.
- PAM-адаптер Simple2FA передаёт учётные данные в локальный модуль Simple2FA.
- Локальный модуль проверяет первый фактор по каталогу пользователей организации (LDAP/AD или Keycloak).
- При успешной проверке первого фактора локальный модуль инициирует проверку второго фактора через облако Simple2FA.
- Пользователь подтверждает вход через Push, TOTP или Telegram-бот.
- После успешной проверки второго фактора сессия предоставляется пользователю.
Для проверки используется логин пользователя ОС. Пользователь с таким логином должен существовать в каталоге организации и в Simple2FA.
Если пароли пользователей локальные (в ALT Linux они хранятся средствами pam_tcb в каталоге /etc/tcb/), используйте режим адаптера skip: пароль проверяется штатными средствами ОС, а Simple2FA выполняет только проверку второго фактора.
Подготовка в Simple2FA
Войдите в административную панель локального модуля Simple2FA. Перейдите в раздел «Настройка ресурсов» и создайте новый ресурс:
- Название: ALT Linux (или любое удобное).
- Протокол: HTTP.
- Проверять первый фактор: включить (при использовании режима адаптера send) или отключить (при использовании режима skip).
- Поставщики учетных записей: для режима send выберите один или несколько каталогов, в которых будет выполняться проверка первого фактора пользователей.
- Использовать кеширование сессий: включить, если необходимо, чтобы у пользователя после успешного входа не запрашивался второй фактор в течение указанного времени.
- Длительность кеша: рекомендуемое значение — 60 минут.
После сохранения ресурса скопируйте его ключ (API key ресурса) — он передаётся PAM-адаптеру в качестве параметра.
В глобальных настройках убедитесь, что:
- указан корректный API key для связи локального модуля с облаком.
Требования
- ОС: ALT Linux.
- Наличие PAM в системе.
- Для сценария SSH — OpenSSH-сервер с поддержкой PAM.
- Для сценария RDP — установленный xRDP.
- Сетевой доступ с машины к локальному модулю Simple2FA.
- Корректное системное время (NTP) на машине и локальном модуле.
- Права root для установки PAM-адаптера и изменения PAM-конфигурации.
Без доступа к локальному модулю двухфакторная аутентификация работать не будет.
Установка PAM-адаптера
Скопируйте модуль simple2fa_pam.so из комплекта поставки в системный каталог модулей PAM вашей системы (например, /lib64/security/ или /lib/security/ — уточните каталог, используемый в вашей версии ОС).
Адаптер настраивается аргументами в строке PAM-конфигурации:
- send / skip — отправлять пароль в Simple2FA или нет (обязательный). В режиме send первый фактор проверяется Simple2FA по каталогу организации; в режиме skip пароль проверяется штатными средствами ОС, а Simple2FA выполняет только проверку второго фактора.
- apiKey — ключ ресурса, созданного в панели Simple2FA (обязательный).
Пример строки подключения адаптера:
auth required simple2fa_pam.so skip <ключ ресурса>
Адрес локального модуля Simple2FA и другие параметры подключения задаются в соответствии с документацией к комплекту поставки адаптера.
Ключ ресурса хранится в файлах PAM-конфигурации в открытом виде — ограничьте доступ к этим файлам и не публикуйте их содержимое.
Исключение группы администраторов из 2FA
Если для отдельной группы (например, localadmins) второй фактор запрашивать не нужно, добавьте перед строкой адаптера стандартный модуль pam_succeed_if:
auth [success=1 default=ignore] pam_succeed_if.so user ingroup localadmins auth required simple2fa_pam.so skip <ключ ресурса>
Для пользователей группы localadmins строка адаптера будет пропущена, для остальных — выполнена. Этот приём применим во всех сценариях ниже.
Оставляйте в группе исключений минимум учётных записей: каждая из них — это вход без второго фактора.
Настройка входа по SSH
1) Добавьте PAM-адаптер в конфигурацию SSH
Добавьте строку PAM-адаптера Simple2FA в файл после штатной проверки пароля (substack system-auth):
/etc/pam.d/sshd
Пример структуры файла:
#%PAM-1.0 auth substack system-auth auth required simple2fa_pam.so skip <ключ ресурса> account substack system-auth password substack system-auth session substack system-auth
2) Проверьте настройки OpenSSH
В ALT Linux конфигурация OpenSSH расположена в каталоге /etc/openssh/. В файле /etc/openssh/sshd_config должны быть включены поддержка PAM и интерактивная аутентификация:
UsePAM yes PasswordAuthentication yes ChallengeResponseAuthentication yes
3) Перезапустите SSH
sudo systemctl restart sshd
SSH-ключ + второй фактор
По умолчанию аутентификация по SSH-ключу выполняется в обход PAM-стека, и второй фактор не запрашивается. Чтобы требовать и ключ, и подтверждение второго фактора, укажите в /etc/openssh/sshd_config цепочку методов:
UsePAM yes
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication yes
# Администраторы — только по ключу, без 2FA
Match group localadmins
AuthenticationMethods publickey
# Все остальные — ключ + второй фактор
Match all
AuthenticationMethods publickey,keyboard-interactive
Порядок блоков Match важен: сначала глобальные настройки, затем Match group localadmins, и в самом конце Match all.
В этом режиме пользователь сначала проходит проверку по ключу, затем PAM-стек с адаптером Simple2FA запрашивает второй фактор. Поскольку пароль при входе по ключу не вводится, используйте для этого сценария режим адаптера skip.
После изменения перезапустите SSH:
sudo systemctl restart sshd
Настройка входа по RDP (xRDP)
При подключении по RDP интерактивный ввод одноразового кода может быть недоступен, поэтому для этого сценария рекомендуется использовать Push-уведомления.
1) Установите и запустите xRDP
sudo apt-get install xrdp sudo systemctl enable --now xrdp
2) Настройте сеанс рабочего стола
В конце файла /etc/xrdp/startwm.sh добавьте строку запуска нужного окружения (например, startxfce4 для XFCE) и перезапустите xRDP:
sudo systemctl restart xrdp
3) Добавьте PAM-адаптер в конфигурацию xRDP
Добавьте строку PAM-адаптера Simple2FA в файл после штатной проверки пароля:
/etc/pam.d/xrdp-sesman
4) Добавьте пользователей в группу tsusers
xRDP в ALT Linux разрешает подключение только членам группы tsusers:
sudo usermod -aG tsusers <имя пользователя>
5) Перезапустите xRDP
sudo systemctl restart xrdp
Проверка работы
- Выполните вход в систему (по SSH или по RDP),
- Введите логин и пароль пользователя (или пройдите проверку по SSH-ключу),
- Дождитесь запроса второго фактора,
- Подтвердите вход через Push, TOTP или Telegram-бот (для RDP рекомендуется Push),
- После успешной проверки сессия будет предоставлена.
Если что-то не работает
Последовательно проверьте, что:
- пользователь с таким логином существует в каталоге организации и в Simple2FA и настроил второй фактор,
- с машины открыт сетевой доступ к локальному модулю Simple2FA,
- в строке PAM указан корректный ключ ресурса,
- пользователь не входит в группу исключений (если она настроена),
- для RDP-подключения пользователь состоит в группе tsusers,
- системное время на машине и локальном модуле синхронизировано,
- в веб-консоли Simple2FA в разделе «Попытки авторизации» отображаются попытки входа и их результат.