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

Статья описывает подключение второго фактора к входу по SSH и к sudo на Linux-сервере через стандартный модуль pam_radius. Сервер выступает RADIUS-клиентом и обращается напрямую к встроенному RADIUS-серверу локального модуля Simple2FA — устанавливать PAM-адаптер Simple2FA не требуется.

Этот способ подходит, если:

  • на серверах уже установлен и настроен pam_radius (например, при переходе с другого RADIUS-сервера или другой системы 2FA) — достаточно заменить адрес сервера и секрет;
  • политика безопасности запрещает установку стороннего ПО на защищаемые хосты;
  • требуется единая схема подключения Linux-серверов и сетевого оборудования через RADIUS.

Если pam_radius ещё не установлен, рассмотрите PAM-адаптер Simple2FA: он подключается по HTTPS, не требует RADIUS-ресурса и сам запрашивает одноразовый код у пользователя. Сравнение способов — в конце статьи.

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

  1. Пользователь подключается по SSH (или вызывает sudo) и вводит логин и пароль.
  2. Модуль pam_radius отправляет Access-Request на локальный модуль Simple2FA.
  3. Локальный модуль проверяет первый фактор по AD/LDAP или другому поставщику учётных записей.
  4. При успешной проверке инициируется второй фактор (Push-уведомление, Telegram-бот или MAX) через облако Simple2FA.
  5. Пользователь подтверждает вход; локальный модуль возвращает Access-Accept, и сессия открывается.

Подготовка в Simple2FA

Войдите в административную панель локального модуля Simple2FA. Перейдите в раздел «Настройка ресурсов» и создайте новый ресурс:

  • Название: Linux SSH (или любое удобное).
  • Протокол: RADIUS.
  • NAS ID: строка идентификации RADIUS-клиента. Создаётся автоматически; её нужно будет указать в параметре client_id модуля pam_radius.
  • Shared Secret: общий секрет. Создаётся автоматически; используется в файле конфигурации pam_radius.
  • Проверять первый фактор: включить.
  • Поставщики учетных записей: выберите каталоги, в которых выполняется проверка логина и пароля.
  • Использовать кеширование сессий: включить, если второй фактор не должен запрашиваться повторно в течение заданного времени (актуально для sudo).
  • Длительность кеша: рекомендуемое значение — 60 минут.

Один ресурс можно использовать для группы серверов: укажите один и тот же NAS ID и Shared Secret на всех хостах. Если нужна раздельная статистика или разные политики — создайте отдельный ресурс на каждый сервер или группу.

Убедитесь, что с сервера открыт доступ на локальный модуль Simple2FA по UDP 1812.

Установка модуля pam_radius

Имя пакета зависит от дистрибутива.

Astra Linux, Ubuntu, Debian

sudo apt update
sudo apt install libpam-radius-auth

РЕД ОС, CentOS, Rocky, AlmaLinux

sudo dnf install epel-release
sudo dnf install pam_radius

ALT Linux

sudo apt-get update
sudo apt-get install pam_radius

Настройка pam_radius

Создайте файл конфигурации с параметрами RADIUS-сервера Simple2FA:

sudo nano /etc/pam_radius_simple2fa.conf

Содержимое файла — одна строка:

<IP-адрес локального Simple2FA>:1812    <Shared Secret>    40

Где:

  • IP-адрес — адрес локального модуля Simple2FA (или DNS-имя).
  • Shared Secret — из карточки ресурса.
  • 40 — таймаут ожидания ответа в секундах. Значение должно превышать время, которое даётся пользователю на подтверждение Push или Telegram; не используйте значение по умолчанию (3 секунды).

Файл содержит секрет — ограничьте доступ к нему:

sudo chmod 0600 /etc/pam_radius_simple2fa.conf

Важно. В файле должен быть указан только один сервер Simple2FA. При нескольких серверах pam_radius после таймаута повторяет запрос на следующий адрес, что приведёт к повторному Push-уведомлению.

Настройка PAM для SSH

Не закрывайте текущую SSH-сессию до завершения проверки — при ошибке в конфигурации вы сможете откатить изменения.

Откройте файл /etc/pam.d/sshd и добавьте строку вызова модуля первой в секции auth:

auth  sufficient  pam_radius_auth.so  conf=/etc/pam_radius_simple2fa.conf  client_id=<NAS ID>

