## Setup Packmate reads its settings from `.env` in the same directory as `docker-compose.yml`. Create it from the complete template and adjust the values for the server: ```bash cp .env.example .env ${EDITOR:-nano} .env ``` ### Primary settings ```dotenv # Local IP of a server on which the traffic in directed. Used to tell incoming packets from outgoing. PACKMATE_LOCAL_IP=10.20.1.1 # Username for the web interface PACKMATE_WEB_LOGIN=SomeUser # Password for the web interface PACKMATE_WEB_PASSWORD=SomeSecurePassword ``` ### Modes of operation Packmate supports 3 modes of operation: `LIVE`, `FILE` и `VIEW`. 1. `LIVE` - the usual mode during a CTF. Packmate processes live traffic and instantly displays the results. 2. `FILE` - processes traffic from pcap files. Useful to analyze traffic from past CTFs where Packmate wasn't launched, or CTFs where it's impossible to use it on the vulnbox. 3. `VIEW` - Packmate does not process any traffic, but simply shows already processed streams. Useful for post-game analyses.
LIVE setup Set the interface through which the game traffic passes. IP address from `PACKMATE_LOCAL_IP` should be bound to the same interface. ```dotenv # Mode: capturing PACKMATE_MODE=LIVE # Interface to capture on PACKMATE_INTERFACE=game ``` High traffic installations can process captured packets in parallel. Both directions of one TCP/UDP flow always use the same worker, which preserves packet ordering inside the flow. Start with `1` worker as the compatibility setting and increase it only after running the network stress test on the target host: ```dotenv PACKMATE_CAPTURE_WORKERS=1 PACKMATE_CAPTURE_QUEUE_CAPACITY=250000 PACKMATE_CAPTURE_BUFFER_SIZE_BYTES=67108864 PACKMATE_CAPTURE_SHUTDOWN_TIMEOUT_SECONDS=30 # Must be longer than the application shutdown timeout. PACKMATE_CONTAINER_STOP_GRACE_PERIOD=45s ``` The queue is bounded. If it fills, Packmate remains alive and increments `applicationDroppedPackets` in `GET /api/pcap/metrics`. In production this counter, `droppedPackets`, and `interfaceDroppedPackets` should remain zero. `maximumQueuedPackets` is the maximum number of packet tasks that waited for processing since capture started.
FILE setup Set the name of the pcap file in the `pcaps` directory. After the startup, in the web interface, you will see the button that activates the file processing. It's important that by this moment all services and patterns are already created (see Usage). ```dotenv # Mode: pcap file anysis PACKMATE_MODE=FILE # Path to pcap file in the pcaps directory PACKMATE_PCAP_FILE=dump.pcap ```
VIEW setup In that mode, Packmate simply shows already existing data. ```dotenv # Mode: viewing the data PACKMATE_MODE=VIEW ```
### Database cleanup On large CTFsб after some time a lot of traffic will pile up. This can slow Packmate down and take a lot of drive space. To optimize the workflow, it is recommended to enable periodical database cleanup of old streams. It will only work in the `LIVE` mode. ```dotenv PACKMATE_OLD_STREAMS_CLEANUP_ENABLED=true # Delay between cleanup runs (in seconds). PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL_SECONDS=10 # Maximum active cleanup time in one run (in seconds). PACKMATE_OLD_STREAMS_CLEANUP_MAX_RUN_SECONDS=5 # How old the stream must be to be removed (in minutes before current time) PACKMATE_OLD_STREAMS_CLEANUP_THRESHOLD=15 ``` Replace the old `PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL` variable with `PACKMATE_OLD_STREAMS_CLEANUP_INTERVAL_SECONDS`; the new value is measured in seconds. ### Additional settings ```dotenv # Database password. Considering it only listens on localhost, it's not mandatory to change it, but you can do it for additional security. PACKMATE_DB_PASSWORD=K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb # Packmate version. Change it if you want to use a different version from the docker registry. BUILD_TAG=latest ``` To use the TLS decryption, you have to put the matching private key in the `rsa_keys` directory. Database files are being saved in `./data`, so to reset the database, you need to delete this directory.