Установка FAM Server в Linux из rpm-пакета


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

Требования к окружению

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

  1. В ОС семейства Linux Red Hat должны быть установлены следующие программы:
    - openssl (программа управления сертификатами);
    - psql (CLI-клиент из состава PostgreSQL);
    - nginx (веб-сервер/прокси-сервер); sudo (программа выполнения команд от имени суперпользователя).

  2. Выполнена синхронизация времени в ОС с сервером синхронизации времени.

    Примечание

    Установка и настройка указанных программ выходит за границы текущей инструкции и описана в справочных руководствах, идущих в комплекте с операционной системой Linux, на которой производится развёртывание.

RPM-пакет

RPM-пакет содержит в себе основной конфигурационный файл, необходимый для работы серверной части, предварительно настроенный для выполнения базового развёртывания с помощью текущей инструкции, а так же минимальный конфигурационный файл для Nginx.

При внесении изменений в конфигурационный файл выполнение развёртывания должно производиться с учётом возможного влияния изменённых параметров в сравнении с конфигурационным файлом из дистрибутива.

Конфигурационный файл

Тонкая настройка Avanpost FAM Server выполняется в основном конфигурационном файле config.toml.default, расположенном по пути /opt/idp/config.toml.  Рекомендации и пример конфигурационного файла даны в разделе Спецификация конфигурационного файла config.toml.default компонента Avanpost FAM Server. При внесении изменений в конфигурационный файл выполнение развёртывания должно производиться с учётом возможного влияния изменённых параметров. 

Поставка Avanpost FAM Server содержит в себе следующие конфигурационные файлы:

  • конфигурационный файл, необходимый для работы серверной части, предварительно настроенный для выполнения базового развёртывания с помощью текущей инструкции, 
  • минимальный конфигурационный файл для сервера Angie/Nginx.

    Настройку конфигурационного файла веб-сервера Angie следует выполнять в соответствии с документацией на продукт.

    Настройку конфигурационного файла веб-сервера Nginx следует выполнять в соответствии с документацией на продукт.

Для FAM Server версии 1.15+ использует встроенный внутренний NATS-сервер для работы с базой данных и внутреннего программного взаимодействия. Поэтому при настройке конфигурационного файла обязательно настроить внутренний встроенный NATS-сервер, задав его параметры в секции [nats]. Данный NATS-сервер предназначен исключительно для подключения развернутого экземпляра FAM Server и не нуждается в дополнительной кластеризации. В целях повышения отказоустойчивости не рекомендуется использование единого экземпляра внутреннего NATS-сервера для нескольких узлов FAM Server (когда NATS-сервер разворачивается на одном из узлов, а остальные узлы подключаются к нему как клиенты). NATS-сервер, настроенный в конфигурационном файле, будет запущен автоматически с FAM Server.

В конфигурационном файле /opt/idp/config.toml в секции [cookie] необходимо привести параметры к следующим настройкам в зависимости от используемого протокола, который указывается в параметре baseUrl файла config.toml: 

    1. В случае использования HTTP, требуется использовать следующие параметры:
      secure = false
      same_site = 'Lax'
    2. В случае использования HTTPS, требуется использовать следующие параметры:
      secure = true
      same_site = 'None'

Развёртывание файлов дистрибутива из архива

Для развёртывания дистрибутива из RPM-пакета необходимо:

  1. Добавить репозиторий FAM.
    a. 
    Открыть файл fam.repo в редакторе vi:

     vi /etc/yum.repos.d/fam.repo

    b. В файле fam.repo добавить следующую информацию, которая описывает репозиторий FAM:

    [FAM]
    name=FAM Repository
    baseurl=https://packages.avanpost.ru/repository/rpm-hosted/FAM/CentOS/
    enabled=1
    protect=0
    gpgcheck=0
    metadata_expire=30s
    autorefresh=1
    type=rpm-md

    name

    имя репозитория
    baseurl

    путь к основному URL репозитория FAM

    Для CentOS указывается каталог CentOS, для других ОС ALT, REDOS, ROSA соответственно

    enabledразрешение использования репозитория
    protectотключение защиты репозитория от изменений
    gpgcheckотключение проверки GPG-подписей пакетов
    metadata_expireвремя обновления метаданных репозитория
    autorefreshразрешение автоматического обновления репозитория
    typeуказание типа репозитория
  2. Обновить все установленные пакеты с помощью команды:

    sudo yum update
    # или
    sudo dnf update
  3. Выполнить установку пакета avpfam:

    sudo yum install -y avpfam --downloadonly --downloaddir=/tmp/ && rpm -i /tmp/avpfam-*
    #
    sudo dnf install -y avpfam --downloadonly --downloaddir=/tmp/ && rpm -i /tmp/avpfam-*
  4. При развертывании rpm-пакета в диалоговом окне "Enter domain of FAM Server" ввести внешний домен сервера FAM для прописывания в файл конфигурации Ngnix, далее следовать разделу "Действия во время установки". Пример:

    idp.avanpost.local
  5. Чтобы исключить (запретить) обновления определенных пакетов, открыть файл /etc/yum.conf или /etc/dnf/dnf.conf c помощью выбранного редактора:

    vi /etc/yum.conf
    # или
    vi /etc/dnf/dnf.conf

    Пример конфигурационного файла: 

    [main]
    gpgcheck=1
    installonly_limit=3
    clean_requirements_on_remove=True
    best=True
    skip_if_unavailable=False
    # Исключение пакета avpfam при операциях установки и обновления пакетов
    exclude=avpfam

