Настройка 2FA для Rosa Linux
Автор Kirill Osipov, Last modified by Kirill Osipov на 09 апреля 2024 02:37 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 для rdp подключения
    1. Настройка 2fa для rdp подключения
    2. Настройка 1fa для rdp подключения
  7. Возможные проблемы и пути решения

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

Настройка на стороне 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. Выполняем обновление списков пакетов (с удалением проблемных пакетов, которые не обновить):
    sudo dnf distro-sync --allowerasing
  2. Выполняем команду (установка требуемых для сборки инструментов):
    sudo dnf install gcc make automake autoconf libtool pam-devel pam -y
  3. Скачиваем pam-модуль нужной версии, в данной инструкции используется версия 1.4.0:
    wget https://freeradius.org/ftp/pub/freeradius/pam_radius-1.4.0.tar.gz
  4. Распаковываем скачанный архив:
    tar -xzvf pam_radius-1.4.0.tar.gz
  5. Переходим в распакованный каталог:
    cd pam_radius-1.4.0 или cd /home/<user>/pam_radius-1.4.0
  6. Выполняем команду:
    sudo ./configure
  7. Выполняем команду:
    sudo make
  8. Скопируем pam_radius_auth.so файл в каталог security:
    1. Для 32-разрядной системы:
      sudo cp pam_radius_auth.so /lib/security/
    2. Для 64-разрядной системы:
      sudo cp pam_radius_auth.so /lib64/security/
  9. Создадим каталог raddb:
    sudo mkdir /etc/raddb/
  10. Копируем конфигурационный файл: “pam_radius_auth.conf” в созданный выше каталог и переименуем его в server:
    sudo cp pam_radius_auth.conf /etc/raddb/server
  11. Отредактируем конфигурационный файл server, добавив ip-адрес NPS сервера, общий секрет, который мы указывали ранее, и таймаут:
    sudo nano /etc/raddb/server

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

  1. Сделаем backup конфигурационного файла “sshd_config:
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
  2. Откроем конфигурационный файл “/etc/ssh/sshd_config” и раскомментируем строки:
    KbdInteractiveAuthentication yes

    UsePAM yes



    Примечание: Чтобы локальные пользователи или определенные пользователи на машине могли выполнять подключение в обход PAM модуля, рекомендуется настроить исключения, например, для локальной группы пользователей. Исключения можно настроить с помощью модуля “pam_succeed_if.so”. В данной инструкции примером группы выступает wheel с локальными администраторами

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

  1. Сделаем backup конфигурационного файла “sshd:
    sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
  2. Откроем конфигурационный файл “/etc/pam.d/sshd”:
    1. Добавим строки:
      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
    2. Закомментируем строки:
      auth required pam_listfile.so item=user sense-deny file=/etc/ssh/denyusers
      auth include system-auth

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

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

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

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

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

  1. Сделаем backup конфигурационного файла “sshd_config:
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
  2. Откроем конфигурационный файл “/etc/pam.d/sshd”:
    1. Добавим строки:
      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
    2. Закомментируем строки:
      auth required pam_listfile.so item=user sense-deny file=/etc/ssh/denyusers
      auth include system-auth

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

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

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

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

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

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

  1. Сделаем backup конфигурационного файла “system-auth:
    sudo cp /etc/pam.d/system-auth  /etc/pam.d/system-auth.backup
  2. Сделаем backup конфигурационного файла “password-auth”:
    sudo cp /etc/pam.d/password-auth  /etc/pam.d/password-auth.backup
  3. Откроем конфигурационный файл “/etc/pam.d/system-auth”:
    1. Закомментируем все строки, начинающиеся на auth.
    2. Добавим строки:
      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

  4. Откроем конфигурационный файл “/etc/pam.d/password-auth”:
    1. Закомментируем все строки, начинающиеся на auth.
    2. Добавим строки:
      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

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

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

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

    2. Вводим TOTP код:

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

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

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

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

  1. Сделаем backup конфигурационного файла “system-auth:
    sudo cp /etc/pam.d/system-auth  /etc/pam.d/system-auth.backup
  2. Сделаем backup конфигурационного файла “password-auth”:
    sudo cp /etc/pam.d/password-auth  /etc/pam.d/password-auth.backup
  3. Откроем конфигурационный файл “/etc/pam.d/system-auth”:
    1. Закомментируем все строки, начинающиеся на auth.
    2. Добавим строки:
      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

  4. Откроем конфигурационный файл “/etc/pam.d/password-auth”:
    1. Закомментируем все строки, начинающиеся на auth.
    2. Добавим строки:
      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
  5. В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём во вкладке “Приложения” выберите метод аутентификации “Программный генератор TOTP”:

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

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

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

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

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

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

