Двухфакторная аутентификация для группы серверов Linux
Для защиты большого числа серверов Linux применяется одна из двух схем:
- Модуль на каждом сервере. PAM-адаптер Simple2FA или модуль pam_radius устанавливается на каждый сервер с одинаковой конфигурацией. Второй фактор запрашивается при входе на любой сервер.
- Входной сервер (бастион). Модуль устанавливается только на входной сервер, а подключение к остальным серверам разрешается только с него. Второй фактор запрашивается при входе на бастион.
Первая схема защищает каждый сервер, вторая — только вход в сегмент сети, где расположены серверы.
Один ресурс для всех серверов
Создавать отдельный ресурс для каждого сервера не требуется. Ключ ресурса не привязан к серверу, и все серверы используют один и тот же ключ. Для pam_radius действует то же правило: на всех серверах указываются одни и те же NAS ID и Shared Secret.
Отдельный ресурс создаётся только для группы серверов, которой требуются иные настройки ресурса, например другие поставщики учётных записей или ограничения доступа по IP.
Количество серверов не влияет на лицензирование: лицензии учитываются по числу пользователей.
Модуль на каждом сервере
Конфигурация адаптера одинакова на всех серверах: один и тот же файл /etc/simple2fa/s2fa_conf.toml и одна и та же строка адаптера в PAM-стеке. Различаются только имена файлов PAM-стека в разных семействах дистрибутивов — они приведены в инструкциях по системам. Поэтому развёртывание может быть автоматизировано средствами управления конфигурацией: Ansible, SaltStack и аналогичными.
На каждом сервере выполняются следующие действия:
- Скопируйте на сервер архив комплекта поставки и распакуйте его.
- Запустите
./install.shот имени root. Установщик не запрашивает ввода; при повторном запуске он заменяет модуль новой версией и не изменяет рабочий файл конфигурации. - Разместите файл
/etc/simple2fa/s2fa_conf.tomlс правами0640, владелец — root. - Добавьте строку адаптера в PAM-стек защищаемого сервиса. Положение строки зависит от режима
SendPassword— см. Подключите адаптер к PAM-стеку SSH. - Убедитесь, что в конфигурации OpenSSH заданы
UsePAM yesиKbdInteractiveAuthentication yes, и перезапустите службуsshd.
Проверка на одном сервере
Ошибка в PAM-стеке блокирует вход на сервер. Выполните настройку на одном сервере и проверьте вход, не закрывая активную сессию root, и только после этого распространяйте конфигурацию на остальные серверы.
Хранение ключа ресурса
Ключ ресурса общий для всех серверов и содержится в файле конфигурации каждого из них. Доступ к файлу ограничивается правами root. Не храните ключ в открытом виде в репозитории сценариев развёртывания — используйте хранилище секретов системы управления конфигурацией, например Ansible Vault.
Входной сервер (бастион)
В этой схеме модуль или pam_radius устанавливается только на входной сервер — бастион (jump host). Подключение по SSH к остальным серверам разрешается только с адреса бастиона, поэтому второй фактор проверяется при входе на бастион.
Настройка
- Настройте на бастионе двухфакторную аутентификацию для SSH по инструкции Linux SSH или PAM RADIUS.
- Если вход на бастион выполняется по SSH-ключу, укажите в конфигурации OpenSSH
AuthenticationMethods publickey,keyboard-interactive. Без этого параметра аутентификация по ключу выполняется в обход PAM-стека, и второй фактор не запрашивается (см. Вход по ключу и второй фактор). - На остальных серверах разрешите подключение по SSH только с адреса бастиона — средствами межсетевого экрана сервера или сети.
-
Пользователи подключаются к серверам через бастион, например:
ssh -J <логин>@<бастион> <логин>@<сервер>Второй фактор запрашивается при подключении к бастиону.
Ограничения схемы
- Второй фактор проверяется только при входе на бастион. Последующие подключения с бастиона к серверам выполняются без второго фактора.
- Защищается только вход по SSH через бастион. Локальный вход, вход через xRDP и выполнение команд
sudoна серверах второго фактора не требуют; для их защиты модуль устанавливается на сам сервер. - Защита обеспечивается запретом прямого доступа. Если сервер доступен по SSH не только с бастиона, вход на него выполняется без второго фактора. После изменения сетевых правил проверяйте, что прямое подключение к серверам по-прежнему закрыто.
Бастион — единая точка входа
При недоступности бастиона подключение к серверам по SSH невозможно. Предусмотрите для администраторов резервный способ доступа, например консоль гипервизора.
Сравнение схем
| Модуль на каждом сервере | Бастион | |
|---|---|---|
| Где устанавливается модуль | На каждом сервере | Только на бастионе |
| Ресурсов в панели | Один на все серверы | Один, для бастиона |
| Когда запрашивается второй фактор | При входе на каждый сервер | При входе на бастион |
sudo, локальный вход, xRDP |
Могут быть защищены | Не защищены |
| Прямой доступ к серверам | Не влияет на защиту | Должен быть закрыт |