6. Агент и Сервер¶
Агент¶
Агент выступает в роли исполнителя заданий, приходящих с сервера, а также в роли посредника, пересылающего данные следующему агенту, который может являться исполнителем. Он сканирует сеть, взаимодействуя с инструментами “Сетезор”, умеет подключаться не только через сервер, но и через другого агента. От сервера агент получает информацию по защищенному протоколу HTTP.
Пока агенту не придет запрос о передаче данных, он не знает, что есть кто-то после него. Он знает только о вышестоящем, но после передачи информации он забывает о том, что кто-то есть после него. Однако, с NAT-агентами ситуация обстоит иная - на сервере создается задача. Там она “висит”, пока NAT-агент не возьмёт ее в работу. Получается для работы “натового” агента не нужно передавать информацию, нужно ее просто создать. Агент с разной переодичностью сам проверяет есть для него задачи или нет.
Вся логика выполнения активного сканирования выполняется на агенте. По окончанию задания, агент обратно по цепочке отправляет результат родительскому агенту, тот в свою очередь своему родительскому агенту и т.д.
Таким образом результат доходит до сервера и записывается в базу данных. После этого можно считать, что задание было завершено.
У Агента есть ограничение по одновременно запущенным задачам одного типа. Для активного сканирования значение составляет 1. Другими словами, может выполняться параллельно сканирование NMAP и MASSCAN, но 2 сканирования NMAP параллельно работать не могут, а только по очереди.
Сервер¶
Сервер выступает в роли командного центра и формируется автоматически при установке “Сетезор”, на нём происходит взаимодействие пользователя с проектом.
Задания, выполняемые в Сетезорделятся на 2 вида:
Локальные. Локальные задачи запускаются прямо на сервере (парсинг логов, взаимодействие с SearchVulns, CPEGuess)
Удалённые. В качестве исполнителя данного вида заданий выступает подключаемый агент (NMAP, MASSCAN, SCAPY, domain brute, TLS/SSL CERT, WHOIS).
Принадлежность агента¶
Приложение находится в веб-браузере по адресу https://localhost:16661, онлайн-версия располагается по адресу https://online.setezor.net.
При подключении агента к проекту на агенте создается файл конфигурации, содержащий ключ шифрования агента и URL-родительского агента. При подключении агента к проекту на агенте создается файл конфигурации, содержащий ключ шифрования агента и URL-родительского агента. Подключенный агент может быть привязан ко всем проектам.
Для того чтобы отвязать всех агентов от проекта, необходимо удалить файл config.json.
Агенты делятся на 3 вида:
Искусственный - создается по умолчанию.
Реальный - создавать при помощи хостинга и подключить к онлайн Сетезор.
Натовый - создать с помощью конфига и подключить к онлайн Сетезор.
Чтобы развернуть реального агента в онлайн-версии, необходимо приобрести виртуальный сервер (VDS) в аренду и развернуть в докере. Агент будет доступен для запуска во всех проектах, а не в одном (подробнее о разворачивании агента на вдс в нашей статье на Хабре).
С NAT-агентами пока что ситуация обстоит иначе. Нужно получить файлик “agent.bin” (уточнять в https://t.me/netmap_chat), в свойствах файла установить запуск “как приложение” и запустить в командной строке ./agent.bin. Затем создать агента, поставить галочку NAT-агент, настроить интерфейс и скопировать конфиг по кнопке “Agent config”. Затем ввести команду ./agent.bin -p 16662 -nat <скопированный_конфиг>. Агента подключить к проекту и можно использовать.
Установка Docker-образа¶
Сервер¶
Загрузить образ сервера с репозитория: https://hub.docker.com/r/lmsecure/setezor
docker pull lmsecure/setezor:latest
Создать рабочую папку. Она будет нужна для хранения логов и пользовательских данных:
mkdir ~/setezor && cd $_
Создать файл “.env” и прописать в него переменные:
SECRET_KEY=abcdef
SERVER_REST_URL=https://<ip/doamin>:<port>
Запустить Сервер:
docker run -p 16661:16661 --env-file .env --network=host -v ~/setezor:/root/.local/share/setezor -d lmsecure/setezor:latest
Агент¶
Загрузить образ агента с репозитория https://hub.docker.com/r/lmsecure/setezor.agent/tags.
docker pull lmsecure/setezor.agent:latest
Запустить агента:
docker run --network=host --cap-add=NET_ADMIN -d lmsecure/setezor.agent:latest
Терминал не закрывать, иначе необходимо заново запустить “Сетезор”.
Приложение разворачивается в веб-браузере по адресу https://localhost:16661 (см. Установка и запуск).
Привязать агента к проекту¶
На странице “Админские настройки” нажать “Подключить агента” напротив “Все агенты”, выбрать созданного ранее агента и нажать “Сохранить изменения”.
|
|---|
Добавленный агент отразится в таблице с агентами.
Далее ему нужно выбрать родителя нажав на “Родительские агенты”, т.е. того, от кого он будет получать задания, это может быть сервер или другой агент. Нажать “Сохранить изменения”.
После сохранения изменений в таблице нажать “Подключить”. Появится уведомление об успешном подключении агента.
Виды агентов¶
Искусственный агент¶
Создается по умолчанию и отображается на странице “Настройки”. Осуществляет только парсинг логов.
|
|---|
У искусственного агента - искусственный интерфейс. У него отсутствуют кнопки в таблице.
Если запустить инструмент с искусственного агента появится сообщение ошибки о том, что агент не настоящий.
|
|---|
Реальный агент¶
Создать интерфейс для реального агента нажав на кнопку “Родительские агенты” на странице “Проекты” в разделе “Админские настройки”. Отобразится окно, в котором необходимо выбрать интерфейс.
Если был подключен реально запущенный агент, то после нажатия на кнопку “Подключить” отобразится уведомление об успешном подключении.
|
|---|
При повторном нажатии на “Подключить агентов” будет предупреждение, что агент уже подключен.
|
|---|
После создания и настройки агентов, на странице “Инструменты”, будут доступны агенты для выполнения заданий по сканированию.
|
|---|
NAT-агент¶
С NAT-агентами пока что нужно получить файлик “agent.bin” (уточнять в https://t.me/netmap_chat), в своийствах файла установить запуск “как приложение” и запустить в командной строке ./agent.bin. Затем создать агента, поставить галочку NAT-агент, настроить интерфейс и скопировать конфиг по кнопке “Agent config”. Затем ввести команду ./agent.bin -p 16662 -nat <скопированный_конфиг>. Агента подключить к проекту и можно использовать.
Агент на карте сети¶
Карта сети строится относительно агента и наглядно показывает к чему он имеет доступ. Агент отображается на странице “Карта сети” на карте сети. Все агенты имеют связь с сервером, у каждого агента есть интерфейс из которого идут узлы
|
|---|
На карте узлы разного цвета. Цвета узлов, до которых имеют доступ несколько агентов - смешиваются.