Действия во время развёртывания

  1. При развертывании в диалоговых окнах необходимо указать следующие настройки:
    1. Ввести доменное имя сервера FAM для настройки конфигурации NGINX.

      Enter domain name of FAM Server for NGINX Config:
      Пример: idp.avanpost.local

    2. Ввести IP-адрес сервера FAM.

      Enter IP address of FAM Server for NGINX Config:
      Пример: 127.0.0.1

    3. Ввеcти имя хоста или IP-адрес сервера PostgreSQL для сервера IDP.

      Enter Postgresql Server host name for IDP Server:
      Пример: 127.0.0.1

    4. Ввести имя БД для сервера IDP.

      Enter DB name for IDP Server:
      Вводим BD name, которое ввели в пункте 2.

    5. Ввести имя пользователя БД, созданного ранее.

      Enter username of DB:
      Вводим  username , которое ввели в пункте 2.

    6. Ввести созданный ранее пароль от БД дважды.

      Enter password of DB
       
      Enter password of DB (again)
      Вводим  password, который вводили в пункте 2.

      При первом входе в веб-интерфейс Системы пользователю admin будет предложено изменить пароль с установленного значения admin123 на новый пароль с целью обеспечения безопасности.

    7. Указать параметры самоподписанного сертификата (если самоподписанный сертификат не был выпущен, система FAM предложит его сгенерировать).
  2. После установки необходимо добавить пользователя idp в группу root:

    sudo usermod -aG root idp

Создание и развёртывание базы данных

Создать пользователя СУБД avanpost с паролем и базу данных idp с помощью команд:

sudo -u postgres psql
postgres=# CREATE USER avanpost WITH PASSWORD 'Passw0rd';
postgres=# CREATE DATABASE idp OWNER=avanpost ENCODING=utf8;
postgres=# \q

Примечание

Необходимо изменить реквизиты базы данных (сервера БД, наименования БД, имени пользователя или пароля), для этого вписать корректные реквизиты в конфигурационный файл /opt/idp/config.json в формате PostgreSQL Connection URI в параметр connectionString в секцию database

В файле /var/lib/pgsql/версия/data/pg_hba.conf – изменить метод аутентификации на md5 для IPv4 (host all all 127.0.0.1/32) и IPv6 (host all all ::1/128) подключений:

После внесения изменений в pg_hba.conf перезапустить PostgreSQL.

Путь к файлу pg_hba.conf для разных ОС и версий ОС может отличаться.

Например, для Ubuntu файл хранится по пути: /etc/postgresql/'файл'

Генерация сертификата и ключа шифрования

Для использования самоподписанных сертификатов в Системе необходимо создать пользователя и группу с идентификатором idp:idp и соответствующей домашней директорией. Затем разместить сертификат и закрытый ключ в папке /home/idp/.idp/ с именами cert.pem и key.pem соответственно.

У созданной папки /home/idp/.idp/ должно быть настроено разрешение доступа, чтобы пользователь idp имел права на чтение и запись.

Переключиться на служебного пользователя FAM:

sudo su idp

Если требуется изменить пароль для пользователя "idp", использовать команду:

sudo passwd idp

Далее следовать инструкциям в статье 4.1.2. Выпуск ключа шифрования и сертификата.

Выполнение запуска в systemd

Изменить текущего пользователя на администратора Системы с помощью команды: 

su root

После ввода команды необходимо ввести пароль администратора (root).

Запустить сервис:

sudo systemctl start idp

Проверка установки

  1. Открыть в браузере http://idp.avanpost.local/admin. Должна открыться страница аутентификации в административную консоль.
  2. Ввести учетные данные:
     – логин: admin;
     – пароль: admin123.

После ввода реквизитов учётной записи пользователь должен получить доступ к административной консоли Системы.

При первом входе в Систему потребуется изменить пароль на более безопасный

Ключи для ручной конфигурации

В случае возникновения ошибок или необходимости ручной настройки следует обратить внимание на следующие действия.

