Перейти к основному содержимому
Версия: 5.3

Настройка сбора данных провайдера CTT Threat Feed

Установка скрипта сбора данных

На ВМ, где установлен Logstash выполните создание директории хранения скриптов и связанной с ним информации:

mkdir /app/TI/RST/rst_script/
mkdir /app/TI/RST/RST_report/

Скопируйте файл скрипта threatfeed.py в директорию /app/TI/RST/rst_script/. Создайте файл .env со следующим содержимым:

API_KEY = Ключ API
API_URL = Эндпоинт сбора данных
Информация

Ключ API можно получить в личном кабинете. Ключ становится доступным после приобретения лицензии.


Настройка Crontab

С помощью настроек crontab добавить команду запуска скрипта сбора данных. Для запуска скрипта используется интерпретатор python, входящий в состав инсталлятора Smart Monitor. По умолчанию находится в директории /app/logstash/utils/python/bin/python3. В аргументах запуска скрипта используются флаги:

  • -r (--resource) – название ресурса Threat Feed API, который нужно выгрузить (ip, domain, url, hash или all). По умолчанию загружается все доступные ресурсы
  • -f (--format) – формат выходных файлов: csv или json. По умолчанию используется JSON
  • -d (--date) – дата выгрузки в формате YYYYmmdd (например, 20240812) либо ключевое слово latest, которое заставляет скрипт получить самые свежие данные. По умолчанию берется latest
  • -o (--output) – путь к каталогу, куда будут сохранены файлы с данными. Если не указано, используется текущий каталог
  • -c (--config) – путь до файла .env, содержащего переменные окружения (API_URL и API_KEY) для подключения к Threat Feed API
  • --no-interaction – отключить интерактивный режим; скрипт будет работать без запросов подтверждения от пользователя (не выводит в консоль)
  • --no-ssl – отключить проверку SSL‑сертификата при подключении к Threat Feed API

Перед запуском скрипта необходимо установить все зависимости для работы скрипта из файла requirements.txt.

Пример команды
/app/logstash/utils/python/bin/pip3 install -r /app/TI/RST/rst_script/requirements.txt
Пример команды запуска скрипта через crontab
0 1 * * * /app/logstash/utils/python/bin/python3 /app/TI/RST/rst_script/threatfeed.py -c /app/TI/RST/rst_script/.env -o /app/TI/RST/RST_report/ --no-interaction

Настройка Logstash

Для корректной подготовки Logstash к сбору информации необходимо создать конфигурации в папке /app/logstash/config/conf.d/. В папке logstash находятся необходимые файлы для создания готовой конфигурации.

В папке input находится файл для описания метода сбора данных. Используется плагин file для чтения данных из файла. Убедитесь, что Logstash имеет достаточно прав для чтения файлов из указанной папки.

В папке filter находится обработчик полученных событий.

В папке output описан процесс отправки обработанных данных в Smart Monitor. Необходимо по ключу hosts заменить адрес на адреса hot data и warm data узлов указав их через запятую.

Пример
hosts => ["https://<HOT_NODE_IP>:9200", "https://<WARM_NODE_IP>:9200"]

Все 3 файла необходимо объединить в один в следующей последовательности: input, filter, output.

После создания конфига необходимо указать pipeline для его запуска. Для этого в директории /app/logstash/config/pipelines.yml в самый конец файла добавьте строки из файла logstash/pipelines/pipelines.yml.

- pipeline.id: rst
path.config: "/app/logstash/config/conf.d/rst.conf"

Настройка Logrotate

Logrotate автоматизирует процесс управления лог-файлами. Создайте файл ti_rotate.conf в директории /etc/logrotate.d со следующим содержмым:

/app/TI/RST/RST_report/*.json {
daily
rotate 1
missingok
nocompress
nocreate
nomail
noolddir
dateext
dateformat _%Y.%m.%d
extension .json
sharedscripts
postrotate
# Postrotate для поиска и удаления файлов
find /app/TI/RST/RST_report/ -name 'domain_*.json' -type f | sort -r | awk 'NR>2 {print}' | xargs rm -f
find /app/TI/RST/RST_report/ -name 'ip_*.json' -type f | sort -r | awk 'NR>2 {print}' | xargs rm -f
find /app/TI/RST/RST_report/ -name 'url_*.json' -type f | sort -r | awk 'NR>2 {print}' | xargs rm -f
find /app/TI/RST/RST_report/ -name 'hash_*.json' -type f | sort -r | awk 'NR>2 {print}' | xargs rm -f
endscript
}