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

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

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

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

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

    Примечание

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

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

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

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

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

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

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

    sudo useradd -m idp
    sudo passwd idp "пароль"
    sudo usermod -aG wheel idp

    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.json.sample config.json
  8. Установить переменную окружения SSO_CFG с указанием пути /opt/idp/config.json :

    export SSO_CFG=/opt/idp/config.json

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

Создать пользователя СУБД 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.

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

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

Для генерации ключа шифрования 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-адрес сервера с Системой.

  4. Скопировать содержимое конфигурационного файла в 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;
        }
    
     }
  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.

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