Установка и настройка PIX Master


Установка и настройка PIX Master на сервере Windows

Настройки сервера, необходимые перед установкой PIX Master
Установка IIS
Для начала, на только что созданном севере, необходимо включить доступность IIS для настройки. если IIS уже доступен, то этот раздел можно пропустить.
(1) В диспетчере серверов нажать на кнопку "Добавить роли и компоненты":
(2) Пройти дальше по настройкам
(3) Включить настройки IIS
Для работы с AD необходимо также включить "Службы IIS"- "Службы интернета" - "Безопасность" - "Проверка подлинности Windows".
(4) Завершить установку компонентов.
Установка .Net Core
Для работы PIX Master необходим .Net Core Hosting Bundle.
Скачать дистрибутив можно по ссылке:
- для версии ниже 1.19.4: .NET Core 3.0
- для версии 1.19.4 и выше: .NET 6

Установка MSSQL Server
(1) Скачать установщик MSSQL Server: Материалы для скачивания по SQL Server | Microsoft
(2) Пошагово установить нужную версию приложения.
При установке обязательно указать установку SQL Server Management Studio.
Установка PIX Master с помощью пакета установщика
Ссылка для скачивания мастера предоставляется по запросу.
Запускаем пакет установщика PIX Master. Появляется окно:
Нажать кнопку [Далее], в появившемся окне выбрать папку для установки программы:
Нажать кнопку [Далее], в окне "Параметры IIS" указать данные для развертывания приложения в IIS
- название приложения, название пула приложения и порт приложения.
Нажмите кнопку "Далее", затем кнопку "Установить". В результате приложение должно быть установлено в указанной папке, и в IIS должен быть развернут сайт с указанными параметрами в окне "Параметры IIS".
Настройка развернутого проекта
Для работы приложения необходимо настроить путь до его базы данных в конфигурации, а также настроить удостоверение пула для доступа к базе данных.
Настройка конфигурации приложения
Зайти в папку, куда было установлено приложение.
Найти и открыть файл "appsettings.json". Он должен иметь примерно следующее содержание:
{
"Provider": "MSSQL",
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=master_test;Trusted_Connection=True;MultipleActiveResultSets=true;Persist Security Info=False;",
"PostgreSqlConnection": "User ID=postgres;Password=1222212123;Host=localhost;Port=5432;Database=master_test;Pooling=true;"
},
"Logging": {
"LogLevel": {
"Default": "Warning",
"Hangfire": "Information"
}
},
"AllowedHosts": "*",
"PasswordValidationOptions": {
"RequiredLength": "8",
"RequireNonAlphanumeric": "true",
"RequireLowercase": "true",
"RequireUppercase": "true",
"RequireDigit": "true"
}
}

Для параметра "Provider" необходимо указать СУБД, которая будет использоваться.
Допустимые значения - MSSQL и PostgreSQL;

Для раздела ConnectionString нужно прописать один из параметров строки подключения к базе данных - DefaultConnection, если в параметре "Provider" выбрано значение MSSQL, или PostgreSqlConnection, если в параметре "Provider" указано значение PostgreSQL;

В разделе PasswordValidationOptions находятся настройки сложности пароля пользователя.
При отсутствии этого раздела в Мастере будут действовать настройки сложности пароля по умолчанию: минимальная длина пароля 8 символов, требуется наличие не буквенно-цифрового символа, буквы в нижнем и верхнем регистре, и цифры;
Параметр RequiredLength является числовым и отвечает за требование минимальной длины пароля.
Параметр RequireNonAlphanumeric является логическим (true/false) и отвечает за требование наличия не буквенно-цифрового символа в пароле;
Параметр RequireLowercase является логическим и отвечает за требование наличия буквы в нижнем регистре в пароле;
Параметр RequireUppercase является логическим и отвечает за требование наличия буквы в верхнем регистре в пароле;
Параметр RequireDigit является логическим и отвечает за требование наличия цифры в пароле.

После изменения параметров сложности пароля пользователя в конфигурации необходимо перезапустить пул приложения и изменения вступят в силу. По желанию, администратор может запросить смену пароля у всех пользователей в разделе настроек панели администратора, чтобы все пароли соответствовали новым требованиям.
Данные для входа в систему изначального пользователя-администратора:
Логин: admin
Пароль: Admin1Default@
Настройки пула приложения и подключения к базе данных
Настройка параметров пула приложения

