packmate/docs/SETUP.md

6.5 KiB
Raw Blame History

Настройка

Packmate использует настройки из файла .env в той же папке, что и docker-compose.yml. Создайте его из полного шаблона и измените значения под сервер:

cp .env.example .env
${EDITOR:-nano} .env

Основные настройки

# Локальный IP сервера, на который приходит игровой трафик
PACKMATE_LOCAL_IP=10.20.1.1
# Имя пользователя для web-авторизации
PACKMATE_WEB_LOGIN=SomeUser
# Пароль для web-авторизации
PACKMATE_WEB_PASSWORD=SomeSecurePassword

Режим работы

Packmate поддерживает три основных режима работы: LIVE, FILE и VIEW.

  1. LIVE - это основной режим работы во время CTF. Packmate обрабатывает живой трафик и сразу выводит результаты.
  2. FILE - обрабатывает трафик из pcap файлов. Полезен для анализа трафика с прошедших CTF, где не был запущен Packmate, или тех, где невозможно запустить его на вулнбоксе.
  3. VIEW - Packmate не обрабатывает трафик, а только показывает уже обработанные стримы. Полезен для разборов после завершения CTF.
Настройка LIVE

Необходимо указать интерфейс, через который проходит игровой трафик. На этом же интерфейсе должен располагаться ip, указанный в параметре PACKMATE_LOCAL_IP

# Режим работы - перехват
PACKMATE_MODE=LIVE
# Интерфейс, на котором производится перехват трафика
PACKMATE_INTERFACE=game

Для интенсивного трафика можно включить параллельную обработку захваченных пакетов. Оба направления одного TCP/UDP потока всегда обрабатываются одним worker, поэтому порядок пакетов внутри потока сохраняется. Начните с 1 worker как режима совместимости и увеличивайте значение только после сетевого stress test на целевом сервере:

PACKMATE_CAPTURE_WORKERS=1
PACKMATE_CAPTURE_QUEUE_CAPACITY=250000
PACKMATE_CAPTURE_BUFFER_SIZE_BYTES=67108864
PACKMATE_CAPTURE_SHUTDOWN_TIMEOUT_SECONDS=30
# Должно быть больше shutdown timeout приложения.
PACKMATE_CONTAINER_STOP_GRACE_PERIOD=45s

Очередь ограничена: при её переполнении Packmate продолжает работать и увеличивает счётчик applicationDroppedPackets в GET /api/pcap/metrics. Для production этот счётчик, а также droppedPackets и interfaceDroppedPackets, должны оставаться равны нулю. maximumQueuedPackets показывает максимальное число packet tasks, ожидавших обработки после запуска capture.

Настройка FILE

Необходимо указать название pcap файла, лежащего в папке pcaps. После запуска в веб-интерфейсе появится кнопка, активирующая чтение файла. Важно, чтобы к этому моменту уже были созданы сервисы и паттерны (см. раздел Использование).

# Режим работы - анализ файла
PACKMATE_MODE=FILE
# Название файла в папке pcaps
PACKMATE_PCAP_FILE=dump.pcap
Настройка VIEW

В этом режиме Packmate просто показывает уже имеющиеся данные.

# Режим работы - просмотр
PACKMATE_MODE=VIEW

Очистка БД

На крупных CTF через какое-то время накапливается большое количество трафика. Это замедляет работу Packmate и занимает много места на диске.

Для оптимизации работы, рекомендуется включить регулярную очистку БД от старых стримов. Это будет работать только в режиме LIVE.

PACKMATE_OLD_STREAMS_CLEANUP_ENABLED=true
# Пауза между запусками cleaner (в секундах).
PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL_SECONDS=10
# Максимальное время активной очистки за один запуск (в секундах).
PACKMATE_OLD_STREAMS_CLEANUP_MAX_RUN_SECONDS=5
# Насколько старым стрим должен быть для удаления (в минутах от текущего времени)
PACKMATE_OLD_STREAMS_CLEANUP_THRESHOLD=15

Старую переменную PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL замените на PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL_SECONDS; новая настройка задаётся в секундах.

Дополнительные настройки

# Пароль от БД. Из-за того, что БД принимает подключения только с localhost, менять его необязательно, но можно, для дополнительной безопасности.
PACKMATE_DB_PASSWORD=K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb
# Версия Packmate. Можно изменить, если нужно использовать другой образ из docker registry.
BUILD_TAG=latest

Чтобы использовать расшифровку TLS (с RSA), нужно положить соответствующий приватный ключ, который использовался для генерации сертификата, в папку rsa_keys.

Файлы БД сохраняются в ./data, поэтому для обнуления базы нужно удалить эту папку.