Установка и обновление модуля сканеров

В этой статье:

Установка сканера из архива

  1. Подготовьте систему к установке сканеров:

    • Установите 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
      
  2. Разархивируйте «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 <путь установки>
    
  3. Переместите файл config01.conf из каталога ./2.10/etc/nginx/conf.d/ в каталог конфигурации nginx.

  4. Измените в файле ./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);
    
  5. Проверьте, что скрипт script.sh исполняемый, если нет, то добавьте признак:

    sudo chmod +x ./2.10/script.sh
    
  6. Выполните скрипт:

    sudo ./script.sh
    
  7. Добавьте настройки в конце конфигурации 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
    
  8. Для настройки сканеров потребуются следующие данные:

    • Полный путь установки сканеров;

    • IP адрес ВМ на которой установлены сканеры;

    • Доменное имя ВМ;

    • Имя пользователя, под которым будут запускаться и работать сканеры;

    • Порт python_server — любой свободный порт. Стандартный порт 8083;

    • Порт rest_server — любой свободный порт. Стандартный порт 8082;

    • Порт nginx — любой назначенный порт для nginx. Стандартный порт 8443;

    • IP адрес сервера БД. Если БД установлена на том же сервере, что и сканеры, то можно использовать 127.0.0.1;

    • Порт БД. Стандартный порт 5432;

    • Имя БД;

    • Имя схемы БД;

    • Имя пользователя БД;

    • Пароль пользователя БД;

  9. Проверьте, что скрипт исполняемый, если нет, то добавьте признак:

    sudo chmod +x ./2.10/postinst
    
  10. Выполните скрипт:

    ./2.10/postinst
    
  11. Расширьте права на сертификаты ssl. Перед запуском python_rest_server и remote_rest_server необходимо расширить права доступа, а также изменить владельца файлов сертификатов на пользователя, от которого будет выполняться запуск модулей сканирования:

    sudo chmod 755 -R <путь установки>/certs
    sudo chown -R <имя пользователя>:<группа пользователя> <путь установки>/certs
    
  12. Проверьте работу сервисов:

    sudo systemctl status nginx sudo nginx -t
    sudo systemctl status python_rest_server.service sudo systemctl status remote_rest_server.service
    
  13. Перезагрузите сервисы, в случае изменении конфигурации подключений:

    sudo systemctl restart nginx python_rest_server.service remote_rest_server.service
    
  14. После того как сканеры и nginx запущены проверьте работу через swagger или POST/GET запросы:

    https://<доменное_имя_ВМ_с_доменном>:<Порт_тестируемого_сканера>/swagger/index.html
    
  15. После установки и успешного запуска сервисов удалите 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 для оптимизации производительности и потребления ресурсов системы.

Решение:

  1. Измените в скрипте #/bin/sh на #/bin/bash.

  2. Или измените симлинк sh → dash на sh → bash:

    sudo ln -sf /bin/bash /bin/sh
    
  3. Посмотрите текущую оболочку и проверьте установленные оболочки:

    echo $SHELL
    cat /etc/shells
    
  4. Проверьте симлинк:

    ls -lah /bin/sh
    

Обновление модуля сканеров

  1. Перед началом обновления остановите сервис сканеров:

    sudo systemctl stop remote_rest_server.service
    sudo systemctl stop python_rest_server.service
    
  2. Обновите python на сервере до версии 3.11:

    sudo apt install python3.11
    
  3. Разархивируйте архив (где 2.11 - текущая релизная версия):

    tar -xzvf scanners_2_11_update.tar
    
  4. В архиве «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

  5. Проверьте, что владелец скопированных файлов остался владельцем, под которым работают сканеры.

  6. Запустите сервис сканеров и перезапустите nginx:

    sudo systemctl start remote_rest_server.service
    sudo systemctl start python_rest_server.service
    sudo systemctl restart nginx