Avanpost FAM/MFA+ : 4.4.4. Установка FAM Linux Logon из rpm-пакета

Общие сведения

Компонент Avanpost FAM Linux Logon реализован в виде PAM-модуля и предназначен для обеспечения:

  • 2FA/MFA в ОС Linux в режиме графической оболочки;
  • 2FA/MFA в ОС Linux в режиме консольного входа;
  • 2FA/MFA в ОС Linux при подключении по SSH.

Перед выполнением установки и настройки рекомендуется создать резервную копию конфигурационных файлов PAM и убедиться в наличии сетевого доступа к серверу Avanpost FAM (порт gRPC по умолчанию — 9007/TCP). Ошибки в конфигурации PAM могут привести к невозможности входа в систему. До завершения проверки установки не следует закрывать открытую сессию суперпользователя. При этом необходимо обеспечить резервный доступ к машине (например, через консоль гипервизора). Настройку рекомендуется предварительно отрабатывать на тестовой машине.

Требования к ПО

  • Операционная система:
    • РЕД ОС 7, РЕД ОС 8;
    • Альт (Alt) 8 СП Сервер, Альт Сервер 9, Альт Сервер 10;
  • Avanpost FAM Server 1.8+.

Установка на стороне рабочей станции

Все операции производятся под учетной записью суперпользователя.

Установка и настройка на стороне рабочей станции необходимо выполнять следующим образом:

  1. Скачать rpm-пакет компонента с именем вида (X, Y, Z — версия компонента, N — номер сборки):
    pam_avanpost.X.Y.Z-N.rpm
  2. Запустить установку от имени суперпользователя:
    sudo rpm -i pam_avanpost.X.Y.Z-N.rpm
  3. Открыть конфигурационный файл:
    /etc/security/pam_avanpost.conf
  4. Настроить конфигурационный файл в соответствии с таблицей.
    ПараметрЗначениеПример
    Connect

    IP-адрес Avanpost FAM Server и gRPC-порт (стандартный gRPC-порт для Credential Provider – 9007 TCP).

    Настройка gRPC-порта выполняется на стороне FAM Server (более подробно в статье Настройка gRPC).

    192.168.1.10:9007
    LogАдрес (путь к директории) для сохранения файла логирования./var/log/
    LogLevel

    Уровень детализации логирования (более подробно о логировании в статье Управление логированием). Доступны следующие уровни:

    • ERROR – отображаются только ошибки;
    • INFO – отображается информация об общем ходе работы и ошибки (установлена по умолчанию);
    • DEBUG – отображается информация об общем ходе работы, фиксация ошибок, а также детальная информация для разработчика.
    DEBUG
    Flags

    Флаги для настройки дополнительных параметров работы модуля:

    • OFFLINE_ENABLE – включение offline-входа в систему при отсутствии соединения с FAM Server (при значении параметра true). 
    false
    SslTargetNameИмя хоста из TLS-сертификата сервера (при использовании TLS-шифрования).fam.example.com
    CAПуть и наименование файла корневого сертификата (при использовании TLS-шифрования)./etc/ssl/certs/fam-ca.pem
    AppNameНаименование Linux Logon-приложения, настроенного на стороне Avanpost FAM (по умолчанию используется pam_fam). sshd_pam_fam
    TimeoutВремя ожидания ответа для сервера (по умолчанию 45 секунд).60

    [Plugin]

    (секция настроек внешних плагинов для работы с криптографическими устройствами)

    Module

    Полный путь к плагину, включая имя плагина с расширением *.dll (предварительно скачивается дистрибутив с плагином).

    PluginTokens_64.dll

    Init

    Параметр, указывающий строку инициализации для загружаемого плагина. Определяет, какое криптографическое устройство или библиотека PKCS#11 будет использоваться.

    В качестве значения параметра может передаваться одно из двух значений:

    • имя поддерживаемого устройства (например, ETOKEN, RUTOKEN, RUTOKEN_ECP) – выполняется автоматический поиск соответствующей PKCS#11-библиотеки;
    • полный путь к файлу PKCS#11-библиотеки – используется при необходимости явного указания расположения библиотеки.   

    Рекомендуется в качестве значения параметра  указывать имя поддерживаемого устройства (например, Init=RUTOKEN) для минимизации риска ошибки. 

    ETOKEN

    Model

    Модель используемого устройства, с которым должен работать плагин. Допускается указание нескольких моделей через запятую.

    JaCarta Laser,Rutoken ECP

Активация PAM-модуля

Для активации PAM-модуля отредактировать соответствующий файл в /etc/pam.d/ (например, password-auth, system-auth, sshd и т.д.) и добавить перед строкой pam_unix.so строку:

