Установка и обновление модуля сканеров¶
В этой статье:
Установка сканера из архива¶
Подготовьте систему к установке сканеров:
Установите nginx или используйте существующий;
Установите postgres или используйте существующий;
Установите и настройте как основной zulu jdk 8;
Установите и настройте как основной python 3.11;
Настройте БД для подключения;
Создайте БД для сканеров;
Установите зависимости:
sudo apt update && sudo apt install bash, unixodbc, krb5-user, libpq-dev, tzdata, dialog, libgtk3- perl, libxcrypt-source
Разархивируйте «scanners_2_11.tar.gz» и переместите каталоги из 2.11/opt в каталог установки (где 2.11 - текущая релизная версия):
tar -xzvf scanners_2_11.tar.gz mv ./2.11/opt/python_server <путь установки> mv ./2.11/opt/python_scanner <путь установки> mv ./2.11/opt/rest_server <путь установки> mv ./2.11/opt/rem_scanners <путь установки>
Переместите файл config01.conf из каталога ./2.10/etc/nginx/conf.d/ в каталог конфигурации nginx.
Измените в файле ./2.10/script.sh строки на данные подключения:
psql "host=<IP_адресс_БД> port=<Порт_БД> dbname=<Имя_БД> user=<Администратор_БД> password=<Пароль_БД>" CREATE SCHEMA <Схема_БД> AUTHORIZATION db_admin; truncate table <Схема_БД>.rem_attributes; truncate table <Схема_БД>.rem_links; truncate table <Схема_БД>.rem_objects; ALTER TABLE <Схема_БД>.rem_attributes ADD CONSTRAINT rem_attributes_unic_f_r_o_a UNIQUE (field_id, resourcename, objectidentity, attributename); ALTER TABLE <Схема_БД>.rem_links ADD CONSTRAINT rem_links_unic_f_r_fr_to_a UNIQUE (field_id, resourcename, fromobjectidentity, toobjectidentity, association); ALTER TABLE <Схема_БД>.rem_objects ADD CONSTRAINT rem_objects_unic_f_r_o_oc UNIQUE (field_id, resourcename, objectidentity, objectclass);
Проверьте, что скрипт script.sh исполняемый, если нет, то добавьте признак:
sudo chmod +x ./2.10/script.sh
Выполните скрипт:
sudo ./script.sh
Добавьте настройки в конце конфигурации postgresql.conf:
online_analyze.threshold = 50 online_analyze.scale_factor = 0.1 online_analyze.enable = off online_analyze.verbose = off online_analyze.local_tracking = on online_analyze.min_interval = 10000 online_analyze.table_type = 'temporary' plantuner.fix_empty_table = on listen_addresses = '*' max_connections = 4000 shared_buffers = 4GB max_locks_per_transaction = 1024 max_wal_size = 2GB checkpoint_timeout = 30min
Для настройки сканеров потребуются следующие данные:
Полный путь установки сканеров;
IP адрес ВМ на которой установлены сканеры;
Доменное имя ВМ;
Имя пользователя, под которым будут запускаться и работать сканеры;
Порт python_server — любой свободный порт. Стандартный порт 8083;
Порт rest_server — любой свободный порт. Стандартный порт 8082;
Порт nginx — любой назначенный порт для nginx. Стандартный порт 8443;
IP адрес сервера БД. Если БД установлена на том же сервере, что и сканеры, то можно использовать 127.0.0.1;
Порт БД. Стандартный порт 5432;
Имя БД;
Имя схемы БД;
Имя пользователя БД;
Пароль пользователя БД;
Проверьте, что скрипт исполняемый, если нет, то добавьте признак:
sudo chmod +x ./2.10/postinst
Выполните скрипт:
./2.10/postinst
Расширьте права на сертификаты ssl. Перед запуском python_rest_server и remote_rest_server необходимо расширить права доступа, а также изменить владельца файлов сертификатов на пользователя, от которого будет выполняться запуск модулей сканирования:
sudo chmod 755 -R <путь установки>/certs sudo chown -R <имя пользователя>:<группа пользователя> <путь установки>/certs
Проверьте работу сервисов:
sudo systemctl status nginx sudo nginx -t sudo systemctl status python_rest_server.service sudo systemctl status remote_rest_server.service
Перезагрузите сервисы, в случае изменении конфигурации подключений:
sudo systemctl restart nginx python_rest_server.service remote_rest_server.service
После того как сканеры и nginx запущены проверьте работу через swagger или POST/GET запросы:
https://<доменное_имя_ВМ_с_доменном>:<Порт_тестируемого_сканера>/swagger/index.html
После установки и успешного запуска сервисов удалите postinst и script.sh:
rm ./2.10/postinst rm ./2.10/script.sh
После установки будут изменены и добавлены:
#/etc/nginx/nginx.conf - добавлены три строки 60,61,62:
client_max_body_size 2Gb
;upstream rem {server HOST_IP:REM_PORT;}
;upstream python {server HOST_IP:PYTHON_PORT;}
.
Если nginx был изначально установлен и конфигурация была изменена до запуска скрипта, то рекомендуется проверить, что строки находятся в блоке http {}.
#/etc/nginx/conf.d/config01.conf - изменены настройки.
#/etc/ssl/certs/<имя_домена>/ - выпущены ssl сертификаты для https.
#<каталог_установки_сканеров>/certs/ - продублированы ssl сертификаты для сервисов.
#<каталог_установки_сканеров>/python_server/bin/conf.env
Подключение и настройка python сервера.
Пароль в строке подключения должен быть зашифрован, если вместо пароля стоит переменная, то необходимо зашифровать пароль вручную и заменить переменную на зашифрованный пароль:
<каталог_установки_сканеров>/python_server/bin/pswd_encrypt <пароль_БД>
.
#<каталог_установки_сканеров>/python_server/bin/python_rest_server.service - настройка запуска python сервиса.
#<каталог_установки_сканеров>/python_scanner/sys.conf - настройка python сканера.
#<каталог_установки_сканеров>/rest_server/bin/conf.env:
Подключение и настройка remote сервера.
Пароль в строке подключения должен быть зашифрован, если вместо пароля стоит переменная, то необходимо зашифровать пароль вручную и заменить переменную на зашифрованный пароль:
<каталог_установки_сканеров>/rest_server/bin/pswd_encrypt <пароль_БД>
.
#<каталог_установки_сканеров>/rest_server/bin/remote_rest_server.service - настройка remote сервиса.
#/lib/systemd/system/python_rest_server.service - создан сервис python.
#/lib/systemd/system/remote_rest_server.service - создан сервис remote.
Частые ошибки¶
Ubuntu:
После запуска сканеров из DG в логах появляются различные ошибки:
«...Error on /rem/jdbc/validate
error on password generation exit status 2...»
Сопутствующая ошибка при запуске на сервере сканеров:
sudo ./opt/rem_scanners/bin/scanner.sh
./scanner.sh: 82: [[: not found
./scanner.sh: 117: [[: not found
./scanner.sh: 133: Syntax error: redirection unxpected
Причина:
В Ubuntu симлинк sh указывает на dash вместо bash для оптимизации производительности и потребления ресурсов системы.
Решение:
Измените в скрипте
#/bin/sh
на#/bin/bash
.Или измените симлинк sh → dash на sh → bash:
sudo ln -sf /bin/bash /bin/sh
Посмотрите текущую оболочку и проверьте установленные оболочки:
echo $SHELL cat /etc/shells
Проверьте симлинк:
ls -lah /bin/sh
Обновление модуля сканеров¶
Перед началом обновления остановите сервис сканеров:
sudo systemctl stop remote_rest_server.service sudo systemctl stop python_rest_server.service
Обновите python на сервере до версии 3.11:
sudo apt install python3.11
Разархивируйте архив (где 2.11 - текущая релизная версия):
tar -xzvf scanners_2_11_update.tar
В архиве «scanners_2_11_update.tar.gz содержатся файлы, которые необходимо скопировать в ваш каталог установки с заменой прежних файлов:
/<каталог установки>/rest_server/bin/specialSymbol.json
/<каталог установки>/python_server/bin/specialSymbol.json
/<каталог установки>/python_server/bin/dis.so
/<каталог установки>/rest_server/bin/dis.so
/<каталог установки>/python_scanner/run_scanner
/<каталог установки>/python_scanner/ver.lib
Проверьте, что владелец скопированных файлов остался владельцем, под которым работают сканеры.
Запустите сервис сканеров и перезапустите nginx:
sudo systemctl start remote_rest_server.service sudo systemctl start python_rest_server.service sudo systemctl restart nginx