Установка и настройка Svacer на Rocky Linux

Используемые термины: Svacer , Rocky , Linux .

Мы рассмотрим процесс установки, настройки и использования веб-портала Svacer на Rocky Linux. Мы будем использовать следующие программные продукты:

  • Система Rocky Linux 9.
  • СУБД PostgreSQL 15.
  • HTTP-прокси NGINX.

В итоге, мы получим:

  1. Рабочий веб-портал Svacer для просмотра и обработки результатов статического анализа.
  2. Проксирование запросов через nginx с использованием https.

Приступим.

Предварительная настройка

Прежде чем перейти к настройке, подготовим нашу систему.

Время

1. Устанавливаем часовой пояс:

timedatectl set-timezone Europe/Moscow

* данной командой мы установим часовой пояс по московскому времени.

Посмотреть все доступные часовые пояса можно командой:

timedatectl list-timezones

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

dnf install chrony

systemctl enable chronyd —now

Настройка безопасности

Для корректной работы портала по сети, нам необходимо уделить внимание некоторым аспектам безопасности.

1. Настройка SELinux:

Вводим команду:

setsebool -P httpd_can_network_connect on

* данное правило разрешает httpd-сервису и веб-скриптам подключение по сети.

Или мы можем отключить SELinux , но желательно, ограничиться вышеописанной политикой.

2. Открываем необходимые порты в брандмауэре :

firewall-cmd —permanent —add-service={http,https}

firewall-cmd —reload

* где http и https — сервисы для веб-сервера (порты 80 и 443).

Читайте подробнее про настройку firewalld .

Установка и настройка PostgreSQL

В качестве СУБД мы должны использовать PostgreSQL. В нашем примере это будет версия 15. В Rocky Linux нужная версия сервера баз данных может быть установлена с использованием модулей репозитория postgresql. Разрешаем его использование:

dnf module disable postgresql

dnf module enable postgresql:15

* первой командой мы отключили любой используемый модуль postgresql , если он был включен. Вторая команда разрешает использование репозитория для PostgreSQL версии 15.

Выполняем установку postgresql:

dnf install postgresql-server postgresql-contrib

Инициализируем базу:

postgresql-setup initdb

Разрешаем и стартуем сервис, проверяем, что он запущен:

systemctl enable postgresql —now

systemctl status postgresql

Открываем командную строку postgresql:

sudo -upostgres psql

Создаем базу данных и пользователя:

> create database svace;

> create user svace with encrypted password ‘svace’;

* мы создали базу svace , а также одноименного пользователя с таким же паролем.

Предоставляем пользователю svace все права на базу svace :

> grant all privileges on database svace to svace;

Также сделаем его суперпользователем (необходимо для создания расширений в PostgreSQL):

> alter user svace superuser;

С настройкой базы закончили. Выходим из SQL оболочки:

> quit

Открываем конфигурационный файл:

vi /var/lib/pgsql/data/pg_hba.conf

После IPv4 local connections добавляем строку (отмечено желтым):

# IPv4 local connections:
host svace svace 127.0.0.1/32 md5
host all all 127.0.0.1/32 ident

* важно, чтобы данная строка была выше строки host all all … Она разрешает подключения к базе данных svace пользователю svace с проверкой пароля, хэш которого md5 .

Перезапускаем сервис postgresql:

systemctl restart postgresql

С базой мы закончили.

Установка и запуск Svacer

Устанавливаем curl. Он понадобится для загрузки файла с настройкой репозитория:

dnf install curl

Скачиваем файл репозитория и переносим его в каталог /etc/yum.repos.d :

curl -sLO https://repo.ispras.ru/rpm/ispras.repo

mv ispras.repo /etc/yum.repos.d/

Устанавливаем svacer:

dnf install svacer

* на все запросы подтверждения отвечаем Y .

Проверяем, чтобы в файле конфигурации svacer были выставлены правильные значения для подключения к СУБД:

vi /etc/default/svacer

SVACER_ARGS=»—pg postgres:// svace : svace @127.0.0.1:5432/ svace —store /var/lib/svacer/object_store»

* отмечено желтым, слева направо — имя пользователя и пароль для подключения к СУБД, имя базы данных.

При необходимости, эти значения необходимо поменять.

Теперь можно запустить svacer:

systemctl enable svacer —now

Не забываем проверить, запустилась ли служба:

systemctl status svacer

На порту 8080 запустится веб-приложение. Мы можем отправить запрос для проверки:

curl http://127.0.0.1:8080