auth requisite pam_avanpost.so

Настройка SSHD

  1. Убедиться, что активация модуля выполнена для стека аутентификации, используемого службой sshd (в ОС семейства РЕД ОС/RHEL/CentOS: /etc/pam.d/password-auth).
  2. В файле /etc/ssh/sshd_config установить значение "yes" для параметров, необходимых для работы второго фактора (Access-Challenge):
    ChallengeResponseAuthentication yes
    UsePAM yes
    KbdInteractiveAuthentication yes

    В РЕД ОС 8/RHEL 9 и новее значения параметров sshd могут переопределяться файлами из директории /etc/ssh/sshd_config.d/. При расхождении следует привести значения в них к требуемым.

  3. Перезапустить службу SSH:
    sudo systemctl restart sshd

Настройка компонента на стороне Avanpost FAM Server

Настройка компонента в интерфейсе административной консоли Avanpost FAM Server осуществляется в следующей последовательности:

  1. Зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" в сервисе "Приложения".
  2. На этапе "Основные настройки" требуется ввести наименование и выбрать тип Linux Logon (более подробно процесс создания и управления приложениями описан в разделах Управление приложениями и Управление Linux Logon-приложениями). 

    Наименование создаваемого приложения типа Linux Logon не должно содержать пробелов (например, sshd_pam_1).

  3. На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов (более подробно описано в Шаг 2. Настройки аутентификации для Linux Logon-приложения). 
    1. На первом шаге рекомендуется установить вход по паролю: установить переключатель в строке Password в положение "Активно" ().
    2. На последующих шагах установить дополнительные факторы аутентификации.
  4. На этапе завершения настройки установить флажок "Сделать приложение активным" и сохранить (более подробно описано в Шаг 3. Завершение для Linux Logon-приложения).

  5. Создать новую группу. Для этого необходимо нажать кнопку "Добавить группу" в режиме "Группы" и в открывшейся вкладке ввести запрашиваемые параметры (более подробно в Добавление новых групп).

  6. Добавить в группу пользователей, которые будут аутентифицироваться в настроенных приложениях. Ручное добавление пользователей администратором реализуется в профиле группы. Также доступ пользователя к группам и ролям допускается редактировать в УЗ пользователя. 

  7. Назначить ранее созданное Linux Logon-приложение в данную группу. Для этого в профиле группы во вкладке "Приложения" созданной группы установить переключатель в положение "Активно" () напротив созданных приложений.

Настройка работы с аппаратными токенами