Публикация интерфейса системы на веб-сервере Nginx

  1. Проверить в конце конфигурационного файла /etc/nginx/nginx.conf строку:

    include /etc/nginx/sites-enabled/*;
  2. Проверить конфигурационный файл idp.conf на основе примера:

    sudo vi /etc/nginx/sites-available/idp.conf

    Внимание

    Адрес idp.avanpost.local должен указывать в сети на IP-адрес сервера, на котором размещается система средствами DNS.

    В противном случае требуется локально в конфигурации /etc/hosts клиентской машины, за которой работает пользователь или администратор, выполнить настройку маршрутизации с хоста на IP-адрес сервера с системой.

  3. Содержимое конфигурационного файла в idp.conf должно соответствовать:

    server {
        listen        80;
        server_name   idp.avanpost.local;
        location / {
            proxy_pass       http://127.0.0.1:4008;
            proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header Host $host;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            add_header Content-Security-Policy "default-src 'self'; img-src * 'self' data: https:; style-src * 'self' 'unsafe-inline'; connect-src * 'self'; script-src * 'self'";
      
                }
    }
  4. Проверить ссылку в sites-enabled. Если ее нет, выполнить:

    sudo ln -s /etc/nginx/sites-available/idp.conf /etc/nginx/sites-enabled/idp.conf
  5. Для внесения изменений в конфигурацию Nginx:

    a. Проверить конфигурацию:

    sudo nginx -t
    # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    # nginx: configuration file /etc/nginx/nginx.conf test is successful

    b. Перечитать конфигурацию Nginx:

    sudo systemctl reload nginx
  6. При необходимости (если появляется ошибка 502) ввести команду для изменения булевого значения httpd_can_network_connect. Она позволит веб-серверу httpd устанавливать сетевые соединения, делая это разрешенным и постоянным.
    setsebool httpd_can_network_connect on -P
     
  7. Проверить реквизиты базы данных (сервера БД, наименования БД, имени пользователя или пароля) в конфигурационном файле /opt/idp/config.toml в формате PostgreSQL Connection URI в параметр connectionString в секцию database

    В случае внесения в основной конфигурационный файл config.toml после запуска службы idp требуется перезапуск системы для вступления изменений в силу:

    sudo systemctl restart idp
  8. Проверить наличие файла key.dat в /opt/idp. При необходимости для генерации ключа шифрования key.dat перейти в директорию /opt/idp и выполнить команду:
    cd /opt/idp
    ./fam_linux_amd64 -generatekey

    Местоположение файла key.dat не регламентируется (путь к ключу по умолчанию: /opt/idp/key.dat). Если была осуществлена установка ключа в другую директорию, актуальный путь следует указать в конфигурационном файле в параметре encryptionKey секции основных настроек. Пример значения encryptionKey = '/path/name.dat' (по умолчанию encryptionKey = 'key.dat').

Инициализация и создание учетной записи администратора

Для Avanpost FAM версии ниже 1.16 требуется выполнять инициализацию вручную. Начиная с версии 1.16, инициализация выполняется автоматически и не требует отдельных действий. Инициализация вручную выполняется посредством команды:

cd /opt/idp
./fam_linux_amd64 -init

Для регистрации новой учетной записи администратора необходимо:

  1. Перейти в директорию /opt/idp (если пользователь не находился в данной директории):
    cd /opt/idp
  2. Выполнить создание учетной записи администратора с использованием утилиты famctl_linux_amd64:
    ./famctl_linux_amd64 createadmin -login admin -pwd 123qwe -mcp -conn 'postgres://avanpost:Passw0rd@127.0.0.1:5432/idp?sslmode=disable&search_path=public'
    ПараметрЗначениеОбязательность
    -login

    Логин создаваемого пользователя-администратора.

    Да
    -connСтрока подключения к базе данных PostgreSQL (значение параметра connectionString из файла config.toml).Да
    -pwdПароль пользователя.Нет (если используется флаг -invite).
    -emailАдрес электронной почты пользователя.Нет (если не используется флаг -invite)
    -mcpФлаг принудительной смены пароля при первом успешном входе в систему (must change password).Нет
    -inviteФлаг создания пользователя без пароля с отправкой письма-приглашения на указанный -email. Нет

    Для версий 1.16 – 1.17.1 для создания администратора используется команда:

    sudo ./createadmin_linux_amd64 -login admin -pwd admin123 -mcp -conn 'postgres://avanpost:Passw0rd@127.0.0.1:5432/idp?sslmode=disable&search_path=public'

    где используются следующие параметры:

      • -login  логин создаваемого пользователя;
      • -pwd пароль создаваемого пользователя;
      • -conn строка подключения к базе данных (используется значение параметра connectionString из конфигурационного файла config.toml);
      • -mcp – флаг принудительной смены пароля при первом успешном входе в систему (must change password).

    Начиная с версии FAM 1.16.0, команды -createuser и -assignrole утилиты fam_linux_amd64 не поддерживаются. Для создания учетной записи администратора используется отдельная утилита createadmin_linux_amd64.

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

    1. Создать учетную запись администратора с указанием логина и пароля (в данной инструкции –admin:admin123):
      sudo ./fam_linux_amd64 -createuser login:password
    2. Назначить созданному пользователю системную роль admin:
      sudo ./fam_linux_amd64 -assignrole admin -user login



Обсуждение