Настройка 2FA для Astra Linux
Автор Vladislav Fomichev, Last modified by Mariya Vorozhba на 22 февраля 2024 11:39 PM

Оглавление

    1. Настройка 2fa для входа в Astra Linux
    2. Настройка 1fa для входа в Astra Linux

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

  1. Машина с OC Astra в домене. 
    1. Настройка в данной инструкции выполнялась на Astra Linux 1.7.
  2. Настроенные компоненты Индид: Сервер и NPS Radius Extension. 
    1. Для использования аутентификации с помощью Push также требуется и Indeed Key сервер.

            3. Выполнена установка и настройка роли Служба политики сети и доступа (Network Policy and Access Services (NPS)),
                возможна установка роли на сервере Indeed AM.

                Создана сетевая политика, политика запросов на подключение, определен метод аутентификации по умолчанию.
                Можно указать подсеть (ip/24) для диапазона клиентов Radius (Linux ПК)

Подключение репозитория Debian

  1. Выполните обновление списков пакетов: sudo apt update
  2. На текущий момент Astra Linux не имеет собственного пакета PAM(Pluggable Authentication Modules), поэтому необходимо подключить репозиторий Debian. Подключение репозиториев - это нормальная практика, рекомендуемая в официальной документации Astra: ссылка
  3. Для подключения репозитория необходимо первоначально сконфигурировать ключи, чтобы была возможность выгрузить пакеты. Это можно сделать 2-мя способами: 

