packmate/docs/SETUP.md

118 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Настройка
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.
<details>
<summary>Настройка LIVE</summary>
Необходимо указать интерфейс, через который проходит игровой трафик.
На этом же интерфейсе должен располагаться 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.
</details>
<details>
<summary>Настройка FILE</summary>
Необходимо указать название pcap файла, лежащего в папке pcaps.
После запуска в веб-интерфейсе появится кнопка, активирующая чтение файла.
Важно, чтобы к этому моменту уже были созданы сервисы и паттерны (см. раздел Использование).
```dotenv
# Режим работы - анализ файла
PACKMATE_MODE=FILE
# Название файла в папке pcaps
PACKMATE_PCAP_FILE=dump.pcap
```
</details>
<details>
<summary>Настройка VIEW</summary>
В этом режиме Packmate просто показывает уже имеющиеся данные.
```dotenv
# Режим работы - просмотр
PACKMATE_MODE=VIEW
```
</details>
### Очистка БД
На крупных 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, поэтому для обнуления базы нужно удалить эту папку.