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