Avanpost FAM/MFA+ : 4.2.3. Установка FAM Server в Linux из tar.gz-архива

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

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

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

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

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

    Примечание

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

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

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

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

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

Для развёртывания файлов дистрибутива из архива необходимо:

  1. Создать служебного пользователя ОС idp (параметр -m необходим для создания домашней директории):

    Astra Linux

    Создаём пользователя и задаём пароль

    sudo useradd -m idp
    sudo passwd idp
    

    Добавляем пользователя в группу с повышенными привилегиями (sudo)

    sudo usermod -aG astra-admin idp
  2. Создать директорию /opt/idp:

    sudo mkdir /opt/idp
    sudo chown -R idp:idp /opt/idp
  3. Переключиться на служебного пользователя fam и перейти в директорию /opt/idp:

    sudo su idp
    cd /opt/idp
  4. В зависимости от расположения файла с архивом дистрибутива Системы скопировать архив из исходной директории (заменить в команде /source-path на правильный путь с расположением архива дистрибутива Avanpost.*.tar.gz) в целевую директорию:

    cp /source-path/Avanpost.*.tar.gz -t /opt/idp
  5. Распаковать файлы дистрибутива из архива, находясь в той же директории:

    tar -xvzf Avanpost.*.tar.gz
  6. После успешной распаковки удалить архив дистрибутива:

    rm Avanpost.*.tar.gz
  7. Скопировать базовый конфигурационный файл config.toml.default в config.toml:

    cp -f config.toml.default config.toml
  8. Установить переменную окружения SSO_CFG с указанием пути /opt/idp/config.json (для версии FAM v1.8.7.346 и старше нужно использовать config.toml):

    export SSO_CFG=/opt/idp/config.toml

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

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

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

Примечание

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

Найти файл pg_hba.conf: 

find / -name 'pg_hba.conf'

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

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

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

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

Для генерации ключа шифрования key.dat перейти в директорию /opt/idp и выполнить команду:

cd /opt/idp
./fam_linux_amd64 -generatekey

Внимание

Миграцию БД и последующие команды следует выполнять только после внесения изменённых реквизитов в параметр connectionString и генерации ключа шифрования.

Выполнить развёртывание БД с использованием механизма миграций:

cd /opt/idp
./fam_linux_amd64 -migratedb postgres

После завершения выполнения команды миграции установлены.

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

  1. Создать директории (если директории не созданы):

    sudo mkdir /etc/nginx/sites-available/
    sudo mkdir /etc/nginx/sites-enabled/
  2. Добавить в конец конфигурационного файла /etc/nginx/nginx.conf строку:

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

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

    Внимание

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

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

    Пример:

    127.0.0.1   localhost

    127.0.0.1   idp.avanpost.local

  4. Перед выполнением дальнейших действий должен быть сгенерирован сертификат (см. статью 4.1.2. Выпуск ключа шифрования и сертификата) и создана директория для ключей. Далее следует скопировать содержимое конфигурационного файла в 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'";
        }
    
     }
  5. Создать ссылку в sites-enabled:

    sudo ln -s /etc/nginx/sites-available/idp.conf /etc/nginx/sites-enabled/idp.conf
  6. Проверить конфигурацию:

    sudo nginx -t
    # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    # nginx: configuration file /etc/nginx/nginx.conf test is successful
  7. Перезапустить Nginx:

    sudo systemctl restart nginx

Инициализация приложения

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

  1. Выполнить команду инициализации:

    cd /opt/idp
    ./fam_linux_amd64 -init
  2. Выполнить создание УЗ администратора (с указанием логина пользователя и пароля):

    ./fam_linux_amd64 -createuser login:password
  3. Назначить созданному пользователю системную роль admin:

    ./fam_linux_amd64 -assignrole admin -user login

Регистрация системы в systemd и выполнение запуска

  1. Создайте конфигурационный файл сервиса на основе примера:

    sudo vi /etc/systemd/system/idp.service

    Пример:

    [Unit]
    Description=IDP
    
    [Service]
    WorkingDirectory=/opt/idp
    ExecStart=/opt/idp/fam_linux_amd64
    Restart=always
    RestartSec=10
    SyslogIdentifier=idp
    User=idp
    Environment="SSO_CFG=/opt/idp/config.toml"
    
    [Install]
    WantedBy=multi-user.target
  2. После создания добавьте сервис в автозапуск запустите его:

    sudo systemctl daemon-reload
    sudo systemctl enable idp
    sudo systemctl start idp

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

Открыть в браузере http://idp.avanpost.local/admin.

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

Обсуждение