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

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

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

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

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

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

    Примечание

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

RPM-пакет

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

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

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

Для развёртывания дистрибутива из 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

При необходимости для инициализации приложения необходимо:

  1. Выполнить команду инициализации:
cd /opt/idp
./fam_linux_amd64 -init

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

Выполнить создание УЗ администратора (с указанием логина пользователя и пароля):
По умолчанию учетная запись администратора admin:admin123

./fam_linux_amd64 -createuser login:password

Назначить созданному пользователю системную роль admin:

./fam_linux_amd64 -assignrole admin -user login

Далее запустите сервис

sudo systemctl start idp

Обсуждение