Оглавление
- Предварительные требования
- Настройка на стороне NPS сервера и Indeed AM
- Установка и настройка модуля PAM
- Включение PAM в SSH
- Настройка 2fa в SSH
- Настройка 1fa в SSH
- Включение PAM для локального входа
- Настройка 2fa для локального входа
- Настройка 1fa для локального входа
- Включение PAM для rdp подключения
- Настройка 2fa для rdp подключения
- Настройка 1fa для rdp подключения
Предварительные требования
Настройка на стороне Indeed AM NPS RADIUS Extension
- В оснастке Network Policy Server необходимо создать новый RADIUS Client, указав имя RADIUS Client’а, IP-адрес и общий секрет:

- Нужно также создать сетевую политику с необходимыми для Вас условиями подключения:

- Создадим новое приложение. В MC консоли, во вкладке “Приложения” нажмите кнопку “Добавить приложение”, в появившемся окне выберите модуль интеграции NPS RADIUS Extension и задайте название после чего, нажмите кнопку “Создать”:


- Откройте созданное приложение, укажите IP-адрес RADIUS Client’а (тот же самый IP-адрес, что мы указывали в оснастке NPS) и нажмите сохранить:

- Далее откройте в MC консоли вкладку “Политики”, выберите политику (либо, если её нет, то создайте, а затем выберите её), нажмите кнопку “Добавить приложение” и выберите созданное ранее приложение:


- Во вкладке “Область действия” добавьте пользователей (можно также добавить группу из AD или каталог), которые в дальнейшем будут аутентифицироваться через Indeed AM:

Установка и настройка модуля PAM
- Выполняем обновление списков пакетов:
dnf -y update
- Выполняем команду:
sudo dnf install gcc pam pam-devel make -y
- Скачиваем pam-модуль нужной версии, в данной инструкции используется версия 1.4.0:
wget https://freeradius.org/ftp/pub/freeradius/pam_radius-1.4.0.tar.gz
- Распаковываем скачанный архив:
tar -xzvf pam_radius-1.4.0.tar.gz
- Переходим в распакованный каталог:
cd pam_radius-1.4.0
- Выполняем команду:
sudo ./configure
- Выполняем команду:
sudo make
- Скопируем pam_radius_auth.so файл в каталог security:
- Для 32-разрядной системы:
sudo cp pam_radius_auth.so /lib/security/
- Для 64-разрядной системы:
sudo cp pam_radius_auth.so /lib64/security/
- Создадим каталог raddb:
sudo mkdir /etc/raddb/
- Копируем конфигурационный файл: “pam_radius_auth.conf” в созданный выше каталог и переименуем его в server:
sudo cp pam_radius_auth.conf /etc/raddb/server
- Отредактируем конфигурационный файл server, добавив ip-адрес NPS сервера, общий секрет, который мы указывали ранее, и таймаут:
sudo nano /etc/raddb/server

Включение PAM в SSH
- Сделаем backup конфигурационного файла “sshd_config”:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
- Откроем конфигурационный файл “/etc/ssh/sshd_config” и раскомментируем строки:
KbdInteractiveAuthentication yes
UsePAM yes
В некоторых версия:
ChallengeResponseAuthentication yes
UsePAM yes
Примечание: Чтобы локальные пользователи или определенные пользователи на машине могли выполнять подключение в обход PAM модуля, рекомендуется настроить исключения, например, для локальной группы пользователей. Исключения можно настроить с помощью модуля “pam_succeed_if.so”. В данной инструкции примером группы выступает wheel с локальными администраторами
Настройка 2fa в SSH
- Сделаем backup конфигурационного файла “sshd”:
sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
- Откроем конфигурационный файл “/etc/pam.d/sshd”:
- Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_radius_auth.so
- Закомментируем строку:
auth substack password-auth

- Перезапускаем службу sshd:
sudo systemctl restart sshd
- В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём, во вкладке “Приложения”, выберите метод аутентификации “2FA: Windows Password + Software TOTP” (в данном сценарии у пользователя заранее должен быть зарегистрирован аутентификатор Software TOTP и настроена политика Challenge\Response: сообщение пользователю):

- В оснастке NPS должна быть включена настройка “Проверять подлинность запросов на этом сервере”:

- Проверим подключение доменного пользователя:

- Проверим подключение локального пользователя системы RedOS:

Настройка 1fa в SSH
- Сделаем backup конфигурационного файла “sshd_config”:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
- Откроем конфигурационный файл “/etc/pam.d/sshd”:
- Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass auth required pam_radius_auth.so skip_passwd
- Закомментируем строку:
auth substack password-auth

- Перезапускаем службу sshd:
sudo systemctl restart sshd
- В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём во вкладке “Приложения” выберите метод аутентификации “2FA: Windows Password + Software TOTP” (в данном сценарии у пользователя заранее должен быть зарегистрирован аутентификатор Software TOTP и настроена политика Challenge\Response: сообщение пользователю):