Где:

  • conf — путь к созданному файлу конфигурации.
  • client_id — NAS ID из карточки ресурса. Передаётся в атрибуте NAS-Identifier, по нему Simple2FA определяет, к какому ресурсу относится запрос.
  • sufficient — при успешном ответе Simple2FA дальнейшие auth-модули не выполняются; при отказе управление переходит к следующим строкам. Чтобы вход был возможен только через Simple2FA, используйте required и закомментируйте стандартную проверку пароля (@include common-auth или auth substack password-auth).

Пример для Astra Linux / Ubuntu (начало файла):

# PAM configuration for the Secure Shell service
auth  required  pam_radius_auth.so  conf=/etc/pam_radius_simple2fa.conf  client_id=<NAS ID>
#@include common-auth
account  required  pam_nologin.so
@include common-account
...

Пример для РЕД ОС / CentOS:

#%PAM-1.0
auth  required  pam_radius_auth.so  conf=/etc/pam_radius_simple2fa.conf  client_id=<NAS ID>
auth  required  pam_sepermit.so
#auth  substack  password-auth
auth  include  postlogin
...

Настройка службы SSHD

Откройте /etc/ssh/sshd_config (для ALT Linux — /etc/openssh/sshd_config) и убедитесь, что включена аутентификация через PAM:

UsePAM yes
KbdInteractiveAuthentication yes
PasswordAuthentication no

В старых версиях OpenSSH вместо KbdInteractiveAuthentication используется ChallengeResponseAuthentication yes.

Если вход выполняется по SSH-ключу и второй фактор должен запрашиваться дополнительно к ключу:

PubkeyAuthentication yes
AuthenticationMethods publickey,keyboard-interactive:pam

В этом случае в строке PAM добавьте параметр skip_passwd — модуль не будет запрашивать пароль и отправит на Simple2FA только запрос второго фактора:

auth  required  pam_radius_auth.so  conf=/etc/pam_radius_simple2fa.conf  client_id=<NAS ID>  skip_passwd

Для такого ресурса в Simple2FA отключите параметр Проверять первый фактор — первым фактором является ключ, проверенный SSH.

Перезапустите службу:

sudo systemctl restart sshd

Настройка PAM для sudo

Откройте /etc/pam.d/sudo и добавьте строку первой в секции auth:

auth  required  pam_radius_auth.so  conf=/etc/pam_radius_simple2fa.conf  client_id=<NAS ID>

Затем закомментируйте стандартную проверку пароля (@include common-auth / auth include system-auth). Для sudo рекомендуется включить кеширование сессий в карточке ресурса, иначе подтверждение будет запрашиваться при каждом вызове.

Проверка работы

  • Не закрывая текущую сессию, откройте новое SSH-подключение с тестовой учётной записью.
  • Введите пароль (первый фактор).
  • Получите Push-уведомление или сообщение Telegram-бота и подтвердите вход.
  • После подтверждения откроется сессия.

Если что-то не работает

  • Пользователь с таким логином существует на Linux-сервере и в поставщике учётных записей Simple2FA.
  • С сервера открыт UDP 1812 на адрес локального модуля; проверьте nc -u -z <IP> 1812 или журнал локального модуля.
  • NAS ID в client_id и Shared Secret в файле конфигурации совпадают с карточкой ресурса.
  • Таймаут в файле конфигурации не меньше 30–40 секунд.
  • В sshd_config включены UsePAM и KbdInteractiveAuthentication.
  • У пользователя настроен способ подтверждения (Push, Telegram или MAX).
  • Проверьте раздел «Попытки авторизации» в административной панели и журнал сервера: journalctl -u sshd или /var/log/auth.log. Для подробной диагностики добавьте к строке PAM параметр debug.

pam_radius или PAM-адаптер Simple2FA

pam_radius PAM-адаптер Simple2FA
Установка на хост Стандартный пакет дистрибутива Модуль Simple2FA
Канал связи RADIUS, UDP 1812 до локального модуля HTTPS до локального модуля
Ресурс в Simple2FA RADIUS: NAS ID и Shared Secret API-ключ
Способы подтверждения Все Все
Ввод кода в терминале Определяется ответом сервера Отдельный промпт модуля
Когда выбирать Модуль уже установлен; запрещено стороннее ПО на хостах; единая RADIUS-схема с сетевым оборудованием Новая установка; нежелателен UDP между сегментами

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

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

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

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

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

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

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

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

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

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