Оглавление
- Предварительные требования
- Настройка на стороне NPS сервера и Indeed AM
- Установка и настройка модуля PAM
- Включение PAM в SSH
- Настройка 2fa в SSH
- Настройка 1fa в SSH
- Включение PAM для локального входа
- Настройка 2fa для локального входа
- Настройка 1fa для локального входа
- Включение PAM для VNC подключения
- Настройка VNC подключения для Mac OS
- Настройка 2fa для VNC подключения
- Настройка 1fa для VNC подключения
Предварительные требования
Настройка на стороне 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
- Выполните установку инструментов командной строки XCode:
xcode-select --install
- Выполните установку менеджера сторонних пакетов HomeBrew:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Загрузите программу wget:
$brew install wget
- Загрузите исходный код модуля pam_radius_auth:
$ wget https://github.com/FreeRADIUS/pam_radius/archive/release_2_0_0.tar.gz
$ tar -xzvf release_2_0_0.tar.gz
- Скомпилируйте модуль:
$ cd pam_radius-release_2_0_0
$ ./configure
$ make
- Скопируйте модуль в /usr/local/lib:
$ cp pam_radius_auth.so /usr/local/lib
- Скопируйте файл конфигурации модуля в /etc:
$ sudo cp /usr/local/lib/pam_radius-release_2_0_0/pam_radius_auth.conf /etc/
- Настройте подключение к серверу NPS с модулем NPS RADIUS Extension в файле конфигурации модуля:
$ sudo nano /etc/pam_radius_auth.conf

В файле конфигурации лежит секретный ключ. Рекомендуем настроить права доступа к файлу только для учетной записи root:
$ sudo chmod 0600 /etc/pam_radius_auth.conf
Включение PAM в SSH
- Сделайте backup конфигурационного файла “sshd_config”:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
- Откройте конфигурационный файл “/etc/ssh/sshd_config” и раскомментируйте строки:
AuthenticationMethods keyboard-interactive:pam
ChallengeResponseAuthentication yes
UsePAM yes

Настройка 2fa в SSH
- Сделайте backup конфигурационного файла “sshd”:
sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
- Добавьте в конфигурационный файл следующую строку:
auth required /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf

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

Примечание: Чтобы локальные пользователи на машине могли выполнять подключение в обход pam_radius, необходимо на стороне Indeed AM разрешить доступ пользователям, для которых не заданы параметры доступа в приложение.

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

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

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

- Для использования двухфакторной аутентификации с помощью провайдеров, генерирующих одноразовый код, необходимо настроить политику Challenge\Response: сообщение пользователю:



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

Настройка 1fa в SSH
-
Сделайте backup конфигурационного файла “sshd”:
sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
-
Добавьте в конфигурационный файл следующую строку:
auth sufficient /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf

Примечание: флаг sufficient прервёт цепочку и пропустит пользователя, если модуль вернёт положительное значение. Если значение будет отрицательным - модуль проигнорируется и цепочка продолжится. Т.е. данная настройка позволит аутентифицироваться не только локальным пользователям, но также пользователям домена без аутентификатора и пользователям Indeed по доменному паролю. Для избежания этого, для модуля возможно выставить флаг required и закомментировать следующую строку, в таком случае будет невозможно попасть в систему без аутентификатора, но также это заблокирует доступ локальным пользователям. Для корректной работы цепочки со скриншота необходимо чтобы настройка "Если для пользователя не заданы параметры доступа в приложение" имела значение "Запретить доступ":

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

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

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

Примечание: В поле Password необходимо ввести аутентификатор.

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

Включение PAM для локального входа
Настройка 2fa для локального входа
- Сделайте backup конфигурационного файла “authorization”:
sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization
- Откройте конфигурационный файл “/etc/pam.d/authorization”:
sudo nano /etc/pam.d/system-auth /etc/pam.d/authorization
-
Добавьте в конфигурационный файл следующую строку:
auth required /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf

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

Примечание: Чтобы локальные пользователи на машине могли выполнять подключение в обход pam_radius, необходимо на стороне Indeed AM разрешить доступ пользователям, для которых не заданы параметры доступа в приложение:

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

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


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

Настройка 1fa для локального входа
- Сделайте backup конфигурационного файла “authorization”:
sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization
-
Добавьте в конфигурационный файл следующую строку:
auth sufficient /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf

Примечание: флаг sufficient прервёт цепочку и пропустит пользователя, если модуль вернёт положительное значение. Если значение будет отрицательным - модуль проигнорируется и цепочка продолжится. Т.е. данная настройка позволит аутентифицироваться не только локальным пользователям, но также пользователям домена без аутентификатора и пользователям Indeed по доменному паролю. Для избежания этого, для модуля возможно выставить флаг required и закомментировать следующую строку, в таком случае будет невозможно попасть в систему без аутентификатора, но также это заблокирует доступ локальным пользователям. Для корректной работы цепочки со скриншота необходимо чтобы настройка “Если для пользователя не заданы параметры доступа в приложение” имела значение “Запретить доступ” :

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

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

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

Примечание: В поле Password необходимо ввести аутентификатор.

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

Включение PAM для VNC подключения:
Настройка VNC подключения для MAC OS:
- Установите любой VNC-клиент на машину, с которой планируется подключение.
- Откройте настройки -> Общий доступ:

- Включите настройку “Общий экран” и перейдите в неё. Далее, нажмите “Настройки компьютера”:

- Выберите требуемые Вам настройки. Рекомендуется установить пароль на подключение:

- После выполненных настроек, к хосту возможно подключение из под VNC-клиента по ip:5900 (5900- стандартный порт для VNC-подключений).
Настройка 2fa для VNC подключения:
- Сделайте backup конфигурационного файла “authorization”:
sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization
- Откройте конфигурационный файл “/etc/pam.d/authorization”:
sudo nano /etc/pam.d/system-auth /etc/pam.d/authorization
-
Добавьте в конфигурационный файл следующую строку:
auth required /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf

Примечание: Чтобы локальные пользователи на машине могли выполнять подключение в обход pam_radius, необходимо на стороне Indeed AM разрешить доступ пользователям, для которых не заданы параметры доступа в приложение.
- В MC консоли, во вкладке “Политики”, откройте политику, а затем созданное ранее приложение. В нём, во вкладке “Приложения”, выберите метод аутентификации “Indeed Key” (поскольку окно авторизации в MacOS не поддерживает отображение OTP, Indeed Key является единственным возможным аутентификатором для сценария):

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

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

Настройка 1fa для VNC подключения:
- Сделайте backup конфигурационного файла “authorization”:
sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization
-
Добавьте в конфигурационный файл следующую строку:
auth sufficient /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf

Примечание: флаг sufficient прервёт цепочку и пропустит пользователя, если модуль вернёт положительное значение. Если значение будет отрицательным - модуль проигнорируется и цепочка продолжится. Т.е. данная настройка позволит аутентифицироваться не только локальным пользователям, но также пользователям домена без аутентификатора и пользователям Indeed по доменному паролю. Для избежания этого, для модуля возможно выставить флаг required и закомментировать следующую строку, в таком случае будет невозможно попасть в систему без аутентификатора, но также это заблокирует доступ локальным пользователям. Для корректной работы цепочки со скриншота необходимо чтобы настройка "Если для пользователя не заданы параметры доступа в приложение" имела значение "Запретить доступ":

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

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

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


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

|