## Настройка Packmate использует настройки из файла `.env` в той же папке, что и `docker-compose.yml`. Создайте его из полного шаблона и измените значения под сервер: ```bash cp .env.example .env ${EDITOR:-nano} .env ``` ### Основные настройки ```dotenv # Локальный 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` ```dotenv # Режим работы - перехват PACKMATE_MODE=LIVE # Интерфейс, на котором производится перехват трафика PACKMATE_INTERFACE=game ``` Для интенсивного трафика можно включить параллельную обработку захваченных пакетов. Оба направления одного TCP/UDP потока всегда обрабатываются одним worker, поэтому порядок пакетов внутри потока сохраняется. Начните с `1` worker как режима совместимости и увеличивайте значение только после сетевого stress test на целевом сервере: ```dotenv 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. После запуска в веб-интерфейсе появится кнопка, активирующая чтение файла. Важно, чтобы к этому моменту уже были созданы сервисы и паттерны (см. раздел Использование). ```dotenv # Режим работы - анализ файла PACKMATE_MODE=FILE # Название файла в папке pcaps PACKMATE_PCAP_FILE=dump.pcap ```
Настройка VIEW В этом режиме Packmate просто показывает уже имеющиеся данные. ```dotenv # Режим работы - просмотр PACKMATE_MODE=VIEW ```
### Очистка БД На крупных CTF через какое-то время накапливается большое количество трафика. Это замедляет работу Packmate и занимает много места на диске. Для оптимизации работы, рекомендуется включить регулярную очистку БД от старых стримов. Это будет работать только в режиме `LIVE`. ```dotenv 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`; новая настройка задаётся в секундах. ### Дополнительные настройки ```dotenv # Пароль от БД. Из-за того, что БД принимает подключения только с localhost, менять его необязательно, но можно, для дополнительной безопасности. PACKMATE_DB_PASSWORD=K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb # Версия Packmate. Можно изменить, если нужно использовать другой образ из docker registry. BUILD_TAG=latest ``` Чтобы использовать расшифровку TLS (с RSA), нужно положить соответствующий приватный ключ, который использовался для генерации сертификата, в папку `rsa_keys`. Файлы БД сохраняются в ./data, поэтому для обнуления базы нужно удалить эту папку.