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


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

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

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

  1. В ОС семейства Debian Linux должны быть установлены следующие программы:
    - 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.

В процессе настройки основного конфигурационного файла config.toml стоит обратить на то, что для использования защищенного соединения (https) параметру secure (секция cookie) необходимо присвоить значение true.

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

Для развёртывания дистрибутива из 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
  3. Выполнить установку пакета avpfam:

    sudo yum 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.

    7. Указать параметры само подписанного сертификата.


  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. Выпуск ключа шифрования и сертификата.

Процесс установки RPM-пакета

  1. Ввести доменное имя сервера FAM для настройки конфигурации NGINX.

    Enter domain name of FAM Server for NGINX Config:
  2. Ввести IP-адрес сервера FAM.

    Enter IP address of FAM Server for NGINX Config:
  3. Ввеcти имя хоста или IP-адрес сервера PostgreSQL для сервера IDP.

    Enter Postgresql Server host name for IDP Server:
  4. Ввести имя БД для сервера IDP.

    Enter DB name for IDP Server:
  5. Ввести имя пользователя БД, созданного ранее.

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

    Enter password of DB
    
    Enter password of DB (again)
  7. Если самоподписанный сертификат не был выпущен, система FAM предложит его сгенерировать.

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

Выполнение запуска в 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

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

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

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

cd /opt/idp
./fam_linux_amd64 -init

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

  1. Выполнить создание УЗ администратора с указанием логина пользователя и пароля (в данном примере используется учетная запись администратора admin:admin123):
    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 — строка подключения к базе данных (берётся из конфигурационного файла config.toml, параметра connectionString).
  2. Запустить сервис посредством команды:
    sudo systemctl start idp


Обсуждение