Перейти к содержанию

Двухфакторная аутентификация для группы серверов Linux

Последнее обновление 4 октября 2026Открыть как Markdown

Для защиты большого числа серверов Linux применяется одна из двух схем:

  • Модуль на каждом сервере. PAM-адаптер Simple2FA или модуль pam_radius устанавливается на каждый сервер с одинаковой конфигурацией. Второй фактор запрашивается при входе на любой сервер.
  • Входной сервер (бастион). Модуль устанавливается только на входной сервер, а подключение к остальным серверам разрешается только с него. Второй фактор запрашивается при входе на бастион.

Первая схема защищает каждый сервер, вторая — только вход в сегмент сети, где расположены серверы.

Один ресурс для всех серверов

Создавать отдельный ресурс для каждого сервера не требуется. Ключ ресурса не привязан к серверу, и все серверы используют один и тот же ключ. Для pam_radius действует то же правило: на всех серверах указываются одни и те же NAS ID и Shared Secret.

Отдельный ресурс создаётся только для группы серверов, которой требуются иные настройки ресурса, например другие поставщики учётных записей или ограничения доступа по IP.

Количество серверов не влияет на лицензирование: лицензии учитываются по числу пользователей.

Модуль на каждом сервере

Конфигурация адаптера одинакова на всех серверах: один и тот же файл /etc/simple2fa/s2fa_conf.toml и одна и та же строка адаптера в PAM-стеке. Различаются только имена файлов PAM-стека в разных семействах дистрибутивов — они приведены в инструкциях по системам. Поэтому развёртывание может быть автоматизировано средствами управления конфигурацией: Ansible, SaltStack и аналогичными.

На каждом сервере выполняются следующие действия:

  1. Скопируйте на сервер архив комплекта поставки и распакуйте его.
  2. Запустите ./install.sh от имени root. Установщик не запрашивает ввода; при повторном запуске он заменяет модуль новой версией и не изменяет рабочий файл конфигурации.
  3. Разместите файл /etc/simple2fa/s2fa_conf.toml с правами 0640, владелец — root.
  4. Добавьте строку адаптера в PAM-стек защищаемого сервиса. Положение строки зависит от режима SendPassword — см. Подключите адаптер к PAM-стеку SSH.
  5. Убедитесь, что в конфигурации OpenSSH заданы UsePAM yes и KbdInteractiveAuthentication yes, и перезапустите службу sshd.

Проверка на одном сервере

Ошибка в PAM-стеке блокирует вход на сервер. Выполните настройку на одном сервере и проверьте вход, не закрывая активную сессию root, и только после этого распространяйте конфигурацию на остальные серверы.

Хранение ключа ресурса

Ключ ресурса общий для всех серверов и содержится в файле конфигурации каждого из них. Доступ к файлу ограничивается правами root. Не храните ключ в открытом виде в репозитории сценариев развёртывания — используйте хранилище секретов системы управления конфигурацией, например Ansible Vault.

Входной сервер (бастион)

В этой схеме модуль или pam_radius устанавливается только на входной сервер — бастион (jump host). Подключение по SSH к остальным серверам разрешается только с адреса бастиона, поэтому второй фактор проверяется при входе на бастион.

Настройка

  1. Настройте на бастионе двухфакторную аутентификацию для SSH по инструкции Linux SSH или PAM RADIUS.
  2. Если вход на бастион выполняется по SSH-ключу, укажите в конфигурации OpenSSH AuthenticationMethods publickey,keyboard-interactive. Без этого параметра аутентификация по ключу выполняется в обход PAM-стека, и второй фактор не запрашивается (см. Вход по ключу и второй фактор).
  3. На остальных серверах разрешите подключение по SSH только с адреса бастиона — средствами межсетевого экрана сервера или сети.
  4. Пользователи подключаются к серверам через бастион, например:

    ssh -J <логин>@<бастион> <логин>@<сервер>
    

    Второй фактор запрашивается при подключении к бастиону.

Ограничения схемы

  • Второй фактор проверяется только при входе на бастион. Последующие подключения с бастиона к серверам выполняются без второго фактора.
  • Защищается только вход по SSH через бастион. Локальный вход, вход через xRDP и выполнение команд sudo на серверах второго фактора не требуют; для их защиты модуль устанавливается на сам сервер.
  • Защита обеспечивается запретом прямого доступа. Если сервер доступен по SSH не только с бастиона, вход на него выполняется без второго фактора. После изменения сетевых правил проверяйте, что прямое подключение к серверам по-прежнему закрыто.

Бастион — единая точка входа

При недоступности бастиона подключение к серверам по SSH невозможно. Предусмотрите для администраторов резервный способ доступа, например консоль гипервизора.

Сравнение схем

Модуль на каждом сервере Бастион
Где устанавливается модуль На каждом сервере Только на бастионе
Ресурсов в панели Один на все серверы Один, для бастиона
Когда запрашивается второй фактор При входе на каждый сервер При входе на бастион
sudo, локальный вход, xRDP Могут быть защищены Не защищены
Прямой доступ к серверам Не влияет на защиту Должен быть закрыт

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

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

Подберём сценарий под вашу инфраструктуру, рассчитаем стоимость и запустим бесплатный пилот на 30 дней.

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