Настройка двухфакторной аутентификации на CentOS

Описание

При входе в CentOS пользователи проходят двухэтапную аутентификацию: вводят логин и пароль (первый фактор) и подтверждают вход с помощью второго фактора (Push-уведомление, TOTP или Telegram-бот).

Для интеграции используется PAM-адаптер Simple2FA, который устанавливается на сервер с CentOS и взаимодействует с локальным модулем Simple2FA.

Инструкция охватывает следующие сценарии:

  • подключение по SSH с паролем;
  • подключение по SSH с ключом и вторым фактором;
  • подключение по RDP (xRDP).

Схема работы:

  1. Пользователь входит в систему и вводит логин и пароль.
  2. PAM-адаптер Simple2FA передаёт учётные данные в локальный модуль Simple2FA.
  3. Локальный модуль проверяет первый фактор по каталогу пользователей организации (LDAP/AD или Keycloak).
  4. При успешной проверке первого фактора локальный модуль инициирует проверку второго фактора через облако Simple2FA.
  5. Пользователь подтверждает вход через Push, TOTP или Telegram-бот.
  6. После успешной проверки второго фактора сессия предоставляется пользователю.

Для проверки используется логин пользователя ОС. Пользователь с таким логином должен существовать в каталоге организации и в 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 в разделе «Попытки авторизации» отображаются попытки входа и их результат.

Смотрите также:

Связаться с нами

Укажите свои контактные данные, и мы свяжемся с вами в ближайшее время, чтобы ответить на все ваши вопросы.

Телефон: +7 (495) 120-01-18

Отдел продаж: sales@simple2fa.ru

Поддержка: support@simple2fa.ru

Заполняя форму, вы соглашаетесь на обработку персональных данных.

Телефон: +7 (495) 150-80-59

Отдел продаж: sales@simple2fa.ru

Поддержка: support@simple2fa.ru