Для использования hardware-аутентификации при помощи криптографических устройств в Avanpost Linux Logon реализована поддержка токенов через внешние плагины (библиотеки PKCS#11). Настройка использования токенов выполняется следующим образом:

  1. Установить драйверы токена (например, librtpkcs11ecp.so для Рутокен или libjcPKCS11-2.so для JaCarta).
  2. Загрузить дистрибутивы с плагинами.
  3. Настроить конфигурационный файл Avanpost Linux Logon, раздел [plugin].

Первоначальная отладка и настройка

Корректность настройки компонента выполняется следующим образом:

  1. Создать учетную запись пользователя pamuser на рабочей станции и задать пароль. 
  2. Создать учетную запись pamuser на стороне Avanpost FAM с использованием пароля, заданного на предыдущем шаге (особенности процесса создания пользователя описаны в Добавление пользователей и атрибутов вручную):
    1.  Нажать кнопку "Добавить пользователя" в режиме "Пользователи" административной консоли Avanpost FAM.
    2. Ввести значения основных атрибутов, включая логин - pamuser.
    3. Выключить флаг в чекбоксе "Отправить приветствие со ссылкой для смены пароля", ввести и подтвердить пароль, заданный для пользователя в ОС на рабочей станции.

    4. Нажать кнопку "Сохранить".

  3. Предоставить доступ пользователю к созданному ранее Linux Logon-приложению (в данном примере pam_fam).
    1. В режиме "Группы" войти в профиль группы, для которой задан доступ к приложению pam_fam (если такая группа отсутствует, создать новую группу и назначить ей приложение pam_fam, пользуясь статьей Добавление новых групп в разделе Управление доступом). 
    2. Нажать кнопку "Добавить пользователей", найти и выбрать нужного пользователя (в данном примере pamuser).
    3. Нажать кнопку "Сохранить".
  4. Инициировать вход в операционную систему под учетной записью pamuser (локально, посредством SSH или через графический интерфейс).
  5. Убедиться, что запрашиваются факторы в соответствии с настроенным сценарием аутентификации.
  6. В случае, если требуется получение дополнительной информации для отладки, обратиться к логам авторизации при помощи команды:
    sudo journalctl -u sshd -f

Настройка смены пароля

  1. Открыть файл /etc/pam.d/system-auth (или /etc/pam.d/название_службы, например, passwd).
  2. Добавить в самое начало стека password следующую строку:
    password requisite pam_avanpost.so
  3. Сохранить изменения и закрыть файл.
  4. Убедиться в корректности работы механизма (например, выполнить в терминале команду passwd).

Приложение А. Пример настройки конфигурационного файла 

Пример настройки конфигурационного файла pam_avanpost.conf:

Connect=192.168.1.10:9007
Log=/var/log/pam_avanpost.log
LogLevel=DEBUG
SslTargetName=fam.example.com
CA=/etc/ssl/certs/fam-ca.pem
AppName=sshd_pam_1
Timeout=60

Приложение Б. Настройка автоматической передачи сессии в Avanpost FAM Agent

Для случаев, когда пользователь использует FAM Linux Logon и FAM Agent, с целью повышения удобства рекомендуется выполнить настройку автоматической передачи сессии Linux Logon в FAM Agent. Для этого требуется выполнить следующие действия:

  1. Убедиться, что выполнены следующие требования:
    1. Установлен и корректно настроен Avanpost FAM Agent, при помощи которого выполняется успешная аутентификация в личном кабинете на стороне FAM Server.
    2. Установлен и корректно настроен FAM Linux Logon в соответствии с текущей инструкцией.
    3. Имя пользователя на стороне рабочей станции соответствует логину пользователя на стороне FAM Server.
  2. Выполнить перезагрузку рабочей станции пользователя.
  3. Пройти аутентификацию посредством FAM Linux Logon.
  4. Запустить Avanpost FAM Agent и войти в личный кабинет на стороне FAM Server. 
  5. Убедиться, что вход выполняется бесшовно без запроса дополнительных факторов аутентификации.

Приложение В. Настройка входа через графическую оболочку

Для обеспечения MFA при входе через графическую оболочку (GDM) требуется выполнить следующие действия:

  1. Открыть файл /etc/pam.d/gdm-password при помощи команды:
    sudo vi /etc/pam.d/gdm-password
  2. Закомментировать следующую строку:
    auth substack password-auth
  3. Добавить перед строкой pam_unix.so следующую строку:
    auth requisite pam_avanpost_mfa.so debug config_file=/etc/security/pam_avanpost.conf
  4. Сохранить изменения и перезапустить GDM (или перезагрузить систему) для применения изменений.

Приложение Г. Выпуск сертификата для проверки Рутокена

Выпуск сертификата для проверки необходимо выполнять следующим образом:

  1. Подключить смарт-картой Рутокен и все нижеперечисленные действия выполнять с подключенной смарт-картой Рутокен.
  2. Сгенерировать закрытый ключ и самоподписанный сертификат:
    openssl req -newkey rsa:2048 -new -nodes -x509 -days 11111 -keyout key.pem -out cert.pem
  3. Сконвертировать сертификат и закрытый ключ в формате PEM в DER-кодировку:
    openssl x509 -in cert.pem -out cert.crt -outform DER
    openssl rsa -inform pem -in key.pem -outform der -out key.der
  4. Записать приватный ключ и сертификат на токен:
    pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y privkey -w key.der --id 10 --label Rutoken1
    pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.crt --id 10 --label Rutoken1
  5. Скопировать сертификат в карточку пользователя FAM. Чтобы открыть сертификат для просмотра и копирования использовать команду:

    cat cert.pem

Приложение Д. Установка пакетов Рутокен

Для установки дополнительных пакетов для Рутокен требуется:

  1. Установить необходимые пакеты с помощью команды (расширенная информация по установке пакетов и конфигурации доступна в документации Astra Linux):

    apt install libccid pcscd libpcsclite1 pcsc-tools opensc libengine-pkcs11-openssl
  2. Загрузить deb-пакет с официального сайта Рутокен  и скопировать его в директорию /opt/pam.
  3. Выполнить команду для установки deb-пакета из директории /opt/pam:

    
    
  4. Произвести поиск файла librtpkcs11ecp.so:
    find /usr/lib /usr/lib64 -name librtpkcs11ecp.so
  5. Скопировать путь до найденного файла.
  6. Открыть файл /etc/pam.d/system-auth-common и указать путь до файла librtpkcs11ecp.so в параметре device_lib_path.
  7. Произвести подключение токена к АРМ. Убедиться, что токен виден в системе командой pcsc_scan.

Image 4 of 4

Приложение Е. Установка пакетов JaCarta

Для установки дополнительных пакетов для JaCarta требуется:

  1. Загрузить необходимый пакет с официального сайта разработчика.
  2. Скопировать загруженный пакет в директорию /opt/pam.
  3. Для установки пакета перейти в директорию /opt/pam и выполнить команду:
    ./install.sh
  4. Произвести поиск файла libjcPKCS11-2.so:
    find /usr/lib /usr/lib64 -name libjcPKCS11-2.so
  5. Скопировать путь до найденного файла (например, /usr/lib/libjcPKCS11-2.so).

  6. Открыть файл /etc/pam.d/system-auth-common и указать путь до файла libjcPKCS11-2.so в параметре device_lib_path. Например: 

    device_lib_path=/usr/lib/librtpkcs11ecp.so

Приложение F. Настройка SELinux

В операционных системах РЕД ОС, CentOS и RHEL по умолчанию включена и работает в режиме принудительного контроля система SELinux, реализующая мандатный контроль доступа. Для корректной работы PAM-модуля требуется дополнительная настройка SELinux. Перевод SELinux в режим Permissive (нарушения логируются, но не блокируются) или Disabled (выключен) не рекомендуется. Если SELinux блокирует необходимую операцию, следует определить соответствующую запись AVC denial и настроить корректную политику SELinux и контексты файлов.

Требования модуля pam_avanpost к среде:

  • чтение собственного конфигурационного файла /etc/security/pam_avanpost.conf;
  • запись собственного файла журнала;
  • выполнение сетевых соединений с сервером Avanpost FAM;
  • сертификаты и ключи модулем напрямую не читаются.

Настройку SELinux необходимо выполнять следующим образом:

  1. Убедиться, что установлены утилиты для управления SELinux:
    # Для РЕД ОС 8/RHEL 8/CentOS 8 и новее
    sudo dnf install policycoreutils-python-utils
    
    # Для РЕД ОС 7/ RHEL 7/ CentOS 7
    sudo yum install policycoreutils-python
  2. Проверить состояние SELinux и убедиться, что в качестве ответа возвращается Enforcing (если возвращается Disabled или Permissive, продукт будет работать некорректно): 
    getenforce
  3. Создать пользовательские типы SELinux и назначить их конфигурационному и журнальному файлам модуля:
    # Конфигурационный файл
    sudo semanage fcontext -a -t pam_avanpost_conf_t "/etc/security/pam_avanpost.conf"
    sudo restorecon -v /etc/security/pam_avanpost.conf
    
    # Файл журнала
    sudo semanage fcontext -a -t pam_avanpost_log_t "/var/log/pam_avanpost.log"
    sudo touch /var/log/pam_avanpost.log
    sudo restorecon -v /var/log/pam_avanpost.log
  4. Создать модуль политики SELinux. Чтобы разрешить операции модуля, необходимо создать пользовательский модуль политики на основе записей AVC denial (сообщения от SELinux о том, что какое-то действие было заблокировано):
    1. Убедиться, что имеется резервный доступ к системе (ошибки в конфигурации PAM-модуля могут привести к невозможности входа в систему).
    2. Получить записи AVC denial (рекомендуется собирать записи в тестовой системе):
      1. Активировать PAM-модуль для одной службы аутентификации (например, для SSH).
      2. Пройти аутентификацию под пользователем, для которого настроен модуль: попытка будет заблокирована SELinux, а в журнал аудита попадут соответствующие записи.
      3. Собрать записи AVC denial за недавний период (убедиться, что в выводе присутствуют записи, связанные с pam_avanpost и службами аутентификации):
        sudo ausearch -m avc -ts recent
    3. Сгенерировать модуль политики на основе собранных запретов:
      sudo ausearch -m avc -ts recent | audit2allow -M pam_avanpost
    4. Установить модуль политики:
      sudo semodule -i pam_avanpost.pp
    5. Проверить установку (в выводе должна присутствовать строка pam_avanpost).:
      sudo semodule -l | grep pam_avanpost
  5. Разрешить сетевые соединения:
    1. Зарегистрировать порт в SELinux по аналогии:
      sudo semanage port -a -t fam_grpc_port_t -p tcp 9007
    2. Добавить в файл политики pam_avanpost.te или создать новый модуль со списком служб, для которых активирован модуль по аналогии:
      allow sshd_t fam_grpc_port_t:tcp_socket name_connect;
      allow local_login_t fam_grpc_port_t:tcp_socket name_connect;
      allow xdm_t fam_grpc_port_t:tcp_socket name_connect;
    3. Скомпилировать и установить обновленный модуль.
  6. Пройти аутентификацию по SSH и через локальный вход: если аутентификация не удастся, собрать новые записи AVC denial и обновить политику SELinux policy/контексты.

Обсуждение