По умолчанию для пула приложения установлен период времени, по истечению которого выполняется его перезапуск, что может привести к разрыву связи с подключенными агентами. Чтобы этого не происходило, нужно в меню дополнительных параметров пула приложения в пункте «Постоянный временный интервал (в минутах)» поставить значение «0».
Для корректного хранения криптографических ключей Мастера в пуле приложения для настройки «Загрузить профиль пользователя» должно стоять значение «True».
Настройка удостоверения пула приложения
Для корректной работы приложения с MS SQL Server необходимо, чтобы удостоверение его пула имело права для работы с базой данных.
Вариант 1 - особая учётная запись для удостоверения пула
Для того, чтобы изменить удостоверение пула приложения, зайти в раздел "Дополнительные параметры":
Выбрать пункт "Удостоверение":
При нажатии на кнопку для поля "Удостоверение" появится окно для настройки учетной записи - выбрать пункт "Особая учетная запись":
Затем нужно нажать "Установить" и заполнить данные для существующей учетной записи:
После настроек конфигурации и пула - перезапустить пул приложения:
Если у пользователя, настроенного для удостоверения приложения, есть доступ к СУБД, то при первом запуске приложения база данных будет создана автоматически.
Вариант 2 - предоставление доступа к базе данных для пула приложения
(удостоверение - ApplicationPoolIdentity)

(1) В MS SQL Server Managment Studio создать новую базу:
(2) В новой базе создать нового пользователя с именем
IIS APPPOOL\<Название пула, которое (будет) установлено в IIS>.
(3) Настроить для пользователя БД схему [dbo].
На закладке "Членство" дать пользователю права как на рисунке:
(4) Такого же пользователя (с таким же именем) необходимо создать для доступа к SQL Server
(5) В ролях установить чек-бокс только у роли public:
Настройка аутентификации по Active Directory
Для корректной работы аутентификации по Active Directory необходимо настроить проверку подлинности для сайта.
В разделе "Проверка подлинности" настроек сайта нужно включить проверку подлинности Windows как показано на рисунке:
Для связи пользователя Мастера с учётной записью Active Directory в меню редактирования пользователя необходимо активировать настройку «Использовать аутентификацию по Active Directory» и выбрать в меню учётную запись AD, которая будет привязана к пользователю Мастера.
Настройка аутентификации по OpenID
Для появления в Мастере настроек, связанных с интеграцией с провайдером OpenID, в файл конфигурации appsettings.json необходимо добавить раздел с настройками OAuth следующего вида:
"OAuth": {
"AuthorizationEndpoint": "https://domain.com/authorize",
"UserInfoEndpoint": "https://domain.com/userinfo",
"TokenEndpoint": "https://domain.com/oauth/token",
"ClientId": "someId",
"ClientSecret": "someClientSecret"
}


  • AuthorizationEndpoint – адрес авторизации в провайдере OpenID
  • UserInfoEndpoint – адрес API для получения информации о пользователе
  • TokenEndpoint – адрес API для получения токена
  • CliendId – идентификатор приложения в провайдере OpenID
  • ClientSecret – секрет приложения в провайдере OpenID
В самом провайдере OpenID может понадобится указать адрес обратного вызова (callback). Относительный путь этого адреса - "/openid/callback".
Если всё настроено правильно, в меню редактирования пользователя должна появиться настройка интеграции с OpenID:
Для того, чтобы пользователь имел возможность войти с помощью OpenID, необходимо активировать опцию «Использовать аутентификацию по OpenID» и указать идентификатор пользователя во внешней системе. После этого пользователь сможет зайти в систему по кнопке OpenID на странице логина:
Раздел настроек Мастера.
В меню администрирования находится раздел «Настройки», отвечающий за настройки приложения в целом.
Настройка «Использовать подтверждение почты пользователя» позволяет включить отправку писем с подтверждением регистрации, при этом пользователи с неподтверждённой почтой не смогут войти в систему. При включении этой настройки у всех пользователей, которые уже есть в системе, будет проставлен признак подтверждения регистрации, таким образом им не нужно будет подтверждать почту. Для работы отправки писем необходимо заполнить параметры в разделе «Настройка почтового сервера».

Кнопка [Сменить секретный ключ] позволяет сменить ключ криптографии, использующийся для шифрования данных типа Credential и паролей в других частях системы, хранящихся в базе данных.

Кнопка [Запросить смену пароля у всех пользователей] обязывает всех пользователей сменить пароль при входе в систему.
Настройка сертификата
Выпуск локального сертификата
Вариант 1 - выпуск сертификата через скрипт.
1) Запустите PowerShell
2) Выполните поочередно скрипт (примечание: необходимо, чтобы DNS совпадало с адресом, по которому публикуется сайт):

