Настройка сбора данных провайдера 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
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
}