Описание
При входе в CentOS пользователи проходят двухэтапную аутентификацию: вводят логин и пароль (первый фактор) и подтверждают вход с помощью второго фактора (Push-уведомление, TOTP или Telegram-бот).
Для интеграции используется PAM-адаптер Simple2FA, который устанавливается на сервер с CentOS и взаимодействует с локальным модулем Simple2FA.
Инструкция охватывает следующие сценарии:
- подключение по SSH с паролем;
- подключение по SSH с ключом и вторым фактором;
- подключение по RDP (xRDP).
Схема работы:
- Пользователь входит в систему и вводит логин и пароль.
- PAM-адаптер Simple2FA передаёт учётные данные в локальный модуль Simple2FA.
- Локальный модуль проверяет первый фактор по каталогу пользователей организации (LDAP/AD или Keycloak).
- При успешной проверке первого фактора локальный модуль инициирует проверку второго фактора через облако Simple2FA.
- Пользователь подтверждает вход через Push, TOTP или Telegram-бот.
- После успешной проверки второго фактора сессия предоставляется пользователю.
Для проверки используется логин пользователя ОС. Пользователь с таким логином должен существовать в каталоге организации и в Simple2FA.
Подготовка в Simple2FA
Войдите в административную панель локального модуля Simple2FA. Перейдите в раздел «Настройка ресурсов» и создайте новый ресурс:
- Название: CentOS (или любое удобное).
- Протокол: HTTP.
- Проверять первый фактор: включить.
- Поставщики учетных записей: выберите один или несколько каталогов, в которых будет выполняться проверка первого фактора пользователей.
- Использовать кеширование сессий: включить, если необходимо, чтобы у пользователя после успешного входа не запрашивался второй фактор в течение указанного времени.
- Длительность кеша: рекомендуемое значение — 60 минут.
После сохранения ресурса скопируйте его ключ (API key ресурса) — он передаётся PAM-адаптеру в качестве параметра.
В глобальных настройках убедитесь, что:
- указан корректный API key для связи локального модуля с облаком.
Требования
- ОС: CentOS / CentOS Stream.
- Наличие PAM в системе.
- Для сценария SSH — OpenSSH-сервер с поддержкой PAM.
- Для сценария RDP — установленный xRDP.
- Сетевой доступ с машины к локальному модулю Simple2FA.
- Корректное системное время (NTP) на машине и локальном модуле.
- Права root для установки PAM-адаптера и изменения PAM-конфигурации.
Без доступа к локальному модулю двухфакторная аутентификация работать не будет.
Установка PAM-адаптера
Скопируйте модуль simple2fa_pam.so из комплекта поставки в системный каталог модулей PAM:
sudo cp simple2fa_pam.so /usr/lib64/security/
Адаптер настраивается аргументами в строке PAM-конфигурации:
- send / skip — отправлять пароль в Simple2FA или нет (обязательный). В режиме send первый фактор проверяется Simple2FA по каталогу организации; в режиме skip пароль проверяется штатными средствами ОС, а Simple2FA выполняет только проверку второго фактора.
- apiKey — ключ ресурса, созданного в панели Simple2FA (обязательный).
Пример строки подключения адаптера:
auth requisite simple2fa_pam.so send <ключ ресурса>
Адрес локального модуля Simple2FA и другие параметры подключения задаются в соответствии с документацией к комплекту поставки адаптера.
Ключ ресурса хранится в файлах PAM-конфигурации в открытом виде — ограничьте доступ к этим файлам и не публикуйте их содержимое.
Положение строки адаптера в PAM-стеке зависит от выбранного режима работы (send или skip) и конфигурации системы; руководствуйтесь примером из комплекта поставки.
Настройка входа по SSH
1) Добавьте PAM-адаптер в конфигурацию SSH
Добавьте строку PAM-адаптера Simple2FA в файл:
/etc/pam.d/sshd
2) Настройте OpenSSH
В файле /etc/ssh/sshd_config включите поддержку PAM и интерактивную аутентификацию:
UsePAM yes PasswordAuthentication yes KbdInteractiveAuthentication yes AuthenticationMethods keyboard-interactive
3) Перезапустите SSH
sudo systemctl restart sshd
SSH-ключ + второй фактор
По умолчанию аутентификация по SSH-ключу выполняется в обход PAM-стека, и второй фактор не запрашивается. Чтобы требовать и ключ, и подтверждение второго фактора, укажите в /etc/ssh/sshd_config цепочку методов:
UsePAM yes PubkeyAuthentication yes PasswordAuthentication no KbdInteractiveAuthentication yes AuthenticationMethods publickey,keyboard-interactive
В этом режиме пользователь сначала проходит проверку по ключу, затем PAM-стек с адаптером Simple2FA запрашивает второй фактор. Поскольку пароль при входе по ключу не вводится, используйте для этого сценария режим адаптера skip.
После изменения перезапустите SSH:
sudo systemctl restart sshd
Настройка входа по RDP (xRDP)
При подключении по RDP интерактивный ввод одноразового кода может быть недоступен, поэтому для этого сценария рекомендуется использовать Push-уведомления.
1) Установите и запустите xRDP
sudo dnf install epel-release sudo dnf install xrdp sudo systemctl enable --now xrdp
2) Откройте порт RDP
sudo firewall-cmd --permanent --add-port=3389/tcp sudo firewall-cmd --reload
3) Добавьте PAM-адаптер в конфигурацию xRDP
Добавьте строку PAM-адаптера Simple2FA в файл:
/etc/pam.d/xrdp-sesman
4) Перезапустите xRDP
sudo systemctl restart xrdp
Проверка работы
- Выполните вход в систему (по SSH или по RDP),
- Введите логин и пароль пользователя (или пройдите проверку по SSH-ключу),
- Дождитесь запроса второго фактора,
- Подтвердите вход через Push, TOTP или Telegram-бот (для RDP рекомендуется Push),
- После успешной проверки сессия будет предоставлена.
Если что-то не работает
Последовательно проверьте, что:
- пользователь с таким логином существует в каталоге организации и в Simple2FA и настроил второй фактор,
- с машины открыт сетевой доступ к локальному модулю Simple2FA,
- в строке PAM указан корректный ключ ресурса,
- системное время на машине и локальном модуле синхронизировано,
- в веб-консоли Simple2FA в разделе «Попытки авторизации» отображаются попытки входа и их результат.