# setup certificate properties including the commonName (DNSName) property for Chrome 58+
$certificate = New-SelfSignedCertificate `
-Subject pixrpa `
-DnsName VPS-2002 `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-NotBefore (Get-Date) `
-NotAfter (Get-Date).AddYears(2) `
-CertStoreLocation "cert:CurrentUser\My" `
-FriendlyName "pixrpa" `
-HashAlgorithm SHA256 `
-KeyUsage DigitalSignature, KeyEncipherment, DataEncipherment `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1")
$certificatePath = 'Cert:\CurrentUser\My\' + ($certificate.ThumbPrint)
# create temporary certificate path
$tmpPath = "C:\tmp"
If(!(test-path $tmpPath))
{
New-Item -ItemType Directory -Force -Path $tmpPath
}
# set certificate password here
$pfxPassword = ConvertTo-SecureString -String "11111" -Force -AsPlainText
$pfxFilePath = "c:\tmp\pixpra.pfx"
$cerFilePath = "c:\tmp\pixpra.cer"
# create pfx certificate
Export-PfxCertificate -Cert $certificatePath -FilePath $pfxFilePath -Password $pfxPassword
Export-Certificate -Cert $certificatePath -FilePath $cerFilePath
# import the pfx certificate
Import-PfxCertificate -FilePath $pfxFilePath Cert:\LocalMachine\My -Password $pfxPassword -Exportable
# trust the certificate by importing the pfx certificate into your trusted root
Import-Certificate -FilePath $cerFilePath -CertStoreLocation Cert:\CurrentUser\Root
3) Теперь созданный сертификат можно подгрузить в IIS
4) Подгруженный сертификат, необходимо установить для доступа к сайту(вместо значения по умолчанию).
5) Переопубликуйте сайт и проверьте доступность через браузер.
Вариант 2 - выпуск сертификата через интерфейс IIS
(1) Откройте IIS и кликните на корневой узел серверов
(2) Двойной клик на компоненте "Сертификаты сервера" (Server Certificates)
Главное окно IIS
(3) Перейти в пункт "Выпустить самозаверенный сертификат" (Create Self-Signed Certificate)
Окно управления сертификатами сервера
(4) В открывшемся окне задать имя сертификата и выбрать хранилище размещения веб-служб
Окно настроек создаваемого сертификата
(5) После нажатия кнопки "Ок" видим, что сертификат появился в списке доступных сертификатов.
Список доступных сертификатов
(6) Сертификат необходимо установить для доступа к сайту (вместо значения по умолчанию)
7) Переопубликуйте сайт и проверьте доступность через браузер.
Настройка сертификата на стороне клиента (Агента)
Так как соединение производится через защищенный канал, прежде чем подключить Агента к Мастеру, необходимо добавить сертификат Мастера в доверенные на компьютере, где установлен Агент.
(1) Проверьте доступность сайта из браузера.
(2) Скачайте сертификат, который вызывает конфликт с Chrome.
(3) Установить сертификат в доверенные у текущего пользователя.
(4) Проверьте подключение к Мастеру из агента (Agent.exe).

Установка и настройка PIX Master на сервере Linux
*Мастер не работает на дистрибутивах Ubuntu 22 и Centos (версии мастера до 15 работают).

Настройки сервера, необходимые перед установкой PIX Master
Установка модулей .Net Core на Linux
Для установки необходимых модулей используется терминал (можно найти в поисковой строке по слову cmd).
Чтобы выполнить последующие команды, нужен доступ от пользователя root. Для этого в командной строке необходимо выполнить инструкцию "su root" и ввести пароль пользователя root, указанный при установке операционной системы.
Для установки модулей .Net Core в командной строке необходимо выполнить следующие операции:

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-sdk-6
В случае, если при установке пакетов возникает ошибка, нужно выполнить инструкции, представленные в подразделах дистрибутивов Linux на сайте.
Установка и конфигурация сервера Apache

sudo apt-get install apache2
Создаем сертификат:

cd /etc/apache2
mkdir ssl
cd ssl
sudo openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj "/C=RU/ST=Msk/L=Msk/O=YourCompany/OU=IT Department/CN=master.yourcompany.local/CN=master"
sudo a2enmod proxy_http proxy_html proxy_wstunnel ssl
sudo a2enmod rewrite
sudo systemctl restart apache2
После этого нужно создать конфигурационный файл для установки прокси на Apache. Для этого нужно выполнить команду:

sudo nano /etc/apache2/conf-enabled/netcore.conf
В появившийся файл нужно скопировать следующий текст:

<VirtualHost *:443>
ServerName www.CurrentDomain.com
DocumentRoot /var/netcore
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
#SSLCertificateChainFile ssl/cert.ca-bundle
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P]
ErrorLog /var/log/apache2/netcore-error.log
CustomLog /var/log/apache2/netcore-access.log common
</VirtualHost>
После этого нужно перезапустить сервер Apache, для чего в командной строке нужно прописать:

sudo apachectl configtest
Должны получить Syntax Ok. Перезапускаем сервис:

sudo service apache2 restart
Проверяем статус:

sudo service apache2 status
В случае успеха получаем статус Active: active (running).
Если Stopped, Failed - необходимо перепроверить конфигурацию.
Правильность установки apache можно проверить, перейдя на http://localhost. Должна появиться приветственная страница apache.
Установка Docker + Postgres под Linux
Установка Docker:

sudo apt update
sudo apt install docker.io
Далее можно работать с Docker в соответствии с руководством, запуская команды в режиме суперпользователя (sudo).

Запуск Docker:

sudo systemctl start docker
sudo systemctl enable docker
Загрузка контейнера Postgres:

sudo docker pull postgres
Для автоматического запуска контейнера Postgres используйте следующую команду:

sudo docker run -d --restart unless-stopped --name pix-postgres -e POSTGRES_PASSWORD=123456789 -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres
Настройка развернутого приложения
Для работы приложения необходимо настроить путь до его базы данных в конфигурации, а также указать папку для хранения криптографических ключей.

Настройка конфигурации приложения
Зайдите в папку, куда было установлено приложение, и откройте файл appsettings.json.
Он должен иметь примерно следующее содержание:

{
"Provider": "PostgreSQL",
"CryptographyKeysFolder": "Keys",
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=master_test;Trusted_Connection=True;MultipleActiveResultSets=true;Persist Security Info=False;",
"PostgreSqlConnection": "User ID=postgres;Password=123456789;Host=localhost;Port=5432;Database=master_test;Pooling=true;"
},
"Logging": {
"LogLevel": {
"Default": "Warning",
"Hangfire": "Information"
}
},
"AllowedHosts": "*",
"PasswordValidationOptions": {
"RequiredLength": "8",
"RequireNonAlphanumeric": "true",
"RequireLowercase": "true",
"RequireUppercase": "true",
"RequireDigit": "true"
},
"UseSwagger": "false"
}
В ключе Provider указывается СУБД (система управления базами данных), которая будет использоваться: MSSQL или PostgreSQL.

В разделе ConnectionStrings для ключа PostgreSqlConnection нужно прописать строку подключения к базе данных.

ОБЯЗАТЕЛЬНО! В ключе CryptographyKeysFolder нужно прописать путь до папки, где будут храниться ключи криптографии. Также в некоторых дистрибутивах нужно дать доступ на запись. Самый простой способ:

sudo chmod 777 ./{Название папки с ключами}
#При указании названия папки "{}" не ставятся.
Этот пункт специфичен только для Linux.
Конфигурация и запуск сервиса
Перенести папку с опубликованным проектом можно с помощью команды:

sudo cp -a <folder> <target folder>
<folder> - путь до переносимой папки, <target folder> - путь, где будет развернуто приложение.
В примере ниже будет использоваться путь /var/netcore/ в качестве рабочей папки приложения.

Пример:

sudo cp -a /home/user/pix-master/ /var/netcore
Файл сервиса можно создать с помощью следующей команды:

sudo nano /etc/systemd/system/Master.service
# Master.service – название сервиса для проекта.
В этот файл нужно скопировать следующие данные:

[Unit]
Description=ASP .NET Web Application
[Service]
#Указываем путь к директории с установленным Мастером
WorkingDirectory=/var/netcore
ExecStart=/usr/bin/dotnet /var/netcore/Master.dll
Restart=always
RestartSec=10
SyslogIdentifier=netcore-demo
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
После этого нужно будет запустить сервис с помощью следующих команд:

sudo systemctl enable Master.service
sudo systemctl start Master.service

Теперь можно получить доступ к приложению через порт 5000.
Проверяем статус:

sudo service apache2 status
В случае успеха получаем статус Active: active (running).
Для получения данных о работе сервиса можно выполнить следующую команду:

sudo journalctl -fu Master.service
Дефолтные данные для входа в систему:
Логин: admin
Пароль: Admin1Default@