[ ] [ Общие сведения ] [ Установка на стороне рабочей станции ] [ Активация PAM-модуля ] [ Настройка SSHD ] [ Настройка компонента на стороне Avanpost FAM Server ] [ Настройка работы с аппаратными токенами ] [ Первоначальная отладка и настройка ] [ Настройка смены пароля ] [ Приложение А. Пример настройки конфигурационного файла ] [ Приложение Б. Настройка автоматической передачи сессии в Avanpost FAM Agent ] [ Приложение В. Настройка входа через графическую оболочку ] [ Приложение Г. Выпуск сертификата для проверки Рутокена ] [ Приложение Д. Установка пакетов Рутокен ] [ Приложение Е. Установка пакетов JaCarta ] [ Приложение F. Настройка SELinux ]
Общие сведения
Компонент 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+.
Установка на стороне рабочей станции
Все операции производятся под учетной записью суперпользователя.
Установка и настройка на стороне рабочей станции необходимо выполнять следующим образом:
- Скачать rpm-пакет компонента с именем вида (X, Y, Z — версия компонента, N — номер сборки):
pam_avanpost.X.Y.Z-N.rpm
- Запустить установку от имени суперпользователя:
sudo rpm -i pam_avanpost.X.Y.Z-N.rpm
- Открыть конфигурационный файл:
/etc/security/pam_avanpost.conf
- Настроить конфигурационный файл в соответствии с таблицей.
Параметр Значение Пример ConnectIP-адрес Avanpost FAM Server и gRPC-порт (стандартный gRPC-порт для Credential Provider – 9007 TCP).
Настройка gRPC-порта выполняется на стороне FAM Server (более подробно в статье Настройка gRPC).
192.168.1.10:9007LogАдрес (путь к директории) для сохранения файла логирования. /var/log/LogLevelУровень детализации логирования (более подробно о логировании в статье Управление логированием). Доступны следующие уровни:
- ERROR – отображаются только ошибки;
- INFO – отображается информация об общем ходе работы и ошибки (установлена по умолчанию);
- DEBUG – отображается информация об общем ходе работы, фиксация ошибок, а также детальная информация для разработчика.
DEBUGFlagsФлаги для настройки дополнительных параметров работы модуля:
- OFFLINE_ENABLE – включение offline-входа в систему при отсутствии соединения с FAM Server (при значении параметра true).
falseSslTargetNameИмя хоста из TLS-сертификата сервера (при использовании TLS-шифрования). fam.example.comCAПуть и наименование файла корневого сертификата (при использовании TLS-шифрования). /etc/ssl/certs/fam-ca.pemAppNameНаименование Linux Logon-приложения, настроенного на стороне Avanpost FAM (по умолчанию используется pam_fam).sshd_pam_famTimeoutВремя ожидания ответа для сервера (по умолчанию 45 секунд). 60[Plugin]
(секция настроек внешних плагинов для работы с криптографическими устройствами)
ModuleПолный путь к плагину, включая имя плагина с расширением *.dll (предварительно скачивается дистрибутив с плагином).
PluginTokens_64.dllInitПараметр, указывающий строку инициализации для загружаемого плагина. Определяет, какое криптографическое устройство или библиотека PKCS#11 будет использоваться.
В качестве значения параметра может передаваться одно из двух значений:
- имя поддерживаемого устройства (например,
ETOKEN,RUTOKEN,RUTOKEN_ECP) – выполняется автоматический поиск соответствующей PKCS#11-библиотеки; - полный путь к файлу PKCS#11-библиотеки – используется при необходимости явного указания расположения библиотеки.
Рекомендуется в качестве значения параметра указывать имя поддерживаемого устройства (например,
Init=RUTOKEN) для минимизации риска ошибки.ETOKENModelМодель используемого устройства, с которым должен работать плагин. Допускается указание нескольких моделей через запятую.
JaCarta Laser,Rutoken ECP
Активация PAM-модуля
Для активации PAM-модуля отредактировать соответствующий файл в /etc/pam.d/ (например, password-auth, system-auth, sshd и т.д.) и добавить перед строкой pam_unix.so строку:
auth requisite pam_avanpost.so
Настройка SSHD
- Убедиться, что активация модуля выполнена для стека аутентификации, используемого службой sshd (в ОС семейства РЕД ОС/RHEL/CentOS:
/etc/pam.d/password-auth). - В файле /etc/ssh/sshd_config установить значение "yes" для параметров, необходимых для работы второго фактора (Access-Challenge):
ChallengeResponseAuthentication yes UsePAM yes KbdInteractiveAuthentication yes
В РЕД ОС 8/RHEL 9 и новее значения параметров sshd могут переопределяться файлами из директории /etc/ssh/sshd_config.d/. При расхождении следует привести значения в них к требуемым.
- Перезапустить службу SSH:
sudo systemctl restart sshd
Настройка компонента на стороне Avanpost FAM Server
Настройка компонента в интерфейсе административной консоли Avanpost FAM Server осуществляется в следующей последовательности:
- Зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" в сервисе "Приложения".
- На этапе "Основные настройки" требуется ввести наименование и выбрать тип Linux Logon (более подробно процесс создания и управления приложениями описан в разделах Управление приложениями и Управление Linux Logon-приложениями).
Наименование создаваемого приложения типа Linux Logon не должно содержать пробелов (например,
sshd_pam_1). - На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов (более подробно описано в Шаг 2. Настройки аутентификации для Linux Logon-приложения).
- На первом шаге рекомендуется установить вход по паролю: установить переключатель в строке Password в положение "Активно" ().
- На последующих шагах установить дополнительные факторы аутентификации.
На этапе завершения настройки установить флажок "Сделать приложение активным" и сохранить (более подробно описано в Шаг 3. Завершение для Linux Logon-приложения).
Создать новую группу. Для этого необходимо нажать кнопку "Добавить группу" в режиме "Группы" и в открывшейся вкладке ввести запрашиваемые параметры (более подробно в Добавление новых групп).
Добавить в группу пользователей, которые будут аутентифицироваться в настроенных приложениях. Ручное добавление пользователей администратором реализуется в профиле группы. Также доступ пользователя к группам и ролям допускается редактировать в УЗ пользователя.
Назначить ранее созданное Linux Logon-приложение в данную группу. Для этого в профиле группы во вкладке "Приложения" созданной группы установить переключатель в положение "Активно" () напротив созданных приложений.
Настройка работы с аппаратными токенами
Для использования hardware-аутентификации при помощи криптографических устройств в Avanpost Linux Logon реализована поддержка токенов через внешние плагины (библиотеки PKCS#11). Настройка использования токенов выполняется следующим образом:
- Установить драйверы токена (например,
librtpkcs11ecp.soдля Рутокен илиlibjcPKCS11-2.soдля JaCarta). - Загрузить дистрибутивы с плагинами.
- Настроить конфигурационный файл Avanpost Linux Logon, раздел
[plugin].
Первоначальная отладка и настройка
Корректность настройки компонента выполняется следующим образом:
- Создать учетную запись пользователя
pamuserна рабочей станции и задать пароль. - Создать учетную запись
pamuserна стороне Avanpost FAM с использованием пароля, заданного на предыдущем шаге (особенности процесса создания пользователя описаны в Добавление пользователей и атрибутов вручную):- Нажать кнопку "Добавить пользователя" в режиме "Пользователи" административной консоли Avanpost FAM.
- Ввести значения основных атрибутов, включая логин -
pamuser. Выключить флаг в чекбоксе "Отправить приветствие со ссылкой для смены пароля", ввести и подтвердить пароль, заданный для пользователя в ОС на рабочей станции.
Нажать кнопку "Сохранить".
- Предоставить доступ пользователю к созданному ранее Linux Logon-приложению (в данном примере
pam_fam).- В режиме "Группы" войти в профиль группы, для которой задан доступ к приложению
pam_fam(если такая группа отсутствует, создать новую группу и назначить ей приложениеpam_fam,пользуясь статьей Добавление новых групп в разделе Управление доступом). - Нажать кнопку "Добавить пользователей", найти и выбрать нужного пользователя (в данном примере
pamuser). - Нажать кнопку "Сохранить".
- В режиме "Группы" войти в профиль группы, для которой задан доступ к приложению
- Инициировать вход в операционную систему под учетной записью
pamuser(локально, посредством SSH или через графический интерфейс). - Убедиться, что запрашиваются факторы в соответствии с настроенным сценарием аутентификации.
- В случае, если требуется получение дополнительной информации для отладки, обратиться к логам авторизации при помощи команды:
sudo journalctl -u sshd -f
Настройка смены пароля
- Открыть файл
/etc/pam.d/system-auth(или/etc/pam.d/название_службы, например,passwd). - Добавить в самое начало стека password следующую строку:
password requisite pam_avanpost.so
- Сохранить изменения и закрыть файл.
- Убедиться в корректности работы механизма (например, выполнить в терминале команду 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. Для этого требуется выполнить следующие действия:
- Убедиться, что выполнены следующие требования:
- Установлен и корректно настроен Avanpost FAM Agent, при помощи которого выполняется успешная аутентификация в личном кабинете на стороне FAM Server.
- Установлен и корректно настроен FAM Linux Logon в соответствии с текущей инструкцией.
- Имя пользователя на стороне рабочей станции соответствует логину пользователя на стороне FAM Server.
- Выполнить перезагрузку рабочей станции пользователя.
- Пройти аутентификацию посредством FAM Linux Logon.
- Запустить Avanpost FAM Agent и войти в личный кабинет на стороне FAM Server.
- Убедиться, что вход выполняется бесшовно без запроса дополнительных факторов аутентификации.
Приложение В. Настройка входа через графическую оболочку
Для обеспечения MFA при входе через графическую оболочку (GDM) требуется выполнить следующие действия:
- Открыть файл /etc/pam.d/gdm-password при помощи команды:
sudo vi /etc/pam.d/gdm-password
- Закомментировать следующую строку:
auth substack password-auth
- Добавить перед строкой
pam_unix.soследующую строку:auth requisite pam_avanpost_mfa.so debug config_file=/etc/security/pam_avanpost.conf
- Сохранить изменения и перезапустить GDM (или перезагрузить систему) для применения изменений.
Приложение Г. Выпуск сертификата для проверки Рутокена
Выпуск сертификата для проверки необходимо выполнять следующим образом:
- Подключить смарт-картой Рутокен и все нижеперечисленные действия выполнять с подключенной смарт-картой Рутокен.
- Сгенерировать закрытый ключ и самоподписанный сертификат:
openssl req -newkey rsa:2048 -new -nodes -x509 -days 11111 -keyout key.pem -out cert.pem
- Сконвертировать сертификат и закрытый ключ в формате PEM в DER-кодировку:
openssl x509 -in cert.pem -out cert.crt -outform DER openssl rsa -inform pem -in key.pem -outform der -out key.der
- Записать приватный ключ и сертификат на токен:
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
Скопировать сертификат в карточку пользователя FAM. Чтобы открыть сертификат для просмотра и копирования использовать команду:
cat cert.pem
Приложение Д. Установка пакетов Рутокен
Для установки дополнительных пакетов для Рутокен требуется:
Установить необходимые пакеты с помощью команды (расширенная информация по установке пакетов и конфигурации доступна в документации Astra Linux):
apt install libccid pcscd libpcsclite1 pcsc-tools opensc libengine-pkcs11-openssl
- Загрузить deb-пакет с официального сайта Рутокен и скопировать его в директорию
/opt/pam. Выполнить команду для установки deb-пакета из директории
/opt/pam:- Произвести поиск файла
librtpkcs11ecp.so:find /usr/lib /usr/lib64 -name librtpkcs11ecp.so
- Скопировать путь до найденного файла.
- Открыть файл
/etc/pam.d/system-auth-commonи указать путь до файлаlibrtpkcs11ecp.soв параметреdevice_lib_path. - Произвести подключение токена к АРМ. Убедиться, что токен виден в системе командой
pcsc_scan.
Приложение Е. Установка пакетов JaCarta
Для установки дополнительных пакетов для JaCarta требуется:
- Загрузить необходимый пакет с официального сайта разработчика.
- Скопировать загруженный пакет в директорию /opt/pam.
- Для установки пакета перейти в директорию /opt/pam и выполнить команду:
./install.sh
- Произвести поиск файла
libjcPKCS11-2.so:find /usr/lib /usr/lib64 -name libjcPKCS11-2.so
Скопировать путь до найденного файла (например, /
usr/lib/).libjcPKCS11-2.soОткрыть файл /etc/pam.d/system-auth-common и указать путь до файла
libjcPKCS11-2.soв параметре. Например:device_lib_pathdevice_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 необходимо выполнять следующим образом:
- Убедиться, что установлены утилиты для управления SELinux:
# Для РЕД ОС 8/RHEL 8/CentOS 8 и новее sudo dnf install policycoreutils-python-utils # Для РЕД ОС 7/ RHEL 7/ CentOS 7 sudo yum install policycoreutils-python
- Проверить состояние SELinux и убедиться, что в качестве ответа возвращается
Enforcing(если возвращаетсяDisabledилиPermissive, продукт будет работать некорректно):getenforce
- Создать пользовательские типы 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
- Создать модуль политики SELinux. Чтобы разрешить операции модуля, необходимо создать пользовательский модуль политики на основе записей AVC denial (сообщения от SELinux о том, что какое-то действие было заблокировано):
- Убедиться, что имеется резервный доступ к системе (ошибки в конфигурации PAM-модуля могут привести к невозможности входа в систему).
- Получить записи AVC denial (рекомендуется собирать записи в тестовой системе):
- Активировать PAM-модуль для одной службы аутентификации (например, для SSH).
- Пройти аутентификацию под пользователем, для которого настроен модуль: попытка будет заблокирована SELinux, а в журнал аудита попадут соответствующие записи.
- Собрать записи AVC denial за недавний период (убедиться, что в выводе присутствуют записи, связанные с pam_avanpost и службами аутентификации):
sudo ausearch -m avc -ts recent
- Сгенерировать модуль политики на основе собранных запретов:
sudo ausearch -m avc -ts recent | audit2allow -M pam_avanpost
- Установить модуль политики:
sudo semodule -i pam_avanpost.pp
- Проверить установку (в выводе должна присутствовать строка pam_avanpost).:
sudo semodule -l | grep pam_avanpost
- Разрешить сетевые соединения:
- Зарегистрировать порт в SELinux по аналогии:
sudo semanage port -a -t fam_grpc_port_t -p tcp 9007
- Добавить в файл политики
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;
- Скомпилировать и установить обновленный модуль.
- Зарегистрировать порт в SELinux по аналогии:
- Пройти аутентификацию по SSH и через локальный вход: если аутентификация не удастся, собрать новые записи AVC denial и обновить политику SELinux policy/контексты.
