Настройка 2FA для Mac OS
Автор Nikita Kim, Last modified by Nikita Kim на 01 августа 2024 03:59 PM

Оглавление

  1. Предварительные требования
  2. Настройка на стороне NPS сервера и Indeed AM
  3. Установка и настройка модуля PAM
  4. Включение PAM в SSH
    1. Настройка 2fa в SSH
    2. Настройка 1fa в SSH
  5. Включение PAM для локального входа
    1. Настройка 2fa для локального входа
    2. Настройка 1fa для локального входа
  6. Включение PAM для VNC подключения
    1. Настройка VNC подключения для Mac OS
    2. Настройка 2fa для VNC подключения
    3. Настройка 1fa для VNC подключения

Предварительные требования

Настройка на стороне Indeed AM NPS RADIUS Extension

  1. В оснастке Network Policy Server необходимо создать новый RADIUS Client, указав имя RADIUS Client’а, IP-адрес и общий секрет:
  2. Нужно также создать сетевую политику с необходимыми для Вас условиями подключения:



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




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



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




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


Установка и настройка модуля PAM

  1. Выполните установку инструментов командной строки XCode:

    xcode-select --install

  2. Выполните установку менеджера сторонних пакетов HomeBrew:

    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  3. Загрузите программу wget:

    $brew install wget

  4. Загрузите исходный код модуля 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

  5. Скомпилируйте модуль:

    $ cd pam_radius-release_2_0_0
    $ ./configure
    $ make

  6. Скопируйте модуль в /usr/local/lib:

    $ cp pam_radius_auth.so /usr/local/lib

  7. Скопируйте файл конфигурации модуля в /etc:

    $ sudo cp /usr/local/lib/pam_radius-release_2_0_0/pam_radius_auth.conf /etc/

  8. Настройте подключение к серверу NPS с модулем NPS RADIUS Extension в файле конфигурации модуля:

    $ sudo nano /etc/pam_radius_auth.conf



    В файле конфигурации лежит секретный ключ. Рекомендуем настроить права доступа к файлу только для учетной записи root:

    $ sudo chmod 0600 /etc/pam_radius_auth.conf

Включение PAM в SSH

  1. Сделайте backup конфигурационного файла “sshd_config:

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

  2. Откройте конфигурационный файл “/etc/ssh/sshd_config” и раскомментируйте строки:

    AuthenticationMethods keyboard-interactive:pam
    ChallengeResponseAuthentication yes
    UsePAM yes



Настройка 2fa в SSH

  1. Сделайте backup конфигурационного файла “sshd”:

    sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup

  2. Добавьте в конфигурационный файл следующую строку:

    auth required /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf



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



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



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

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


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

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



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

Настройка 1fa в SSH

  1. Сделайте backup конфигурационного файла “sshd”:

    sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup

  2. Добавьте в конфигурационный файл следующую строку:

    auth sufficient /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf




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

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



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



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



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



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

Включение PAM для локального входа

Настройка 2fa для локального входа

  1. Сделайте backup конфигурационного файла “authorization”:

    sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization

  2. Откройте конфигурационный файл “/etc/pam.d/authorization”:

    sudo nano /etc/pam.d/system-auth /etc/pam.d/authorization

  3. Добавьте в конфигурационный файл следующую строку:

    auth required /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf

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



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



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



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





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

Настройка 1fa для локального входа

  1. Сделайте backup конфигурационного файла “authorization”:

    sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization

  2. Добавьте в конфигурационный файл следующую строку:

    auth sufficient /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf



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



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



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



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



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



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

Включение PAM для VNC подключения:

Настройка VNC подключения для MAC OS:

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

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

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

  5. После выполненных настроек, к хосту возможно подключение из под VNC-клиента по ip:5900 (5900- стандартный порт для VNC-подключений).

Настройка 2fa для VNC подключения:

  1. Сделайте backup конфигурационного файла “authorization”:

    sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization

  2. Откройте конфигурационный файл “/etc/pam.d/authorization”:

    sudo nano /etc/pam.d/system-auth /etc/pam.d/authorization

  3. Добавьте в конфигурационный файл следующую строку:

    auth required /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf



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

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



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



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

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

Настройка 1fa для VNC подключения:

  1. Сделайте backup конфигурационного файла “authorization”:

    sudo cp /etc/pam.d/system-auth /etc/pam.d/authorization

  2. Добавьте в конфигурационный файл следующую строку:

    auth sufficient /usr/local/lib/pam_radius_auth.so conf=/etc/pam_radius_auth.conf



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



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



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



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





  6. Проверьте аутентификацию локального пользователя:
(2 голос(а))
Эта статья полезна
Эта статья бесполезна