Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration Reference

Rockfish Probe uses YAML configuration files. Command-line arguments override config file settings.

# Run with configuration file
rockfish_probe -c /path/to/config.yaml

# Override settings via CLI
rockfish_probe -c config.yaml --source eth1

Configuration Sections


License

license:
  path: /opt/rockfish/etc/license.json
OptionTypeDefaultDescription
pathstring-Path to license file (JSON with Ed25519 signature)

Environment Variable: ROCKFISH_LICENSE_PATH


Input

input:
  source: eth0
  live_type: afpacket
  filter: "tcp or udp"
  snaplen: 65535
  promisc_off: false
OptionTypeDefaultDescription
sourcestring(required)Interface name or PCAP file path/glob
live_typestringpcapCapture method: pcap, afpacket, netmap, fmadio
filterstring-BPF filter expression
snaplenint65535Maximum bytes per packet
promisc_offboolfalseDisable promiscuous mode

BPF Filter Examples

# TCP and UDP only
filter: "tcp or udp"

# HTTP and HTTPS
filter: "port 80 or port 443"

# Specific subnet
filter: "net 192.168.1.0/24"

# Exclude SSH
filter: "not port 22"

Flow

flow:
  idle_timeout: 300
  active_timeout: 1800
  max_flows: 0
  max_payload: 500
  udp_uniflow_port: 0
  mac: true
OptionTypeDefaultDescription
idle_timeoutint300Seconds of inactivity before flow expires
active_timeoutint1800Maximum flow duration before export
max_flowsint0Maximum concurrent flows (0 = unlimited)
max_payloadint500Max payload bytes for protocol detection
udp_uniflow_portint0UDP uniflow mode (0=off, 1=all)
macbooltrueInclude MAC addresses

Note: TLS/TCP fingerprints (ndpi_ja4, ndpi_ja3s, ndpi_tcp_fp) are automatically extracted when nDPI is enabled and included in Professional+ tier output.


nDPI

ndpi:
  enabled: true
  protocol_file: /opt/rockfish/etc/ndpi-protos.txt
  categories_file: /opt/rockfish/etc/ndpi-categories.txt
OptionTypeDefaultDescription
enabledboolfalseEnable nDPI application labeling
protocol_filestring-Custom protocol definitions
categories_filestring-Custom category definitions

Note: nDPI is included in all Rockfish packages (Basic tier and above).


Fragment

fragment:
  disabled: false
  max_tables: 1024
  timeout: 30
OptionTypeDefaultDescription
disabledboolfalseDisable IP fragment reassembly
max_tablesint1024Max concurrent fragment tables
timeoutint30Fragment timeout in seconds

Output

output:
  parquet_dir: /var/run/rockfish/flows
  parquet_batch_size: 1000000
  parquet_file_prefix: rockfish-flow
  parquet_schema: simple
  observation: sensor-01
  hive_boundary_flush: false
  stats: true
  verbose: 1
  log_file: /var/log/rockfish/rockfish.log
OptionTypeDefaultDescription
parquet_dirstring(required)Output directory for Parquet files
parquet_batch_sizeint1000000Max flows per file before rotation
parquet_file_prefixstringrockfish-flowFilename prefix
parquet_schemastringsimpleSchema: simple (50 fields) or extended (62 fields)
observationstringgnatObservation domain name
hive_boundary_flushboolfalseFlush at day boundaries for Hive partitioning
verboseint10=warnings, 1=info, 2=debug, 3=trace
log_filestring-Log file path (enables daily rotation)

AFPacket

Linux high-performance capture:

afpacket:
  block_size: 2097152
  block_count: 64
  fanout_group: 0
  fanout_mode: hash
OptionTypeDefaultDescription
block_sizeint2097152Ring buffer block size (bytes)
block_countint64Number of ring buffer blocks
fanout_groupint0Fanout group ID (0 = disabled)
fanout_modestringhashDistribution: hash, lb, cpu, rollover, random

Memory: block_size × block_count (default: 128 MB)


Netmap

FreeBSD high-performance capture:

netmap:
  rx_slots: 1024
  tx_slots: 1024
  poll_timeout: 1000
  host_rings: false

S3

s3:
  bucket: my-flow-bucket
  prefix: flows
  region: us-east-1
  endpoint: https://nyc3.digitaloceanspaces.com
  force_path_style: false
  hive_partitioning: true
  delete_after_upload: true
  aggregate: true
  aggregate_hold_minutes: 5
OptionTypeDefaultDescription
bucketstring(required)S3 bucket name
prefixstring-S3 key prefix
regionstring(required)AWS region
endpointstring-Custom endpoint (MinIO, DO Spaces, etc.)
force_path_styleboolfalseUse path-style URLs (required for MinIO)
hive_partitioningboolfalseOrganize by year=/month=/day=/
delete_after_uploadboolfalseDelete local files after upload
aggregateboolfalseMerge files per minute before upload
aggregate_hold_minutesint1Hold time before aggregating

GeoIP

geoip:
  country_db: /opt/rockfish/etc/GeoLite2-Country.mmdb
  city_db: /opt/rockfish/etc/GeoLite2-City.mmdb
  asn_db: /opt/rockfish/etc/GeoLite2-ASN.mmdb

Note: Requires --features geoip and MaxMind databases.


Threat Intel

threat_intel:
  enabled: true
  endpoint_url: "http://localhost:8080"
  api_token: "your-api-token"
  batch_size: 100
  timeout_seconds: 10
OptionTypeDefaultDescription
enabledboolfalseEnable threat intel lookups
endpoint_urlstring(required)API endpoint URL
api_tokenstring(required)Bearer token for authentication
batch_sizeint100IPs per API request
timeout_secondsint10Request timeout

Output goes to <parquet_dir>/intel/.


Complete Example

license:
  path: /opt/rockfish/etc/license.json

input:
  source: eth0
  live_type: afpacket
  filter: "tcp or udp"

flow:
  idle_timeout: 300
  active_timeout: 1800
  max_flows: 1000000
  max_payload: 500

ndpi:
  enabled: true  # Fingerprints (ndpi_ja4, ndpi_ja3s) extracted automatically

output:
  parquet_dir: /var/run/rockfish/flows
  observation: sensor-01
  hive_boundary_flush: true

afpacket:
  block_size: 2097152
  block_count: 64

s3:
  bucket: flow-data
  prefix: sensors/sensor-01
  region: us-east-1
  hive_partitioning: true
  delete_after_upload: true

geoip:
  city_db: /opt/rockfish/etc/GeoLite2-City.mmdb
  asn_db: /opt/rockfish/etc/GeoLite2-ASN.mmdb