Установка и настройк а сетевого сканера
Описание
Сканер - клиентское приложение, устанавливающееся на выделенный сервер и позволяющее производить сканирование разрешенных сетей.
Системные требования
- Операционная система: Сервер с ОС Linux
- Рекомендации: Выделенный сервер с полным доступом к аппаратным ресурсам
Важно:
- Сканер должен использовать систему управления службами systemd.
- Предполагается что сканер может полностью утилизировать ресурсы выделенного ему сервера
Поддерживаемые системы и дистрибутивы
- Debian GNU/Linux 11, 12
Регистрация сервис аккаунта
Авторизация сканера проходит через сервис аккаунт по OAuth2 протоколу. В панели администратора необходимо создать сервис аккаунт
(см. Как создать Сервис аккаунт) и выбрать группу скоупов uc, которая включает в себя uc:list и uc:get.
Данные скоупы дают доступ для просмотра и скачивания сканера и агентов.
Установка сетевого сканера
Установка и удаление сетевого сканера производится через ansible роль. Роль и инструкция по настройке находится в репозитории (см. ansible-net-scanner).
Ansible - система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций. Применяется для автоматизации настройки и развёр тывания программного обеспечения.
Документация ansible: https://docs.ansible.com/
Для установки сетевого сканера необходимо, чтобы на основной машине был доступ по SSH до всех целевых машин.
Проверьте, установлен ли модуль pip:
bash
Если модуль отсутствует, то его необходимо установить
Установить ansible:
bash
Проверить установленную версию можно выполнив команду:
bash
Создайте директорию, в которой будут находиться файлы для установки сетевого сканера:
bash
Создайте дочернюю директорию и скачайте ansible роль сетевого сканера
bash
Вернитесь в каталог exploitdog
bash
Создайте плейбук, например net-scanner.yaml, со следующим содержимым:
yaml
В поле exploitdog_net_scanner_url необходимо указать URL личного кабинета. Например, для облачного решения:
Пример:
yaml
Далее необходимо создать инвентарь и указать в нём параметры подключения для всех машин, на которые необходимо установить сетевой сканер, в примере файл будет называться hosts:
ini
Структура директории должна иметь следующий вид:
text
Теперь можно запустить установку:
bash
Удаление сетевого сканера
Для удаления сетевого сканера необходимо запустить плейбук с указанием переменной uninstall=true :
bash
Доступные параметры для конфигурирования
| Параметр | Тип | Обязательность | Описание | По умолчанию |
|---|---|---|---|---|
allowedIPs[] | CIDR[] | ✅ | Разрешенные IP-подсети для сканирования (например 192.168.1.0/24) | - |
interfaces[] | string[] | ✅ | Сетевые интерфей сы для сканирования | - |
dns[] | IP[] | ✅ | DNS-серверы для разрешения доменов | - |
concurrent | integer | ❌ | Максимальное количество одновременно обрабатываемых заданий (не опирается на количество CPU) | 10 |
serverURL | URL | ✅ | Базовый URL сервера (только HTTPS). Для облачного решени я: | - |
proxyURL | URL | ❌ | Прокси-сервер для подключения (см. Особенности настройки proxyURL) | - |
logLevel | string | ❌ | Уровень логирования (debug, info, warn, error) | info |
clientId | string | ✅ | Идентификатор клиента OAuth (см. Как создать Сервис аккаунт) | - |
clientSecret | string | ✅ | Секретный ключ клиента (см. Как создать Сервис аккаунт) | - |
ipAddress | IP | ❌ | Статический IP текущего узла | автоопределение |
hostId | string | ❌ | Уникальный идентификатор хоста | - |
fqdn | string | ❌ | Полное доменное имя актива | - |
rateLimit | integer | ❌ | Лимит запросов в секунду (RPS) | - |
secrets | map | ❌ | Секреты приложения (см. Конфигурационный файл JSON) | - |
Особенности настройки proxyURL
- Поддерживаемые схемы прокси
http://https://
- Учетные данные (логин/пароль) передаются через URL
http://username:password@proxy-host:porthttps://username:password@proxy-host:port
- Таймауты и производительность
- Общий таймаут клиента (5 секунд) включает установку соединения с прокси. Если прокси не отвечает вовремя, запрос прерывается.
- Прозрачность работы
- Прокси обязан поддерживать метод
CONNECTдля работы с HTTPS. - Все запросы от сканера будут проходить через прокси.
- Прокси обязан поддерживать метод
- Примеры рабочих конфигураций
- HTTP-прокси:
http://proxy.example.com:8080 - HTTPS-прокси с аутентификацией:
https://user:pass@secure-proxy.com:3128
- HTTP-прокси:
Для работы с https схемой proxy берутся системные сертификаты.
Методы конфигурации
1. Конфигурационный файл JSON
- Расположение:
/etc/exploitdog_net_scanner/config.json - Требования к правам:
0600
json
Важно:
- объект
secretsдоступен только через конфигурационный файл. Заполняется для модулей с агентом - ключи в объекте
secretsрегистрозависимые. Т.е. USER != user. Если в конфигурации сканирования указывается секрет${{secrets.AGENT_TOKEN}}то в конфигурационном файле должен быть прописан секрет"AGENT_TOKEN": "<token>"
2. Переменные окружения
- Префикс:
NS_ - Ограничение: Не поддерживает массивы/списки
bash
3. Параметры командной строки
- Формат: Поддерживает множественные значения через повторение параметра
bash
Приоритет конфигурации
Конфигурационные источники применяются в следующем порядке (чем выше в списке - выше приоритет):
- Параметры командной строки
- JSON-файл
- Переменные окружения
Особенности
-
После установки и первичной конфигурации (см. Установка сетевого сканера) сканер производит http запрос для OAuth авторизации и регистрации себя в системе . В ответ он получает дополнительную конфигурацию и JWT токен для авторизаци и. Такой запрос может выполняться раз в час (по истечению ttl jwt-токена) или при запуске сканера.
-
Сканер может выступать в роли прокси шлюза по адресу
0.0.0.0:8080. Прокси используется в сетях L3 для передачи данных от агента на целевом хосте в сервис, который может находиться вне контура, по адресуserverURLиз параметра конфигурирования. Подробнее про количество передаваемой информации можно почитать в документации к агенту (см. Требования к рабочему месту пользователя ) -
Сканер передает на сервер телеметрию о себе. Данную информацию можно будет посмотреть в карточке сканера.