В ответ должно вернуться что-то на подобие:

<!doctype html><html lang=»en»><head><meta charset=»utf-8″/><link rel=»icon» href=»/favicon.png»/><meta name=»viewport» content=»width=device-width,initial-scale=1″/><meta name=»theme-color» content=»#000000″/><meta name=»description» content=»Svace History Server Web UI»/><link rel=»manifest» href=»/manifest.json»/><script type=»text/javascript» src=»/api/auth_init.js»></script><title>Connecting to Svace Server</title><script defer=»defer» src=»/static/js/main.d895a63b.js»></script><link href=»/static/css/main.87a4d6b9.css» rel=»stylesheet»></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id=»root»></div></body></html>

Svacer запущен и работает.

Проксирование через NGINX

Следующим шагом настроить веб-прокси, чтобы обеспечить доступ по стандартным веб-портам.

Устанавливаем веб-сервер:

dnf install nginx

Сразу запустим его службу и разрешим автозапуск:

systemctl enable nginx —now

Создаем конфигурационный файл:

vi /etc/nginx/conf.d/svacer.conf

server {
listen 80 default_server;

server_name svacer.remontka.com;

client_max_body_size 0;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection «upgrade»;

proxy_pass http://127.0.0.1:8080;
}
}

* где server_name может быть любым (так как у нас данные виртуальный домен является default_server ), но лучше указать адрес, по которому пользователи будут заходить на портал.

Проверяем корректность конфигурационного файла и перечитываем конфигурацию nginx:

nginx -t && nginx -s reload

Открываем браузер и переходим по адресу http://<адрес сервера svacer> — должна открыться страница аутентификации Svacer. Вводим логин admin и пароль admin , чтобы войти в систему.

Настройка SSL

Теперь добьемся, чтобы наш портал работал по https. Для начала, нам нужно получить сертификат. Есть несколько способов это сделать:

  • Сгенерировать самоподписанный сертификат (рекомендуется только для тестирования).
  • Купить.
  • Запросить у внутреннего центра сертификации ( например, у AD CS ).
  • Получить бесплатно через Let’s Encrypt .

Как писалось выше, для тестирования нам подойдет сгенерированный самоподписанный сертификат. Сформируем для начала последовательность центра сертификации:

openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/ca.key -x509 -days 3650 -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=ca» -out /etc/ssl/ca.crt

Создадим каталог для хранения сертификатов nginx:

mkdir /etc/nginx/ssl

Сгенерируем файл запроса сертификата и закрытый ключ:

openssl req -newkey rsa:2048 -keyout /etc/nginx/ssl/svacer.key -out /etc/nginx/ssl/svacer.csr -nodes -days 731 -subj «/CN=svacer»

Выдадим клиентский сертификат, заверив его ключом центра сертификации:

openssl x509 -req -in /etc/nginx/ssl/svacer.csr -out /etc/nginx/ssl/svacer.crt -CA /etc/ssl/ca.crt -CAkey /etc/ssl/ca.key -CAcreateserial -days 731

* будет сформирован ключ svacer.crt . Мы используем ключи центра сертификации ca.crt и ca.key , которые сформировали ранее, а открытый ключ указали в nginx для аутентификации клиентов.

Открываем конфигурационный файл nginx:

vi /etc/nginx/conf.d/svacer.conf

Вносим изменения в настроки:

server {
listen 443 ssl default_server;

server_name svacer.remontka.com;

ssl_certificate /etc/nginx/ssl/svacer.crt;
ssl_certificate_key /etc/nginx/ssl/svacer.key;

* мы изменили порт 80 на 443 ssl, а также прописали открытый и закрытый ключи сгенерированных сертификатов. В боевой среде данные пути должны быть до ключей сертификата, купленного или полученного у доверенного центра сертификации.

Также добавим блок:

server {
listen 80;
server_name svacer.remontka.com;
return 301 https://$host$request_uri;
}

* данная настройка позволит перебросить все запросы с порта 80 на защищенный 443.

Проверяем конфигурацию и перечитываем ее:

nginx -t && nginx -s reload

Открываем браузер и переходим по адресу https://<адрес сервера svacer> — мы увидим предупреждение безопасности, если используем самоподписанный сертификат. Игнорируем и загружаем страницу.

Читайте также

1. Правильная настройка SSL в NGINX .

2. Установка и запуск PostgreSQL на CentOS или Rocky .

3. Получение бесплатного SSL сертификата Let’s Encrypt .

EnglishRussianUkrainian