- В оснастке NPS должна быть включена настройка “Принимать пользователей без проверки учетных данных”:

- Проверим подключение доменного пользователя:

- Проверим подключение локального пользователя системы RedOS:

Включение PAM для локального входа
Настройка 2fa для локального входа
- Сделаем backup конфигурационного файла “system-auth”:
sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.backup
- Сделаем backup конфигурационного файла “password-auth”:
sudo cp /etc/pam.d/password-auth /etc/pam.d/password-auth.backup
- Откроем конфигурационный файл “/etc/pam.d/system-auth”:
- Закомментируем все строки, начинающиеся на
auth .
Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_radius_auth.so

- Откроем конфигурационный файл “/etc/pam.d/password-auth”:
- Закомментируем все строки, начинающиеся на
auth .
Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_radius_auth.so

- В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём во вкладке “Приложения” выберите метод аутентификации “2FA: Windows Password + Software TOTP” (в данном сценарии у пользователя заранее должен быть зарегистрирован аутентификатор Software TOTP и настроена политика Challenge\Response: сообщение пользователю):

- В оснастке NPS должна быть включена настройка “Проверять подлинность запросов на этом сервере”:

- Проверим аутентификацию доменного пользователя:
- Вводим доменный пароль:

- Вводим TOTP код:

- Аутентификация прошла успешно:

- Проверим аутентификацию локального пользователя системы RedOS:
- Вводим пароль локального пользователя:

- Аутентификация прошла успешно:

Настройка 1fa для локального входа
- Сделаем backup конфигурационного файла “system-auth”:
sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.backup
- Сделаем backup конфигурационного файла “password-auth”:
sudo cp /etc/pam.d/password-auth /etc/pam.d/password-auth.backup
- Откроем конфигурационный файл “/etc/pam.d/system-auth”:
- Закомментируем все строки, начинающиеся на
auth .
Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_radius_auth.so

- Откроем конфигурационный файл “/etc/pam.d/password-auth”:
- Закомментируем все строки, начинающиеся на
auth .
Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_radius_auth.so

- В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём во вкладке “Приложения” выберите метод аутентификации “Программный генератор TOTP”:

- В оснастке NPS должна быть включена настройка “Принимать пользователей без проверки учетных данных”:

- Проверим аутентификацию доменного пользователя:
- Вводим TOTP код вместо пароля:

- Аутентификация прошла успешно:

- Проверим аутентификацию локального пользователя системы RedOS:
- Вводим пароль локального пользователя:

- Аутентификация прошла успешно:

Включение PAM для rdp подключения
В данной инструкции используется модуль xrdp для RDP подключения. Данный модуль не поддерживает отображение окна для ввода OTP, поэтому использование методов аутентификации с вводом ОТП технически невозможно. В сценарии с 2fa возможно использование только Push.
Настройка 2fa для rdp подключения
- Установите и настройте xrdp сервер на машину по инструкции из документации RedOS.
- Сделаем backup конфигурационного файла “xrdp-sesman”:
sudo cp /etc/pam.d/xrdp-sesman /etc/pam.d/xrdp-sesman.backup
- Откроем конфигурационный файл “/etc/pam.d/xrdp-sesman”:
- Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_radius_auth.so
- Закомментируем строку:
auth include password-auth

- В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём во вкладке “Приложения” выберите метод аутентификации “Indeed Key”:

- В оснастке NPS должна быть включена настройка “Проверять подлинность запросов на этом сервере”:

- Проверим аутентификацию доменного пользователя:
- Вводим имя доменного пользователя и пароль:

- Ожидаем Push-уведомление на телефоне и подтверждаем его:

- Аутентификация прошла успешно:

- Проверим аутентификацию локального пользователя системы RedOS:
- Вводим имя локального пользователя и его пароль:

- Аутентификация прошла успешно:

Настройка 1fa для rdp подключения
- Установите и настройте xrdp сервер на машину по инструкции из документации RedOS.
- Сделаем backup конфигурационного файла “xrdp-sesman”:
sudo cp /etc/pam.d/xrdp-sesman /etc/pam.d/xrdp-sesman.backup
- Откроем конфигурационный файл “/etc/pam.d/xrdp-sesman”:
- Добавим строки:
auth [success=2 default=ignore] pam_succeed_if.so user notingroup wheel
auth [success=ok default=ignore] pam_localuser.so auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth required pam_radius_auth.so
- Закомментируем строку:
auth include password-auth

- В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём во вкладке “Приложения” выберите метод аутентификации “Программный генератор TOTP”:

- В оснастке NPS должна быть включена настройка “Принимать пользователей без проверки учетных данных”:

- Проверим аутентификацию доменного пользователя:
- Вводим имя доменного пользователя и TOTP код вместо пароля:

- Аутентификация прошла успешно:

- Проверим аутентификацию локального пользователя системы RedOS:
- Вводим имя локального пользователя и его пароль:

- Аутентификация прошла успешно:

|