Автоматически, с установкой пакета debian-archive-keyring

    1. Установите пакет dirmngr для управления ключами и пакет debian-archive-keyring, содержащий ключи к репозиториям Debian: sudo apt install debian-archive-keyring dirmngr
    2. Если возникает ошибка “Пакет debian-archive-keyring недоступен, но упомянут в списке зависимостей другого пакета. Это может значит, что пакет отсутствует, устарел или доступен из источников, не упомянутых в sources.list” следующего вида или аналогичная, необходимо добавить репозитории debian в файл с зависимостями. Для этого выполните команды:
      1. Добавим ссылку о репозитории Debian: echo deb https://archive.debian.org/debian/ stretch main contrib non-free | sudo tee -a /etc/apt/sources.list
    3. После добавления обновите пакеты командой: sudo apt update
    4. При возникновении ошибки: “Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY 04EE7237B7D453EC NO_PUBKEY 648ACFD622F3D138 NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY EF0F382A1A7B6500” перейти к ручной настройке

      В ручном режиме, с конфигурацией ключей 

      1. Установить пакет dirmngr (если он ранее не был установлен): sudo apt install dirmngr
      2. Для получения ключа выполните: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com EF0F382A1A7B6500
        1. При наличии доступа к сети Интернет использовать команду apt-key с указанием нужного отпечатка ключа. На текущий момент ключ: EF0F382A1A7B6500. Ключ может измениться, тогда при обновлении пакетов “apt update” будет ошибка, где можно посмотреть какой ключ требуется   
      3. Для работы в закрытой сети можно получить ключ через WEB-интерфейс на подключенной к Интернет машине по адресу репозитория (keyserver.ubuntu.com),  указав в поле поиска код ключа в виде 0xE1F958385BFE2B6E (т.е. с лидирующими символами 0x и без лидирующих и завершающих пробелов), открыть ключ в WEB-браузере, копировать и сохранить в текстовом файле на локальной машине. Сохраненный ключ перенести на нужную машину и импортировать командой: sudo apt-key add <имя_файла_с_ключом>
      4. После подключения репозитория обновите пакеты: sudo apt update

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

      1. После успешного подключения репозитория Debian выполните установку пакета “libpam-radius-auth”: sudo apt install libpam-radius-auth
      2. Настройте подключение к Radius серверу. Откройте и отредактируйте файл, где задается подключение к Radius серверу: sudo  nano /etc/pam_radius_auth.conf
      3. Укажите в файле IP адрес сервера, общий секрет и таймаут. Пример настройки: 192.168.1.2 Q1q2E3e4 60
      4. В целях безопасности настройте права на чтение и запись только для пользователя и группы root
      sudo chown root /etc/pam_radius_auth.conf
      sudo chmod 600 /etc/pam_radius_auth.conf
      1. Включите аутентификацию через модуль PAM для требуемых сценариев.

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

      В сценарии SSH поддерживаются все методы аутентификации, которые поддерживает Indeed AM NPS Extension. Также можно настроить цепочку аутентификации с OTP таким образом, чтобы запрос OTP был первым. 

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

      1. Откройте для редактирования файл с настройками SSH: sudo nano /etc/ssh/sshd_config
      2. В файле включите следующие настройки: 
      AuthenticationMethods keyboard-interactive:pam
      ChallengeResponseAuthentication yes
      UsePAM yes
      1. Откройте для редактирования файл с настройкой SSH для модуля PAM: sudo nano /etc/pam.d/sshd
        1. Для включения 2FA достаточно добавить с требованием использования модуля PAM и отключением аутентификации по умолчанию:
      #@include common-auth
      auth required pam_radius_auth.so conf=/etc/pam_radius_auth.conf
        1. При такой настройке 2FA будет запрашиваться для всех пользователей, в том числе и локальных, что будет вызывать ошибку, т.к. таких пользователей в домене нет. Чтобы локальные пользователи или определенные пользователи на машине могли выполнять подключение в обход PAM модуля, рекомендуется настроить исключения, например, для группы. Исключения можно настроить с помощью модуля “pam_succeed_if.so”. 
      auth [success=2 default=ignore] pam_succeed_if.so user notingroup astra-admin
      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 conf=/etc/pam_radius_auth.conf
            1. В первой строке задается правило - если пользователь не состоит в группе “astra-admin”, то 2 правила после будут пропущены. 
            2. Если пользователь состоит в группе, то будут использоваться модули для локальной аутентификации.
            3. Более подробно про настройку правил по ссылке.
        1. Сохраните изменения в файле.
      1. Перезапустите службы sshd и ssh.
      sudo systemctl restart sshd
      sudo systemctl restart ssh

      Проверьте подключение по SSH. В данном примере настроена аутентификация с использованием Telegram OTP. Для модуля NPS Extension обязательно нужно настроить политику “Challenge\Response: сообщение пользователю”.

      Настройка цепочки OTP + пароль и 1FA

      • Откройте файл с настройками SSH для PAM: sudo nano /etc/pam.d/sshd
      • В строке подключения модуля PAM добавьте параметр “skip_passwd”. Данный параметр отключает отправку доменного пароля на NPS сервер.
      auth required pam_radius_auth.so skip_passwd conf=/etc/pam_radius_auth.conf
        1. Рекомендуется добавить параметр “client_id” с произвольным значением, что поможет настроить политику запросов на подключение на стороне NPS.  Например, client_id=IndeedPamModule.
      auth required pam_radius_auth.so skip_passwd client_id=IndeedPamModule
      • После строки подключения модуля добавьте строку подключения модуля базовой аутентификации: @include common-auth
        1. При такой настройке будет отрабатывать логика: ОТП + Пароль.
        2. Если требуется 1FA аутентификация, то подключать модуль не требуется.
      • Перезапустите службы sshd и ssh.
      sudo systemctl restart sshd
      sudo systemctl restart ssh
      • Настройте политику запросов на подключение на стороне NPS и отключите проверку пароля на стороне NPS.

       

        • Если используется параметр “client_id” то можно задать соответствующие условие в политике
      • Проверьте работу модуля.

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

      Настройка 2fa для входа в Astra Linux

      В Astra не поддерживается отображение окна для ввода OTP при локальном входе. Поэтому аутентификация, которая требует в качестве второго фактора ввод ОТП - технически невозможна.
      В данном сценарии можно использовать аутентификацию с использованием Push.

        1. Откройте для редактирования файл с настройкой локального входа для модуля PAM: sudo nano /etc/pam.d/fly-dm
        2. Добавьте настройки подключения с использованием PAM и исключение для группы “astra-admin”.
      auth [success=2 default=ignore] pam_succeed_if.so user notingroup astra-admin
      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 conf=/etc/pam_radius_auth.conf
        1. Проверьте работу модуля. 
        2. При вводе данных доменного пользователя подключение будет ожидать подтверждение пуша пользователя.После подтверждения вход будет выполнен успешно.

      Настройка 1fa для входа в Astra Linux

      Данная настройка актуальна от версии Indeed AM 8.2.2 и выше.
      В Astra Linux можно заменить ввод доменного пароля на одноразовый код.

        1. Откройте для редактирования файл с настройкой локального входа для модуля PAM: sudo nano /etc/pam.d/fly-dm.
        2. Закомментируйте строку @include common auth.
        3. Под строкой @include common-password добавьте настройки подключения с использованием PAM и исключение для группы “astra-admin”:
          auth [success=2 default=ignore] pam_succeed_if.so user notingroup astra-admin
          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 conf=/etc/pam_radius_auth.conf
        4. Перезапустите службы sshd и ssh:
          sudo systemctl restart sshd
          sudo systemctl restart ssh
        5. На сервере NPS, в оснастке "Сервер сетевых политик" отключите проверку учётных данных пользователей.

        6. В MC консоли, в соответствующей политике, в RADIUS приложении выберите нужный метод аутентификации (Программный генератор TOTP).

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

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

      • Откройте для редактирования файл с настройкой xrdp для модуля PAM: sudo nano /etc/pam.d/xrdp-sesman
      • Добавьте настройки подключения с использованием PAM и исключение для группы “astra-admin”. 
      auth [success=2 default=ignore] pam_succeed_if.so user notingroup astra-admin
      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 conf=/etc/pam_radius_auth.conf
      • Сохраните изменения и перезапустите службу xrdp: sudo systemctl restart xrdp
      • Проверьте работу модуля



          Вложения 
           
           fly-dm (1.02 кБ)
           sshd (1.06 кБ)
           xrdp-sesman (0.47 кБ)
           sshd_config (0.28 кБ)
          (1 голос(а))
          Эта статья полезна
          Эта статья бесполезна