В данной инструкции используется модуль xrdp для RDP подключения. Данный модуль не поддерживает отображение окна для ввода OTP, поэтому использование методов аутентификации с вводом ОТП технически невозможно. В сценарии с 2fa возможно использование только Push.

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

  1. Установите и настройте xrdp сервер на машину:
    • sudo dnf install xrdp;
    • В конфигурационном файле /etc/xrdp/sesman.ini закомментируем строки:
      TerminalSeverUsers=tsusers
      TerminalServerAdmins=tsadmins


    • sudo systemctl enable xrdp --now (запустить сервер и добавить в автозапуск)
  2. Сделаем backup конфигурационного файла “xrdp-sesman:
    sudo cp /etc/pam.d/system-auth  /etc/pam.d/xrdp-sesman.backup
  3. Откроем конфигурационный файл “/etc/pam.d/xrdp-sesman”:
    1. Добавим строки:
      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
    2. Закомментируем строку:
      auth optional pam_env.so readenv=1 envfile=/etc/locale.conf
  4. В MC консоли, во вкладке “Политики”, открываем политику, а затем созданное ранее приложение. В нём во вкладке “Приложения” выберите метод аутентификации “Indeed Key”:

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

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

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

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

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

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

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

  1. Установите и настройте xrdp сервер на машину:
    • sudo dnf install xrdp;
    • в конфигурационном файле /etc/xrdp/sesman.ini закомментировать строки:
      TerminalSeverUsers=tsusers
      TerminalServerAdmins=tsadmins

    • sudo systemctl enable xrdp --now (запустить сервер и добавить в автозапуск)
  2. Сделаем backup конфигурационного файла “xrdp-sesman:
    sudo cp /etc/pam.d/system-auth  /etc/pam.d/xrdp-sesman.backup
  3. Откроем конфигурационный файл “/etc/pam.d/xrdp-sesman”:
    1. Добавим строки:
      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
    2. Закомментируем строку:
      auth optional pam_env.so readenv=1 envfile=/etc/locale.conf

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

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

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

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

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

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

Возможные проблемы и пути решения

  1. Не работает авторизация по доменной УЗ.

    • Следует проверить, правильно ли машина была заведена в домен:
      • Перед заведением в домен, нужно задать имя машины в формате FQDN:
        hostnamectl set-hostname rosa.indeed-test.com

      • Команда для ввода в домен:

        sudo realm join --user=admin-indeed 192.168.1.171
        где admin-indeed - УЗ администратора домена, а 192.168.1.171 - ip-адрес контроллера домена


    • Проверить, добавилась ли DNS запись для машины Rosa, если нет, добавить вручную.


    • Включить аутентификацию по Доменной УЗ Windows (в качестве примера Rosa Chrome12):
      Меню запуска приложений - Утилиты - Параметры системы - Аутентификация - Домен Windows.



  2. Проблема с Radius аутентификацией
    • Проверить есть ли запросы в журнале NPS;
    • Проверить открыты ли порты для Radius на клиенте и сервере;
    • Проверить Radius подключение при помощи утилиты Radtest:
      sudo dnf install freeradius-utils
      (установка утилиты)
      radtest admin-indeed pass123 192.168.1.22 1812 secret1
      где admin-indeed - Доменная УЗ, pass123 - пароль от УЗ, 192.168.1.22 - адрес NPS сервера, 1812 - порт для подключения, secret1 - секретный ключ.



  3. Проблема с SSH
    • Просмотр логов ssh: journalctl _COMM=sshd
(1 голос(а))
Эта статья полезна
Эта статья бесполезна