Установка веб-интерфейса SP Spider
Инструкции по установке для Российских ОС
Компоненты
Основные
- sp-spider - веб-интерфейс для ПО DosGate
- sp-spider-broker - брокер синхронизации для ПО DosGate
Вспомогательные
- PostgreSQL, СУБД
- NodeJS, среда выполнения JavaScript
- RabbitMQ, брокер сообщений
Подготовка аппаратной платформы веб-интерфейса
- Поддерживаемая версия DosGate: 3.2.2-5 и выше (для версий до 3.9.8)
- Поддерживаемая версия DosGate: 3.4.2-1 и выше (для версий с 3.9.9)
Установка обновлений ОС
sudo apt-get update
sudo apt-get upgrade
Установка NodeJS
sudo apt install nodejs=18.18.2-1nodesource1
Установка PostgreSQL
sudo apt install -y libpq-dev postgresql
Настройка PostgreSQL
sudo nano /etc/postgresql/14/main/pg_hba.conf
#Убедитесь, что присутствует запись
host all all 127.0.0.1/32 scram-sha-256
Проверить можно командой:
cat /etc/postgresql/14/main/pg_hba.conf | grep "host all all 127.0.0.1/32 scram-sha-256"
Создайте таблицу и пользователя:
sudo -u postgres psql
CREATE DATABASE dosgate;
CREATE USER dosgate WITH ENCRYPTED PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE dosgate TO dosgate;
\q
Установка rabbitmq (rmq)
Создайте скрипт установки
sudo nano quickrabbitmq.sh
Внесите содержимое скрипта:
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://ppa1.novemberain.com/gpg.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://ppa1.novemberain.com/gpg.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
## Provides RabbitMQ
##
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
Выполните скрипт и установите rmq
sudo bash quickrabbitmq.sh
Настройка rabbitmq
Создайте пользователя rmq
sudo rabbitmqctl add_user "username" "password"
Выдайте пользователю доступ configure, write, и read для всех entity
sudo rabbitmqctl set_permissions -p "/" "username" ".*" ".*" ".*"
Подготовка системы dosgate
Увеличение "TimeoutStartSec" (необязательно)
Если ваша конфигурация состоит более чем из 25 профилей, в зависимости от операционной системы, рекомендуется обновить настройки сервиса dosgate
Добавьте в systemd сервиса опцию TimeoutStartSec=600
(600 секунд)
sudo nano /lib/systemd/system/dosgate.service
[Unit]
Description=Dosgate anti-ddos controller
After=network.target
ConditionPathExists=/etc/dosgate.conf
[Service]
Type=notify
ExecStart=dosgate -f -l crit
RuntimeDirectory=dosgate
StateDirectory=dosgate
TimeoutStartSec=600
[Install]
WantedBy=multi-user.target
Настройка dosgate.conf
Убедитесь, что внутри /etc/dosgate.conf есть настроенный FAPI.socket. Именно с ним взаимодействует веб-интерфейс:
- url: /run/dosgate/fapi.socket
user: www-data
group: www-data
mode: 0660
acl: any
type: FCGI
timeout:
send: 120
idle: 120
Добавьте сервис проверки прав fapi-socket
chmod 660 /run/dosgate/fapi.socket
sudo service dosgate restart
sudo nano /etc/systemd/system/fix_fapi.service
[Unit]
Description=Run fix fapi-socket at startup after all systemd services
After=default.target
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=chmod 660 /run/dosgate/fapi.socket
TimeoutStartSec=0
[Install]
WantedBy=default.target
systemctl enable --now /etc/systemd/system/fix_fapi.service
Создание SSH-пользователя
Для синхронизации и дополнительных проверок, веб-интерфейс соединяется по SSH с каждой системой-dosgate
Убедитесь что на каждой системе-dosgate есть настроенный SSH-пользователь с доступом к sudo.
На данный момент, авторизация возможна только через логин и пароль, убедитесь что подключение по SSH по паролю к этому пользователю разрешено
sudo adduser dosgate-web
sudo usermod -aG sudo dosgate-web
Настройка nginx
Если Graphite работает в рамках той-же аппаратной платформы, проверяем что он не занимает порт 80 или 443, и не будет конфликтовать с интерфейсом:
sudo nano /etc/nginx/sites-available/graphite
Должно быть:
listen 8080 default_server;
listen [::]:8080 default_server;
Если установлен 80 или 443 порт, требуется изменить на 8080, также требуется поменять параметры Data Source в Grafana (если используется)
Обновите систему, установите NGINX
sudo apt update
sudo apt upgrade
sudo apt install nginx=1.26.2-1~jammy-servicepipe-20241111.162950.UTC
Удалите стандартную конфигурацию NGINX
sudo rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
Настройте конфигурацию fapi в NGINX
sudo nano /etc/nginx/sites-available/fapi.conf
Поместите внутрь fapi.conf следующую информацию (не забудьте заменить REPLACE_ON_DOMAIN_OR_IP):
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name REPLACE_ON_DOMAIN_OR_IP;
root /var/www/html;
index index.php;
location /fapi {
include fastcgi_params;
fastcgi_pass unix:/run/dosgate/fapi.socket;
}
location /broker {
rewrite ^/broker(.*)$ $1 break;
proxy_pass http://localhost:3335;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
Создайте link
sudo ln -s /etc/nginx/sites-available/fapi.conf /etc/nginx/sites-enabled
Перезапустите Nginx
sudo systemctl restart nginx
Настройка сети
Убедитесь, что веб-интерфейс имеет связанность до каждой системы-dosgate
Установка веб-интерфейса и брокера синхронизации
sudo apt install sp-spider sp-spider-broker
Конфигурация
В зависимости от условий установки требуется сменить авторизационные данные и порты для базы данных и др. информацию в .env-файле. Сначала настраивается веб-интерфейс, после него - брокер.
# Отредактируйте /opt/sp-spider/.env
# Порт на котором будет работать приложение
VITE_APP_PORT=3333
NODE_ENV=production
HTTP_TIMEOUT=10000
# Если это основной интерфейс (даже при отсутствии резервирования)
IS_PRIMARY=true
# Секретный ключ, соль для паролей. Нежелательно менять после первого запуска
APP_SECRET=salt_salt_salt
# Данные от пользователя и БД postgresql
DB_HOST="localhost"
DB_PORT="5432"
DB_USER="dosgate"
DB_DATABASE="dosgate"
DB_PASSWORD="password"
# Активация rabbitmq для синхронизации и брокера
RMQ_ENABLE="true"
RMQ_URL="amqp://USER:PASSWORD@localhost:5672"
RMQ_RECONNECT_INTERVAL="5000"
Использование AMQPs
В случае, если требуется поддержка TLS в рамках протокола AMQP, замените RMQ_URL="amqp://USER:PASSWORD@localhost:5672"
на RMQ_URL="amqps://USER:PASSWORD@localhost:5672"
# Отредактируйте /opt/sp-spider-broker/.env
# Порт, на котором запустится сервис
APP_PORT=3335
# Ключ из .env интерфейса
APP_SECRET="YOUR_APP_SECRET"
# Данные от базы данных из .env интерфейса
DB_HOST="localhost"
DB_PORT="5432"
DB_USER="YOUR_DB_USER"
DB_DATABASE="YOUR_DB_NAME"
DB_PASSWORD="YOUR_DB_PASSWORD"
# Данные RabbitMQ из .env интерфейса
RMQ_URL="amqp://USER:PASSWORD@localhost:5672"
RMQ_RECONNECT_INTERVAL="5000"
# Путь к папке с политиками DosGate UH. Обязательно в конце ставить "/"
POLICY_PATH="/var/lib/dosgate-uh/profiles/"
# Путь к конфигурации обработчика оффендеров DosGate UH
OFFENDERS_CONF_PATH="/opt/sp-spider-broker/offenders/offenders.conf"
# Путь к объектам защиты Flowcollector. Обязательно в конце ставить "/"
FC_MO_PATH="/opt/spfc/etc/mo/"
# Путь к симлинкам на объекты защиты Flowcollector. Обязательно в конце ставить "/"
FC_MO_SYMLINK_PATH="/opt/spfc/etc/mo.enabled/"
# Путь к объектам обучения Treshold Learner. Обязательно в конце ставить "/"
FC_LEARNER_PATH="/opt/spfc/etc/learner/"
# Путь к симлинкам на объекты обучения Treshold Learner. Обязательно в конце ставить "/"
FC_LEARNER_SYMLINK_PATH="/opt/spfc/etc/learner.enabled/"
# Путь к конфигу dosgate-uh
DGUH_CONF="/etc/dosgate-uh.conf"
# Путь к снэпшотам дампов dosgate-uh
DGUH_SNAPSHOTS="/var/cache/dosgate-uh-snapshots"
Создание сервиса
Для веб-интерфейса:
# Отредактируйте /usr/lib/systemd/system/sp-spider.service
[Unit]
Description=SP Spider
[Service]
ExecStart=/usr/bin/node /opt/sp-spider/server/main.js
WorkingDirectory=/opt/sp-spider
Restart=always
[Install]
WantedBy=multi-user.target
Для брокера:
# Отредактируйте /usr/lib/systemd/system/sp-spider-broker.service
[Unit]
Description=SP Spider Broker
[Service]
ExecStart=/opt/sp-spider-broker/sp-spider-broker
WorkingDirectory=/opt/sp-spider-broker
Restart=always
[Install]
WantedBy=multi-user.target
Запуск и проверка работы сервисов
sudo systemctl enable --now sp-spider sp-spider-broker
Проверяем статус всех компонентов:
sudo systemctl status sp-spider
sudo systemctl status sp-spider-broker
sudo systemctl status rabbitmq-server
sudo systemctl status postgresql
sudo systemctl status nginx
Активация веб-интерфейса
-
Перейдите в веб-интерфейс по ссылке
ip:port
. Порт указывается при настройкеVITE_APP_PORT
в файле/opt/sp-spider/.env
-
Стандартные логин и пароль требуется заменить после инсталляции. Логин:
superadmin
Пароль:superadmin
-
После авторизации вы зафиксируете окно ошибки. Выберите:
- Нажмите кнопку "Настройки" на появившемся окне
- "Ноды"
- "Добавить ноду"
- Введите SSH-данные от установленной ноды Досгейта
-
В управлении системой также нужно указать ссылку на Graphite (для получения графиков статистики) и название арены (названия арен должны быть одинаковые во всех dosgate.conf по всему кластеру)
- Перейдите в "Настройки"
- Укажите ссылку на Graphite
- Укажите название arena
-
Перейдите в настройки, нажав на свой профиль в правом верхнем углу экрана
- Измените пароль с superadmin на требуемый
-
Веб-интерфейс готов к работе. Убедитесь что графики активны, профили и правила создаются, синхронизация работает